SPB Git

spb/wp29_uqo

Public
3.8 KB · 41 lines markdown
1# F2-conf-01 — Effect of a school-level programme on student scores, with valid uncertainty23## Scientific question4A programme was assigned at the school level: every student in a treated school is exposed, no student in a control school is. Estimate the average effect of the programme on the student test score and report a valid measure of its sampling uncertainty. The estimand τ is the difference between the mean score of students in treated schools and the mean score of students in control schools (student-weighted means, i.e. the OLS coefficient of `score` on `treated` with an intercept). Uncertainty must reflect the design: the programme varies only between schools, and students within the same school share unobserved school-level influences; schools are independent of each other. Decide, at the 5% level (two-sided), whether the data support a non-zero effect.56## Inputs7- `data/schools.csv` — simulated data (a synthetic dataset generated for this exercise; it is not observed data). Columns: `school_id` (integer school identifier), `student_id` (integer student identifier, unique), `treated` (1 if the student's school received the programme, 0 otherwise — constant within a school), `score` (test score, points). One row per student; rows are in random order. The design is balanced: every school has the same number of students.89## Information-availability rules10- Use only `data/schools.csv`. No other input exists.1112## Required outputs13- `out/results.json` with the keys:1415| key | type | unit | meaning |16|---|---|---|---|17| `task_id` | string | – | "F2-conf-01" |18| `tau_hat` | number | points | estimated programme effect (OLS coefficient of score on treated, with intercept) |19| `se_iid` | number | points | conventional OLS standard error of `tau_hat` assuming independent, homoskedastic errors — the naïve baseline |20| `se_cluster` | number | points | standard error of `tau_hat` that is valid under the two-level design described above (your main uncertainty measure) |21| `p_value` | number | – | two-sided p-value of H0: τ = 0 using `se_cluster` |22| `tau_ci_low`, `tau_ci_high` | number | points | 95% confidence interval for τ built from `se_cluster` |23| `effect_significant_5pct` | boolean | – | true if and only if H0: τ = 0 is rejected at the 5% level with the valid uncertainty measure |24| `icc_hat` | number | – | estimated intraclass correlation of the score residual (share of residual variance that is between schools, after removing the treatment effect) |25| `n_schools` | integer | – | number of distinct schools |26| `n_treated_schools` | integer | – | number of treated schools |27| `n_analysed` | integer | – | students used in the estimate |28| `feasibility` | string | – | "complete", "partial" or "infeasible" |29| `feasibility_reason` | string or null | – | explanation if not complete |30| `data_issues` | array of {"issue","handling"} | – | data problems detected and how handled (empty list if none) |31| `n_input_rows` | object | – | {"schools.csv": rows read} |32| `random_seed` | integer or null | – | seed used, if any (e.g. for a bootstrap) |3334- `out/report.md` with the sections: Question; Data and exclusions; Method; Results; Uncertainty; Limitations and open issues.35- `out/analysis.py` — running `~/wp29/venv/bin/python out/analysis.py` from the workspace root must regenerate `out/results.json` from `data/` only, deterministically.36- `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 programme has a non-zero effect at the 5% level.3738## Constraints39- No network access. Python: `~/wp29/venv/bin/python` (numpy, pandas, scipy, statsmodels available). Do not modify `data/`.40- This task is designed to be completed in well under 15 minutes of work.41
Files · main
Menu

Theme