Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Binary-inflated dynamical mass (B12)

San Diego State University

A star cluster’s dynamical mass is read off its velocity dispersion, Mσ2rh/GM \propto \sigma^2 r_h / G. But an unresolved binary contributes its orbital motion to the measured velocity, widening the dispersion and biasing the mass high. In low-dispersion systems — ultra-faint dwarfs, low-mass globular clusters — the binary motion is a large fraction of σ\sigma itself, so the bias is large and has driven real debates about mass-to-light ratios and dark-matter content.

This demo (a) quantifies the bias, (b) shows a dispersion-only analysis cannot remove it — the (σtrue,fb)(\sigma_{\rm true}, f_b) problem is rank-1 degenerate — and (c) demonstrates a differentiable joint recovery from the non-Gaussian wings of the velocity distribution that returns an unbiased dynamical mass, with a Fisher/CRLB forecast vs sample size NN and RV precision ϵ\epsilon.

It is the kinematic companion to B4: B4 recovers the binary fraction fbf_b photometrically (from the unresolved-binary mass function); B12 measures the dynamical mass kinematically in the presence of the same binaries. Both reuse the Moe & Di Stefano (2017) PPqqee statistics Moe & Di Stefano, 2017 and the Tout et al. (1996) ZAMS mass–luminosity relation Tout et al., 1996.

The forward model

Each star has a cluster centre-of-mass line-of-sight velocity vCOMN(0,σtrue2)v_{\rm COM}\sim\mathcal N(0,\sigma_{\rm true}^2). A fraction fbf_b are unresolved binaries: you measure one blended velocity, not two. The blend sits at vobs=vCOM+Δv_{\rm obs}=v_{\rm COM}+\Delta, where Δ\Delta is the internal orbital motion projected onto the line of sight and flux-weighted by the two components’ luminosities,

Δ=L1v1,los+L2v2,losL1+L2,Li=LZAMS(mi;Z),\Delta = \frac{L_1\,v_{1,\rm los} + L_2\,v_{2,\rm los}}{L_1 + L_2}, \qquad L_i = L_{\rm ZAMS}(m_i; Z),

with LZAMSL_{\rm ZAMS} the Tout (1996) ZAMS relation (in-package via progenax.stellar). Two limits make Δ\Delta intuitive:

The orbits (P,q,e)(P, q, e) are drawn from the Moe coupling; periods become semimajor axes via Kepler’s third law, and the orbit is sampled at a uniform mean anomaly (uniform in time, so eccentric orbits are correctly weighted toward slow apocenter passages). The distribution of Δ\Delta over a large binary pool is the contamination kernel KorbK_{\rm orb} — crucially independent of σtrue\sigma_{\rm true}, so the observed velocity density factorizes,

p(v)=(1fb)N(0,σtrue2+ϵ2)+fb[N(0,σtrue2+ϵ2)Korb](v),p(v) = (1-f_b)\,\mathcal N(0,\sigma_{\rm true}^2+\epsilon^2) + f_b\,\big[\mathcal N(0,\sigma_{\rm true}^2+\epsilon^2)\circledast K_{\rm orb}\big](v),

where ϵ\epsilon is the per-star RV precision (added in quadrature). Because KorbK_{\rm orb} does not depend on σtrue\sigma_{\rm true}, it is precomputed once. The expected binned counts μk(σtrue,fb)=N ⁣binkp\mu_k(\sigma_{\rm true},f_b)=N\!\int_{{\rm bin}\,k}p are differentiable in both parameters, and (σtrue,fb)(\sigma_{\rm true},f_b) are recovered by a per-bin Poisson MLE (scripts/_demo_inference.py), with the Fisher from the Poisson information.

Inputs and assumptions

The fit recovers only two parameters, (σtrue,fb)(\sigma_{\rm true}, f_b); every other quantity is an assumed-known input. Making that split explicit is essential — the demo’s optimism lives entirely in what it treats as known.

Table 1:Model inputs

Input

Meaning and role

Status (fiducial)

σtrue\sigma_{\rm true}

Intrinsic cluster LOS velocity dispersion; the science target — sets the dynamical mass Mσtrue2rh/GM\propto\sigma_{\rm true}^2\,r_h/G.

recovered (5 km/s)

fbf_b

Unresolved binary fraction (the contamination weight in (2)).

recovered (0.5)

ϵ\epsilon

Per-star RV measurement precision (spectrograph noise), added in quadrature to both mixture components. Distinct from σtrue\sigma_{\rm true} (gravity) and KorbK_{\rm orb} (orbits).

known / fixed (1 km/s) — see Important

ZZ

Metallicity for the Tout ZAMS L(m)L(m) used to flux-weight the blend Δ\Delta ((1)).

known / fixed (10-3)

NN

Number of RV stars; sets the Poisson normalization and the precision floor (σN1/2\sigma\propto N^{-1/2}, Figure 5).

known / fixed (1500)

rhr_h

Half-mass radius; enters only the σtrue2Mdyn\sigma_{\rm true}^2\to M_{\rm dyn} conversion, not the velocity-distribution fit.

known / fixed (30 pc)

