This project studies whether reported error bars on measurements of fundamental constants are calibrated, or whether they are systematically too small (over-confident). Reporting more precision than the data support is called overprecision.
The motivating case is the gravitational constant G, whose historical measurements scatter more than their stated error bars predict, but the methods here apply to any fundamental constant with repeated independent measurements.
Rather than analyse real historical data directly, we first build a simulator that produces fake measurement histories with a known true answer. This lets us check whether the statistical methods detect overprecision when it is present and do not flag it when it is absent, before applying them to real data and preregistering an analysis.
The statistics reduce to one question: given some numbers and their stated error bars, do they scatter more than the error bars say they should?
If a set of measurements is well calibrated, they should scatter around their average by about as much as their error bars predict. The Birge ratio measures the actual scatter relative to the predicted scatter:
- Birge ratio ≈ 1: error bars are consistent with the scatter.
- Birge ratio > 1: measurements scatter more than claimed (overprecision).
- Birge ratio < 1: measurements scatter less than claimed (conservativeness).
In the code, c is the true underlying Birge ratio: the actual amount of
overprecision, which the data only let us estimate. TRUE_BIRGE is the value of
c used to generate a given simulated dataset.
We summarise overprecision three related ways, which should agree:
- Birge ratio — the scatter measure above. Null hypothesis: 1.
- Calibration area — how far the stated-confidence vs. actual-hit-rate curve sits below the ideal. Null hypothesis: 0.
- Within-1-sigma share — the fraction of measurement pairs that agree to within one combined error bar. Null hypothesis: ≈ 0.6827.
Each is reported with a 95% confidence interval and a one-sided p-value testing calibrated vs. overprecise (small p is evidence of overprecision; we flag p < 0.005).
simulate.py— generates 1000 fake measurement histories of G. Each uses one random true value of G and one random overprecision level (TRUE_BIRGE), then produces 75 noisy measurements plus running averages. Writes thesim-G/andsim-G-parameters/folders.preprocess.py— cleans each dataset: converts every measurement to a plain G value with a plain standard error, and marks which rows are usable.
methods.py— the core statistical tools: the Birge ratio, its exact confidence interval/test, the simulation engine (parametric_null_sim), and the jackknife (leave-one-out) method.calibration.py— the calibration curve and the other two statistics (calibration area, within-1-sigma share), each with both a jackknife and a simulation-based interval/test. Run directly, it draws a calibration curve for one example dataset.analysis.py— the report for a single dataset: prints all three statistics × both methods side by side. Run this first to see the project in action.
check_common.py— shared scaffolding for the validation scripts.check_parametric.py— checks the simulation-based methods by running them on thousands of datasets with a known answer.check_jackknife.py— the same, for the jackknife methods.check_bootstrap.py— an older, area-only cross-check using the bootstrap.
Everything uses the opg conda environment:
conda activate opg
python analysis.py # analyse one example dataset (dataset 399 by default)
python calibration.py # draw a calibration curve (dataset 500 by default)
python simulate.py # regenerate all 1000 simulated datasets (~minutes)
# Validation runs (these simulate many datasets and take longer):
python check_parametric.py
python check_jackknife.py
python check_bootstrap.pyTo analyse a different dataset, change DATASET_NUM near the top of analysis.py
or calibration.py.
Dataset 0399: n=75, weighted mean G = 6.674195
Birge ratio = 2.3539
parametric (chi2) est=+2.3539 95% CI=(+2.0281, +2.8052) p=0.0000 *
jackknife (identity) est=+2.3539 95% CI=(+2.0040, +2.7124) p=0.0000 *
...
Each statistic is shown with its estimate, a 95% confidence interval, and a
p-value. A trailing * flags p < 0.005. Here the Birge ratio of 2.35 (above 1,
CI excludes 1) indicates this dataset's measurements were substantially
over-confident, which is expected because it was generated with TRUE_BIRGE
greater than 1.