| 1 |
Clean re-run of out/analysis.py (results.json, table1.csv, figure1.png deleted first) reproduces byte-identical results.json and table1.csv |
PASS |
| 2 |
Runtime |
~2 s for full grid (limit 600 s) — PASS |
| 3 |
table1.csv has 27 rows (9 per estimator); coverage/mc_se objects have 27 keys; rel_bias_var 18 keys; wcb rel_bias_var empty |
PASS |
| 4 |
All MC SEs > 0; all coverages in [0,1] |
PASS |
| 5 |
n_failure_cells == len(failure_cells); failure set recomputed from coverage < 0.90 matches |
PASS |
| 6 |
n_analysed = 9 x 2000 = 18000; exclusion ledger 9 - 0 = 9 cells |
PASS |
| 7 |
rel_bias(CR1)/rel_bias(CR0) = G/(G-1) exactly (1.25, 1.1111, 1.0345) |
PASS |
| 8 |
CR1 mean half-width > CR0 in every cell |
PASS |
| 9 |
Vectorised wild-bootstrap t* vs brute-force construction of y* (out/state/verify/check_wcb.py): max abs diff 1.1e-14 |
PASS |
| 10 |
MC Var(ybar)/exact Var(ybar) per cell: 0.934–1.065 (sampling SE of ratio ≈ 0.032 for R=2000) — consistent with DGP, largest deviations ≈ 2 SE (C4 0.934, C2 1.065) |
PASS (noted) |
| 11 |
MC rel_bias(CR0) vs exact analytic E[V_CR0]/Var(ybar) (check_bias.py): |
z |
| 12 |
Baseline (naive iid CI) coverage ≈ 0.94–0.96 at ICC=0 and 0.29–0.49 at ICC>0, as expected; all cluster-robust procedures improve on it when ICC>0 |
PASS |
| 13 |
WCB quantile-rule sensitivity (numpy linear quantile vs 380th order statistic): coverage changes ≤ 0.003; failure set unchanged |
PASS |