IMF

Maschberger (α=2.3\alpha=2.3, 0.08100M100\,M_\odot): draws primary masses m1m_1, hence L1,L2L_1, L_2 and the shape of KorbK_{\rm orb}.

known / fixed

Moe PPqqee, qmin=0.1q_{\min}=0.1

The orbital statistics (q=m2/m1q=m_2/m_1, period, eccentricity coupling) that define KorbK_{\rm orb}.

known / fixed

V_EDGES

Likelihood bin edges (±60\pm60 km/s, 120 bins of 1 km/s); must span the wings (next section).

numerical choice

KorbK_{\rm orb} grid / pool

Template grid ±150\pm150 km/s and pool size npool=2×105n_{\rm pool}=2\times10^5 (sets template noise).

numerical choice

Result — freshly run, ALL GATES PASS

UFD-like regime: σtrue=5\sigma_{\rm true}=5 km/s, fb=0.5f_b=0.5, N=1500N=1500 RV stars, ϵ=1\epsilon=1 km/s, metal-poor Z=103Z=10^{-3}, rh=30r_h=30 pc (exit 0; wall 90\approx 90 s).

Gate

Expected

Measured

1 — bias exists

Mnaive/Mtrue>1.10M_{\rm naive}/M_{\rm true}>1.10

1.28 (σobs=5.66\sigma_{\rm obs}=5.66 km/s)

2 — dispersion-only degenerate

rank-1 (cond >108>10^8)

cond =2.3×1016=2.3\times10^{16}

3a — joint recovery unbiased

Mratio1M_{\rm ratio}\approx1, <3σ<3\sigma

σ=4.97±0.13\sigma=4.97\pm0.13, Mratio=0.99M_{\rm ratio}=0.99

3b — full-distribution full-rank

cond <106<10^6

cond =878=878

4 — RV-precision floor

precision degrades, mass unbiased

σ(σtrue)\sigma(\sigma_{\rm true}): 0.120.240.12\to0.24; maxM1=0.03\max|M-1|=0.03

5 — null (fb=0f_b=0)

f^b<0.05\hat f_b<0.05

f^b=0.02\hat f_b=0.02, σ=4.97\sigma=4.97

6 — AD-vs-FD gradient integrity

rel-err <104<10^{-4}

1.6×10101.6\times10^{-10}

The bias, and why dispersion-only cannot fix it

The dispersion grows by the variance budget σobs2=σtrue2+fbVar(Korb)+ϵ2\sigma_{\rm obs}^2 = \sigma_{\rm true}^2 + f_b\,\mathrm{Var}(K_{\rm orb}) + \epsilon^2, so the naive virial mass is biased high by exactly (σobs/σtrue)2(\sigma_{\rm obs}/\sigma_{\rm true})^21.28×1.28\times at fb=0.5f_b=0.5 (Figure 2). Crucially, this is a systematic: averaging more stars at fixed fbf_b measures the wrong mass more precisely, it does not remove the bias.

A dispersion-only analysis sees a single number σobs\sigma_{\rm obs}, so any (σtrue,fb)(\sigma_{\rm true}, f_b) on the curve σtrue2+fbVar(Korb)=const\sigma_{\rm true}^2 + f_b\,\mathrm{Var}(K_{\rm orb}) = \text{const} fits equally well — an infinite ridge (Figure 3, orange). Its 2×22\times2 Fisher is the outer product of one gradient: exactly rank-1 (one zero eigenvalue, cond =2.3×1016=2.3\times10^{16}). One number cannot separate two unknowns.

How the wings break the degeneracy

The fix is to fit the whole shape of p(v)p(v), not just its width. The Gaussian core constrains one combination of (σtrue,fb)(\sigma_{\rm true},f_b); the non-Gaussian wings — the heavy KorbK_{\rm orb} tail no single-star Gaussian can mimic (Figure 1) — constrain a different combination. Two independent constraints turn the open ridge into a closed ellipse (Figure 3, blue): the full-distribution Fisher is full-rank (cond =878=878, a 1013 improvement). The recovered mass is unbiased, σ=4.97±0.13\sigma=4.97\pm0.13 km/s, Mratio=0.99M_{\rm ratio}=0.99 vs the naive 1.28 (verified unbiased over 24 realizations: σ=5.00\langle\sigma\rangle=5.00, fb=0.50\langle f_b\rangle=0.50).

The RV-precision floor

Because ϵ\epsilon is known and folded into (2), the recovered mass stays unbiased at every ϵ\epsilon (Figure 4) — even at ϵ=5\epsilon=5 km/s σobs\approx\sigma_{\rm obs}. What degrades is precision: σ(σtrue)\sigma(\sigma_{\rm true}) doubles as ϵ\epsilon washes out the wing signature, and the detectable binary fraction fbP(Δ>ϵ)f_b\,P(|\Delta|>\epsilon) collapses from 0.21 to 0.02. The honest scope: you can only correct for the binaries you can detect, and that detectable fraction shrinks as the spectrograph gets noisier — but the correction you do make is unbiased. The Fisher forecast (Figure 5) shows both uncertainties fall as N1/2N^{-1/2}; fbf_b (and hence the bias correction) is the harder parameter, since the wings it lives in are sparsely populated.

