Skip to content

ylecoyote/distance-ladder-systematics

Repository files navigation

Distance Ladder Systematics & Hubble Tension Analysis

Systematic Error Assessment in Cepheid Distance Ladder Measurements

Status Journal License Binder Open In Colab DOI

Last Updated: 2025-11-18


Overview

This project provides a comprehensive reassessment of systematic uncertainties in Cepheid-based distance ladder measurements and their impact on the reported "Hubble tension." Our analysis reveals that realistic systematic error accounting reduces the tension from 5.9σ to 1.1σ, suggesting the tension is largely consistent with a measurement artifact rather than requiring new physics.

For full technical details, see manuscript.tex and the data/figures listed below.

Key Results

  • Systematic error reassessment: σ_sys = 1.71 km/s/Mpc (correlated), representing a 1.6× underestimation in published uncertainties
  • Multi-method convergence: JAGB + cosmic chronometers → H₀ = 68.22 ± 1.36 km/s/Mpc (Planck-independent)
  • Tension reduction: From 5.9σ → 1.1σ (Planck-relative) or 0.6σ (Planck-independent)
  • Robustness validated: Tension remains <2σ across all tested systematic scenarios
  • JWST cross-validation: TRGB–JAGB RMS ≈ 0.048 mag vs. Cepheid–TRGB RMS ≈ 0.108 mag (~2.3× larger), confirming the enlarged Cepheid systematic budget

Quick Start

Option 1: Interactive Cloud Environment (No Installation) ⭐ Recommended

Click one of the badges above to launch an interactive environment in your browser:

Binder Binder - Fully reproducible environment with Jupyter notebooks

Or:

Open In Colab Google Colab - Fast startup with Google infrastructure

Once launched:

  1. Start with the guided notebook (recommended):

    • Colab: Notebook opens automatically → Click "Runtime → Run all"
    • Binder: Open reproduce_key_results.ipynb → Click "Run → Run All Cells"
    • Runtime: ~1-2 minutes to reproduce all four key results
  2. Or run analysis scripts directly:

    # Generate all figures
    python analysis/create_figure1_tension_evolution.py
    python analysis/create_figure2_error_budget.py
    python analysis/create_figure3_cchp_crossval_real.py
    python analysis/create_figure4_h0_compilation.py
    
    # Or run a complete reproduction
    python analysis/calculate_error_budget.py
    python analysis/calculate_tension_evolution.py
    python analysis/create_manuscript_tables.py

Option 2: Upload to Overleaf (Recommended for Manuscript)

The fastest way to view or edit the manuscript is to use the pre-built Overleaf package.

  1. Download the pre-built package: manuscript_overleaf_v8.7.zip

  2. Upload to Overleaf:

    • Click "New Project" → "Upload Project"
    • Select the zip file
    • Set compiler to pdfLaTeX
    • Click "Recompile"
  3. Post-upload fix (for proper σ rendering):

    % Add in the preamble of manuscript.tex (after the other \usepackage lines):
    \usepackage{lmodern}

Option 3: Local Compilation

Requirements:

  • LaTeX distribution (TeX Live, MiKTeX, or MacTeX)
  • AASTeX (class file and support files included in the package)
  • Standard packages: graphicx, amsmath, natbib

Compile:

cd manuscript
pdflatex manuscript.tex
bibtex manuscript
pdflatex manuscript.tex
pdflatex manuscript.tex

Project Structure

Core files:

  • reproduce_key_results.ipynb – Interactive Jupyter notebook showcasing the four key results (recommended starting point)
  • PROVENANCE.md – Complete data provenance documentation with sources, citations, and retrieval dates
  • CITATION.cff – Citation metadata for the repository
  • LICENSE – MIT License
  • README.md – This file

Environment:

  • requirements.txt – Python dependencies for pip/Binder/Colab environments
  • environment.yml – Reproducible conda environment specification

Analysis & Data:

  • analysis/ – Python scripts for error budgets, tension evolution, MCMC fits, robustness tests, and figure/table generation
  • data/ – Input and generated data products:
    • systematic_error_budget.csv, tension_evolution.csv, h0_measurements_compilation.csv
    • cosmic_chronometers_Hz.csv – Mirrored for self-contained reproducibility
    • cchp_trgb_cepheid_comparison.csv, cchp_trgb_jagb_comparison.csv – JWST cross-validation
    • correlation_matrix_updated.csv – 9×9 systematic correlation structure
    • tables/ – LaTeX table fragments for manuscript

