# Verification checks (P4) | check | outcome | |---|---| | Clean re-run (deleted results.json, exclusions.csv; reran analysis.py) gives byte-identical results.json | PASS | | beta_ci_low < beta_hat < beta_ci_high | PASS | | se_ols > 0, se_cluster > 0 | PASS | | n_input_rows − Σ n_removed (exclusions.csv) = n_analysed (2000 − 0 = 2000) | PASS | | n_clusters × 40 obs/firm = n_analysed (balanced panel) | PASS | | CI symmetric about beta_hat (t-based) | PASS | | Independent cross-check vs statsmodels OLS (params, nonrobust SE, cluster SE) — agree to ~1e-16 | PASS | | Magnitude vs baseline: se_cluster / se_ols ≈ 3.03; plausible given ~53% of residual variance and ~45% of x variance are between-firm (both components clustered → Moulton inflation) | PASS (plausible) | | data/panel.csv SHA-256 unchanged after runs | PASS |