F2-conf-03 — Monte Carlo coverage of OLS confidence intervals in a small heteroskedastic sample
Scientific question
How well do nominal 95% confidence intervals for an OLS slope perform in a small sample with heteroskedastic errors? Consider the fixed-design linear model y_i = α + β x_i + σ_i ε_i, i = 1, …, 30, with α = 1, β = 0.5, ε_i independent standard normal, and x_i and σ_i fixed at the values given in data/design.csv (the same 30 values in every replication; only ε is redrawn). The estimands are (a) the true coverage probability of the interval β̂ ± t_{0.975}(28) · se_conv, where se_conv is the conventional OLS standard error (residual variance with divisor n − 2); (b) the true coverage probability of the interval β̂ ± t_{0.975}(28) · se_HC1, where se_HC1 is the heteroskedasticity-robust HC1 standard error (White's HC0 sandwich multiplied by n/(n − 2)); (c) the exact finite-sample standard deviation of β̂ under this design; (d) the expected value of se_conv. Estimate (a), (b) and (d) by Monte Carlo with exactly R = 2000 replications and a fixed seed, compute (c) analytically, and conclude whether the conventional interval attains its nominal coverage.
Inputs
data/design.csv— the fixed design (a synthetic design generated for this exercise; not observed data). Columns:i(observation index 1–30),x(regressor value, dimensionless),sigma(standard deviation of the error for observation i, dimensionless). 30 rows.
Information-availability rules
- Use only
data/design.csv; the model constants (α = 1, β = 0.5, n = 30, R = 2000, nominal level 95%, t(28) critical value) are given above. Do not redraw x or σ.
Required outputs
out/results.jsonwith the keys:
| key | type | unit | meaning |
|---|---|---|---|
task_id |
string | – | "F2-conf-03" |
coverage_conventional |
number | proportion | share of the 2000 replications in which the conventional interval contains β = 0.5 — the naïve baseline |
coverage_hc1 |
number | proportion | share of the 2000 replications in which the HC1 interval contains β = 0.5 |
sd_beta_exact |
number | – | exact standard deviation of β̂ under the design (analytical, no simulation) |
sd_beta_mc |
number | – | sample standard deviation (divisor R − 1) of the 2000 simulated β̂ |
mean_se_conventional |
number | – | average of se_conv over the 2000 replications |
conventional_ci_undercovers |
boolean | – | true if and only if coverage_conventional is below 0.95 by more than three Monte Carlo standard errors (binomial standard error at R = 2000) |
n_replications |
integer | – | number of replications (2000) |
n_obs_per_replication |
integer | – | sample size per replication (30) |
feasibility |
string | – | "complete", "partial" or "infeasible" |
feasibility_reason |
string or null | – | explanation if not complete |
data_issues |
array of {"issue","handling"} | – | data problems detected and how handled (empty list if none) |
n_input_rows |
object | – | {"design.csv": rows read} |
random_seed |
integer | – | the seed used for the simulation (required; the simulation must be reproducible) |
out/report.mdwith the sections: Question; Data and exclusions; Method; Results; Uncertainty (include the Monte Carlo standard error of each coverage estimate); Limitations and open issues.out/analysis.py— running~/wp29/venv/bin/python out/analysis.pyfrom the workspace root must regenerateout/results.jsonfromdata/only, deterministically (same seed, same numbers).out/claims.json— a list of the central claims of the report: [{"id": "C1", "text": "...", "results_keys": ["..."], "status": "supported"|"unsupported"|"not_evaluated", "caveat": "..."}]. Include one claim about whether the conventional interval attains its nominal coverage.
Constraints
- No network access. Python:
~/wp29/venv/bin/python(numpy, pandas, scipy, statsmodels available). Do not modifydata/. - This task is designed to be completed in well under 15 minutes of work; the simulation itself should take seconds.