Adjusting test scores for who enrols makes them agree less, not more, with Florida's own growth measure
A reproducibility log: the data this analysis touched, the queries it ran, and how a third party would re-run it.
Summary
Ran the residual-z engine (WLS per outcome × year) and evaluated the pre-registered checks against the state's learning-gains components; ablation drops one covariate at a time.
Data sources
- Database tablemiami_school_year_metrics
Long-format facts: (school_number, year, metric_key, subgroup) with value, suppressed, denominator, peer and district percentiles, and the residual-z columns.
- Cached output
data/analysis/miami-residual-z.jsonResidual-z fits, pre-registered checks, ablation and flip-diff.
- Loader script
pipeline_miami/analysis/residual_z.py
Steps
python -m pipeline_miami.analysis.residual_z (reads the served table read-only; writes the packet and the per-cell CSV).
Spearman correlations per year are in packet outcomes.<key>.years.<year>.checks.P2.
Caveats
Learning gains are not published for 2022-23 (FAST baseline year). The tested-N used as weight for School Grades components is October membership in the tested grades.
Reproduce
Follow docs/cities/miami/07_runbook.md: `make miami-discover-all`, parse the PDFs, run the loaders in order, `make miami-verify`, then the analysis scripts. The queries below run directly against the local Postgres.
The recipe lives at data/cities/miami/stories/recipes.ts in the repo.