Figures

The non-Gaussian wings (log-y). The mock v_{\rm los} (grey) and the
single+binary mixture (blue) follow the binary wings out to \pm35 km/s, where the
single-only Gaussian (orange) predicts essentially nothing. The shaded regions
(|v|>2.5\,\sigma_{\rm obs}) are where the binary excess lives — the signal the
joint fit uses to break the degeneracy.

Figure 1:The non-Gaussian wings (log-yy). The mock vlosv_{\rm los} (grey) and the single+binary mixture (blue) follow the binary wings out to ±35\pm35 km/s, where the single-only Gaussian (orange) predicts essentially nothing. The shaded regions (v>2.5σobs|v|>2.5\,\sigma_{\rm obs}) are where the binary excess lives — the signal the joint fit uses to break the degeneracy.

The bias. M_{\rm naive}/M_{\rm true}=(\sigma_{\rm obs}/\sigma_{\rm true})^2
vs binary fraction f_b (points, 20 realizations each) tracks the analytic
variance budget 1+(\epsilon^2+f_b\,\mathrm{Var}\,K_{\rm orb})/\sigma_{\rm true}^2
(line). At f_b=0.5 the virial mass is biased 1.28\times high.

Figure 2:The bias. Mnaive/Mtrue=(σobs/σtrue)2M_{\rm naive}/M_{\rm true}=(\sigma_{\rm obs}/\sigma_{\rm true})^2 vs binary fraction fbf_b (points, 20 realizations each) tracks the analytic variance budget 1+(ϵ2+fbVarKorb)/σtrue21+(\epsilon^2+f_b\,\mathrm{Var}\,K_{\rm orb})/\sigma_{\rm true}^2 (line). At fb=0.5f_b=0.5 the virial mass is biased 1.28×1.28\times high.

Degeneracy and its breaking. A dispersion-only analysis constrains only the
degenerate ridge (orange) — every point gives the same \sigma_{\rm obs}. The
full velocity distribution localizes both parameters to the finite 1/2\sigma
ellipses (blue); truth (star) sits on the ridge and inside the ellipse. The
ellipse is elongated along the ridge — the residual correlation the wings only
partially lift.

Figure 3:Degeneracy and its breaking. A dispersion-only analysis constrains only the degenerate ridge (orange) — every point gives the same σobs\sigma_{\rm obs}. The full velocity distribution localizes both parameters to the finite 1/2σ2\sigma ellipses (blue); truth (star) sits on the ridge and inside the ellipse. The ellipse is elongated along the ridge — the residual correlation the wings only partially lift.

The RV-precision floor. The recovered-mass precision
\sigma(\sigma_{\rm true}) (blue, left) and \sigma(f_b) (sky, right) grow with
RV precision \epsilon, while the detectable fraction f_b\,P(|\Delta|>\epsilon)
(vermilion, right) collapses. The mass itself stays unbiased
(M_{\rm ratio}\approx1) at all \epsilon — only the precision degrades.

Figure 4:The RV-precision floor. The recovered-mass precision σ(σtrue)\sigma(\sigma_{\rm true}) (blue, left) and σ(fb)\sigma(f_b) (sky, right) grow with RV precision ϵ\epsilon, while the detectable fraction fbP(Δ>ϵ)f_b\,P(|\Delta|>\epsilon) (vermilion, right) collapses. The mass itself stays unbiased (Mratio1M_{\rm ratio}\approx1) at all ϵ\epsilon — only the precision degrades.

Survey forecast. Fisher \sigma(\sigma_{\rm true}) and \sigma(f_b) vs sample
size N (log–log), both scaling as N^{-1/2} (dotted guide). Small-N sits above
the guide — the few-star regime is more degenerate than the asymptotic CRLB.

Figure 5:Survey forecast. Fisher σ(σtrue)\sigma(\sigma_{\rm true}) and σ(fb)\sigma(f_b) vs sample size NN (log–log), both scaling as N1/2N^{-1/2} (dotted guide). Small-NN sits above the guide — the few-star regime is more degenerate than the asymptotic CRLB.

Caveats

How to run

env -u VIRTUAL_ENV uv run --no-sync python scripts/demo_binary_dynamical_mass.py

References

The binary PPqqee coupling is Moe & Di Stefano (2017); the ZAMS mass–luminosity relation is Tout et al. (1996). The Moe and companion models are documented on the binary statistics theory pages; the photometric sibling is B4.

References
  1. Moe, M., & Di Stefano, R. (2017). Mind your Ps and Qs: The interrelation between period (P) and mass-ratio (Q) distributions of binary stars. The Astrophysical Journal Supplement Series, 230, 15. 10.3847/1538-4365/aa6fb6
  2. Tout, C. A., Pols, O. R., Eggleton, P. P., & Han, Z. (1996). Zero-age main-sequence radii and luminosities as analytic functions of mass and metallicity. Monthly Notices of the Royal Astronomical Society, 281, 257. 10.1093/mnras/281.1.257