Come analyze HEASARC, IRSA, and MAST data in the cloud! The Fornax Initiative is now welcoming all interested beta users.
Comparing the results
| sampler | elapsed (s) | Rhat | min-ESS | ESS/sec | converged |
| MH | 58.5 | 1.001 | 796 | 13.6 | yes |
| GW | 9.1 | 1.364 | 78 | 8.5 | no |
| HMC | 590.7 | 1.056 | 54 | 0.1 | marginal |
| nest | 155.0 | n/a | 3765 | 24.3 | yes |
Convergence here means Rhat (for multi-chain runs) and
min-ESS
. Rhat is undefined for nested sampling because it
produces a single weighted sample stream.
Three things to notice:
- Nested sampling and Metropolis–Hastings both converge,
for very different reasons. MH wins on per-sample cost (the
chain is essentially a sequence of single forward evaluations
each) and the Hessian-proposal lands it inside the textbook 25–50%
acceptance window on a 3–D Gaussian-shaped posterior. Nested
sampling wins on robustness – it returns the same posterior
regardless of where the chain started, and it also gives us
for free, which the others do not.
- Goodman–Weare looks fast but did not converge. The
9 s elapsed time is misleading: the 32-walker ensemble produced ESS 78
across 4992 samples, so the effective rate is poor. GW typically
needs roughly 30
the chain length of MH to reach the same ESS because the walkers spend many iterations exploring correlations within the ensemble before contracting onto the posterior. Raising chain length to 30000 (about 55 s elapsed time) brings min-ESS into the same range as MH.
- HMC was budget-starved, not failing. The Rhat of 1.06
across 4 chains tells us the chains have not fully mixed; the
per-sample cost is high because each NUTS trajectory requires
roughly
gradient evaluations (tree_depth
8 for a well-warmed-up chain). At the documented default (1000 warmup + 1000 samples) the same Chandra problem finishes in roughly 1.5–2 hours elapsed time and the Rhat drops below 1.01. HMC's payoff appears at higher dimensionality: it is the only sampler in this list whose per-sample cost grows only mildly with the number of thawed parameters, because the gradient computation is independent of parameter count once you are using the analytic-VJP pipeline (see Appendix H.1).