| 1 |
Delete out/results.json, re-run analysis.py, compare SHA-256 |
PASS — identical (8684b4a4…09f0f) both runs |
| 2 |
Independent re-implementation with statsmodels OLS + HC1 per replication, same seed/draws |
PASS — coverage_conventional 0.844, coverage_hc1 0.902, sd_beta_mc 0.269647, mean_se_conventional 0.190262 all identical |
| 3 |
sd_beta_mc vs sd_beta_exact (0.26965 vs 0.26798) |
PASS — difference 0.39 approx. SEs of a sample SD (sd/sqrt(2(R-1))) |
| 4 |
mean_se_conventional vs analytic sqrt(E[s^2]·c11)=0.19318 |
PASS — MC 0.19026 slightly below, as expected by Jensen (E[sqrt] ≤ sqrt(E)) |
| 5 |
mean beta_hat 0.4962 vs true 0.5 |
PASS — -0.63 MC SEs (0.268/sqrt(2000)=0.006), unbiased as OLS should be |
| 6 |
Coverages in (0,1); MC SEs > 0; n_replications=2000; n_obs=30; n_input_rows=30 |
PASS |
| 7 |
Undercoverage flag: 0.844 < 0.95 − 3·0.004873 = 0.93538 → true |
PASS — consistent with key value |
| 8 |
Magnitude vs baseline: HC1 (0.902) > conventional baseline (0.844); mean se_conv 0.190 < exact SD 0.268, explaining undercoverage |
PASS — coherent |
| 9 |
Information rules: only data/design.csv read; x, sigma not redrawn |
PASS (code inspection) |