Verification checks (P4) — 2026-10-30
Reproducibility: deleted results.json/table1.csv/figure1.png/exclusions.csv, ran out/analysis.py twice; results.json byte-identical (cmp), table1.csv and figure1.png identical SHA-1. PASS.
Internal consistency (all executed by a separate script, all PASS):
- n_sub1 (96) + n_sub2 (144) = n_analysed = 240.
- Exclusion ledger: 314 merged quarters − 26 (post-2019Q4) − 48 (pre-1960Q1) = 240; chain n_after→n_before consistent. (The merged panel of 314 already excludes 2025Q4, which has only 2 non-missing months; GDPC1 1947Q1–Q4 has no UNRATE overlap.)
- 1960Q1 values recomputed by hand from raw CSV: Δu = −0.4667 pp, g = 2.2237 % — match pipeline.
- Independent numpy lstsq OLS reproduces α, β to 1e-12.
- SEs positive; 95% CI contains β; conclusion
negative_effect⇔ CI upper < 0;unstable⇔ Chow p < 0.05. - R² = 1 − (model_metric/baseline_metric)² holds; model_metric < baseline_metric.
- table1.csv matches results.json; n column = 240/96/144.
- Last quarter used is 2019Q4 (information rule); sample_start/end strings correct.
- Magnitude: β = −0.256 within the usual quarterly Okun range (roughly −0.2 to −0.4); classical OLS SE 0.020 < HAC SE 0.036 (positive autocorrelation, as expected); HAC SE stable across lags 2–12 (0.034–0.037). No failed checks.