Manuscript:

  • manuscript/ – LaTeX source (manuscript.tex), AASTeX class file, BibTeX references
  • figures/ – Output figures (PDF + PNG for Figs. 1–5 and auxiliary plots)
  • manuscript_overleaf_v8.7.zip – Ready-to-upload Overleaf package (manuscript + figures + tables)

Scripts:

  • scripts/prepare_overleaf_updated.sh – Build Overleaf package
  • scripts/update_manuscript_hash.sh – Update manuscript hash in config/numerical_claims.yaml

Documentation:

  • docs/ – Development notes and methodology documentation

Reproducing results

All commands below assume you have created/activated the project environment (see environment.yml) and are running from the repository root.

1. Generate data files

python3 analysis/calculate_error_budget.py              # → data/systematic_error_budget.csv, data/systematic_budget_recalculated.csv
python3 analysis/calculate_tension_evolution.py         # → data/tension_evolution.csv
python3 analysis/h6_h0_estimate.py                      # → data/mcmc_chains_LCDM_2D.npy
python3 analysis/cosmic_chronometer_fit_random_effects.py  # → data/cosmic_chronometer_random_effects_results.csv

2. Generate figures

# Master script - runs all figure generation
python3 analysis/run_all.py

# Or generate figures individually:
python3 analysis/create_figure1_tension_evolution.py    # → figures/figure1_tension_evolution.*
python3 analysis/create_figure2_error_budget.py         # → figures/figure2_error_budget.*
python3 analysis/create_figure3_cchp_crossval_real.py   # → figures/figure3_cchp_crossval_real.*
python3 analysis/create_figure4_h0_compilation.py       # → figures/figure4_h0_compilation.*
python3 analysis/create_figure5_hz_fit_intrinsic_scatter.py  # → figures/figure5_h6_fit.*
python3 analysis/create_figure_correlation_heatmap.py   # → figures/figure_correlation_heatmap.*

3. Generate tables

python3 analysis/create_manuscript_tables.py            # → data/tables/*.tex

Total runtime: ~1–2 minutes on a modern laptop (no GPU required).

4. Verify numerical consistency

The repository includes an automated verification system to ensure numerical consistency across data files, figures, tables, and documentation.

# Run full verification
python3 analysis/verify_manuscript_consistency.py

# Run specific categories only
python3 analysis/verify_manuscript_consistency.py --only tension systematics

# Output JSON for CI/CD integration
python3 analysis/verify_manuscript_consistency.py --json

What it checks:

  • ✅ Tension evolution values (CSV ↔ figures ↔ README)
  • ✅ Systematic budget quadrature sums
  • ✅ H₀ three-method convergence calculations
  • ✅ Figure metadata accuracy
  • ✅ Figure package completeness

Exit codes:

  • 0: All checks passed (manuscript ready for submission)
  • 1: Errors or warnings detected (review required)

Pre-commit hook: The repository includes a pre-commit hook that automatically runs verification before each commit:

  • Blocks commits with numerical errors
  • ⚠️ Allows commits with warnings (but shows them)

The hook is installed at .git/hooks/pre-commit and runs automatically. To bypass (not recommended):

git commit --no-verify

For implementation details, see:


Key Scientific Claims

1. SH0ES Systematic Underestimation

Claim: SH0ES underestimates systematic uncertainties by 1.6×

  • SH0ES assessment: σ_sys = 1.04 km/s/Mpc (uncorrelated)
  • Our assessment: σ_sys = 1.71 km/s/Mpc (with realistic correlations)
  • Underestimation factor: 1.6× when accounting for correlated error sources

Data: data/systematic_error_budget.csv, table1_systematic_budget.tex

2. Multi-Method Convergence

Claim: Late-universe methods converge at H₀ ≈ 68 km/s/Mpc (Planck-independent)

  • JAGB + Cosmic chronometers: 68.22 ± 1.36 km/s/Mpc
  • Three-method mean (JAGB + H(z) + Planck): 67.48 ± 0.50 km/s/Mpc
  • Excellent consistency: χ²_red ≈ 0.04

Data: data/h0_measurements_compilation.csv, table3_h0_compilation.tex

3. Tension Reduction

Claim: Realistic systematics reduce tension from 5.9σ → 1.1σ (Planck-relative)

Stage Description Tension vs Planck
1 SH0ES baseline (statistical only) 5.9σ
2 Add SH0ES total uncertainty 4.0σ
3 Scenario A zero-point 4.0σ
4 Add period distribution correction 1.9σ
5 Add metallicity + correlated systematics 1.1σ

Scenario range: 0.2σ to 1.7σ across conservative/aggressive assumptions Planck-independent: 0.6σ (vs JAGB+chronometers convergence)

See Fig. 1 and Table 2 in the manuscript for the full staged tension-evolution visualization.

