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-aware IMF validation

San Diego State University

Binary-aware IMF recovery validation

Two validated layers. The orbital mechanics (progenax.binaries) are covered by tests/validation/test_binary_physics.py (Kepler’s laws, periapsis/apoapsis, energy, momentum, differentiability; see the test dashboard for the live per-suite count). The binary-aware IMF recovery — the headline — is regenerated by scripts/validate_binaries.py using a fast differentiable MLE of the marginalised likelihood (no MCMC), so it runs in seconds and prints PASS/FAIL. The full Bayesian (numpyro NUTS) cross-check remains offline at validation/imf/validate_binary_aware_recovery.py. Theory at Binary-aware IMF recovery; likelihood derivation at Binary-aware likelihood.

What is verified

Orbital rows map to test_binary_physics.py; recovery rows are regenerated by scripts/validate_binaries.py (Maschberger α=2.30\alpha=2.30, Moe+17 binaries, fbin0.27f_{\rm bin}\simeq0.27; binary-aware MLE + observed-Fisher 1σ1\sigma).

Property

Tolerance (as tested)

Measured

Anchor

Kepler III: T=2πa3/GMT = 2\pi\sqrt{a^3/GM}

rel <109< 10^{-9}

0 (machine)

Kepler’s third law

aTa \leftrightarrow T roundtrip

<109< 10^{-9}

0 (machine)

inverse consistency

Orbit geometry rperi=a(1e)r_{\rm peri}=a(1-e), rapo=a(1+e)r_{\rm apo}=a(1+e)

<106< 10^{-6}

exact (1.000, 3.000)

Kepler’s equation

Orbital energy E=Gm1m2/2aE=-Gm_1m_2/2a

rel <103< 10^{-3}

4.2×10164.2\times10^{-16}

vis-viva / energy

Moe+17 qq sampler vs implemented PDF (KS)

D<Dcrit=0.0048D < D_{\rm crit}=0.0048

0.0021 / 0.0019

Moe & Di Stefano (2017) Table 13

Mass-dependent twin fraction (q>0.95q>0.95)

decreases with M1M_1

15.2%15.2\% (1M1\,M_\odot) 6.3%\to 6.3\% (10M10\,M_\odot)

Moe+17 twin excess

Naive fit “confidently wrong” at N=105N=10^5

α^α/σ3|\hat\alpha-\alpha|/\sigma \gg 3

α^=2.21\hat\alpha=2.21, 17.8σ17.8\sigma

biased single-star model

Binary-aware recovery at N=105N=10^5

within 2.5σ2.5\sigma of truth

α^=2.298\hat\alpha=2.298 (0.4σ0.4\sigma)

marginalised likelihood

Bias vanishes at fb=0f_b=0

bias<0.03|{\rm bias}|<0.03, monotonic in fbf_b

-0.006 (fb=0f_b{=}0) 0.106\to -0.106 (fb=0.7f_b{=}0.7)

bias is binary contamination

Recovery-likelihood differentiability (AD vs FD)

rel err <103< 10^{-3}

8×1068\times10^{-6}

\partial\,NLLaware/α_{\rm aware}/\partial\alpha

Figures

Generated by scripts/validate_binaries.py (PASS/FAIL per panel; PNG + PDF vector).

The “confidently wrong” result. Recovered slope \hat\alpha vs sample size for a
naive single-star fit (vermilion) and the binary-aware marginalised likelihood (blue),
\pm1\sigma bands. Both CIs shrink as 1/\sqrt{N}, but the naive estimate shrinks
around the wrong value — 17.8\sigma from the truth at N=10^5 — while the
binary-aware estimate tracks the true \alpha=2.30 (dashed) to within 1.3\sigma at
every N.

Figure 1:The “confidently wrong” result. Recovered slope α^\hat\alpha vs sample size for a naive single-star fit (vermilion) and the binary-aware marginalised likelihood (blue), ±1σ\pm1\sigma bands. Both CIs shrink as 1/N1/\sqrt{N}, but the naive estimate shrinks around the wrong value — 17.8σ17.8\sigma from the truth at N=105N=10^5 — while the binary-aware estimate tracks the true α=2.30\alpha=2.30 (dashed) to within 1.3σ1.3\sigma at every NN.

Why, and the cure’s reach. (a) The “wrongness significance” |\hat\alpha-\alpha|/\sigma
grows \propto\sqrt{N} for the naive fit (the bias is fixed while \sigma shrinks),
crossing 3\sigma near N\sim3000; the binary-aware fit stays at \mathcal{O}(1).
(b) The naive bias scales with binary fraction f_b and extrapolates to zero at
f_b=0 — confirming the bias is binary contamination, not a sampling artefact.

Figure 2:Why, and the cure’s reach. (a) The “wrongness significance” α^α/σ|\hat\alpha-\alpha|/\sigma grows N\propto\sqrt{N} for the naive fit (the bias is fixed while σ\sigma shrinks), crossing 3σ3\sigma near N3000N\sim3000; the binary-aware fit stays at O(1)\mathcal{O}(1). (b) The naive bias scales with binary fraction fbf_b and extrapolates to zero at fb=0f_b=0 — confirming the bias is binary contamination, not a sampling artefact.

Orbital-mechanics oracles. (a) Kepler’s third law T=2\pi\sqrt{a^3/GM} over five
decades in a (max rel error 0, machine precision). (b) A bound e=0.5 orbit with
its focus at the binary COM; periapsis a(1-e)=1 and apoapsis a(1+e)=3 recovered
exactly. (c) The resolved two-body energy equals -Gm_1m_2/2a to 4\times10^{-16}.

Figure 3:Orbital-mechanics oracles. (a) Kepler’s third law T=2πa3/GMT=2\pi\sqrt{a^3/GM} over five decades in aa (max rel error 0, machine precision). (b) A bound e=0.5e=0.5 orbit with its focus at the binary COM; periapsis a(1e)=1a(1-e)=1 and apoapsis a(1+e)=3a(1+e)=3 recovered exactly. (c) The resolved two-body energy equals Gm1m2/2a-Gm_1m_2/2a to 4×10164\times10^{-16}.

Moe & Di Stefano (2017) mass-ratio distribution. Sampled q=m_2/m_1 (filled)
overlays the implemented g(q\,|\,M_1) (solid) for (a) a 1\,M_\odot and (b) a
10\,M_\odot primary; KS D<D_{\rm crit} in both. The excess at q\to1 (the “twin”
fraction) drops from 15.2\% to 6.3\% with primary mass — the mass-dependent twin
excess that the period-averaged Moe+17 model encodes.

Figure 4:Moe & Di Stefano (2017) mass-ratio distribution. Sampled q=m2/m1q=m_2/m_1 (filled) overlays the implemented g(qM1)g(q\,|\,M_1) (solid) for (a) a 1M1\,M_\odot and (b) a 10M10\,M_\odot primary; KS D<DcritD<D_{\rm crit} in both. The excess at q1q\to1 (the “twin” fraction) drops from 15.2%15.2\% to 6.3%6.3\% with primary mass — the mass-dependent twin excess that the period-averaged Moe+17 model encodes.

Gradient validation. Autodiff (line) vs central finite difference (circles) for
(a) the Kepler transform \partial|v|^2/\partial a (rel err 8\times10^{-9}) and (b)
the binary-aware recovery likelihood \partial\,NLL/\partial\alpha (rel err
8\times10^{-6}) — so the binary-aware slope can be inferred by gradient descent / HMC.

Figure 5:Gradient validation. Autodiff (line) vs central finite difference (circles) for (a) the Kepler transform v2/a\partial|v|^2/\partial a (rel err 8×1098\times10^{-9}) and (b) the binary-aware recovery likelihood \partial\,NLL/α/\partial\alpha (rel err 8×1068\times10^{-6}) — so the binary-aware slope can be inferred by gradient descent / HMC.

How to run

# orbital-mechanics physics tests (~3 s on CPU)
pytest tests/validation/test_binary_physics.py -q

# regenerate the five figures with PASS/FAIL tables (seconds; MLE, no MCMC)
python scripts/validate_binaries.py

# optional full Bayesian (numpyro NUTS) cross-check (offline; minutes-hours)
python validation/imf/validate_binary_aware_recovery.py

Honest scope

References

Moe & Di Stefano (2017) (binary statistics), Moe et al. (2019) (metallicity caveat), Sana et al. (2012) (O-star binaries), Maschberger (2013) (IMF). The methodology chapter is Binary-aware IMF recovery; the likelihood derivation Binary-aware likelihood; the Moe calibration Multiplicity statistics (Moe & Di Stefano 2017).

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. Moe, M., Kratter, K. M., & Badenes, C. (2019). The close binary fraction of solar-type stars is strongly anticorrelated with metallicity. The Astrophysical Journal, 875, 61. 10.3847/1538-4357/ab0d88
  3. Sana, H., de Mink, S. E., de Koter, A., Langer, N., Evans, C. J., Gieles, M., Gosset, E., Izzard, R. G., Le Bouquin, J.-B., & Schneider, F. R. N. (2012). Binary interaction dominates the evolution of massive stars. Science, 337, 444–446. 10.1126/science.1223344
  4. Maschberger, T. (2013). On the function describing the stellar initial mass function. Monthly Notices of the Royal Astronomical Society, 429, 1725–1733. 10.1093/mnras/sts479