# Verification checks (P4) | # | check | outcome | |---|---|---| | 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| ≤ 1.4 in 8/9 cells; C2 z = 2.46 (MC 0.531 vs exact 0.500) | PASS with note: one 2.5-SE deviation among 9 cells, consistent with C2's above-average realised Var(ybar); MC estimates otherwise match theory | | 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 |