Data: data/tension_evolution.csv, table2_tension_evolution.tex

4. JWST Cross-Validation

Claim: JWST data confirms systematic underestimation

  • 15 galaxies with Cepheid + TRGB + JAGB measurements
  • TRGB–JAGB agreement: RMS ≈ 0.048 mag with ≈0 mean offset
  • Cepheid–TRGB scatter: RMS ≈ 0.108 mag (~2.3× larger than TRGB–JAGB)
  • Jackknife validation and robust estimators confirm this excess
  • Supports a larger Cepheid systematic error budget rather than JWST-limited photometry

See Fig. 3 and Table 5 in the manuscript for the full cross-validation comparison.

Data: data/cchp_trgb_cepheid_comparison.csv, table5_jwst_crossvalidation.tex


Data files

All data files are CSV (or NPZ/Numpy) format with header comments documenting sources and methods.

Primary data

Analysis outputs

MCMC chains

  • data/mcmc_chains_LCDM_2D.npy: 128,000 (H₀, Ωₘ) samples for the baseline LCDM CC fit
    (generated by analysis/h6_h0_estimate.py; see “Reproducing results” below)

Additional hierarchical and intrinsic-scatter summaries:

Manuscript tables (LaTeX)

Generated by analysis/create_manuscript_tables.py and used directly in the manuscript:

  • data/tables/table1_systematic_budget.tex: Systematic error budget
  • data/tables/table2_tension_evolution.tex: H₀ tension staging
  • data/tables/table3_h0_compilation.tex: Multi-method H₀ compilation
  • data/tables/table4_cchp_crossval.tex: JWST CCHP cross-validation summary
  • data/tables/table5_jwst_crossvalidation.tex: JWST scatter statistics (TRGB/JAGB/Cepheid)
  • data/tables/table6_cosmic_chronometers.tex: Cosmic chronometer H(z) summary and derived H₀ constraints
  • data/tables/table_anchor_weights.tex: Anchor weighting scheme
  • data/tables/table_correlation_matrix.tex: Systematic correlation matrix

Manuscript Status

✅ Submission-ready for ApJ (version v8.7):

  • ✅ All numerical claims verified against data files
  • ✅ All citations cross-checked in bibliography
  • ✅ Computational results fully reproducible
  • ✅ LaTeX compilation tested (Overleaf + local)
  • ✅ All figures and tables render correctly
  • ✅ Author metadata complete (ORCID included)

Package: manuscript_overleaf_v8.7.zip (4.0 MB)

Submission:
Package manuscript_overleaf_v8.7.zip has been tested on Overleaf and is ready for ApJ submission.


Requirements

Python Environment

Tested with: Python 3.11+ and Python 3.12

# Create conda environment
conda env create -f environment.yml
conda activate distance-ladder

# Or install manually
pip install numpy pandas matplotlib scipy emcee corner

LaTeX Requirements

  • AASTeX 7.01 (included in package)
  • pdfLaTeX + BibTeX
  • Standard packages: graphicx, amsmath, natbib, hyperref

Citation

If you use this work, please cite:

@article{Wiley2025,
  author = {Wiley, Aaron},
  title = {{Forensic Analysis of Distance Ladder Systematics:
           The Hubble Tension Reduced from $\sim$6$\sigma$ to $\sim$1$\sigma$}},
  journal = {The Astrophysical Journal},
  year = {2025},
  note = {Submitted}
}

Repository citation: See tag v8.7 for the exact version corresponding to the submitted manuscript. GitHub also provides a "Cite this repository" button based on CITATION.cff.

Archived release: A permanent, citable version is archived on Zenodo: https://doi.org/10.5281/zenodo.17637857 (draft DOI - will be finalized upon publication)


Contact

Author: Aaron Wiley
ORCID: 0009-0007-1612-9203
Affiliation: Independent Researcher
Email: awiley@outlook.com

For questions about the analysis, methodology, or data, please open an issue or contact the author.


Acknowledgments

This research made use of:

  • Gaia EDR3 parallax data
  • JWST/NIRCam observations (CCHP program)
  • Cosmic chronometer measurements (Moresco et al. 2022)
  • Planck 2018 cosmological constraints
  • SH0ES Cepheid measurements (Riess et al. 2022)

Full acknowledgments in manuscript.


License

This work is prepared for submission to The Astrophysical Journal. All rights reserved pending publication.

Code and data are provided for reproducibility and peer review. Please contact the author regarding reuse.

See LICENSE for full pre-publication terms.


Manuscript ready for ApJ submission • Publication-ready with comprehensive literature coverage

About

Forensic analysis of Cepheid systematic uncertainties

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •