← Back to story

Miami-DadeMethodology and data qualityMethodology recipe

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 outputdata/analysis/miami-residual-z.json

    Residual-z fits, pre-registered checks, ablation and flip-diff.

  • Loader scriptpipeline_miami/analysis/residual_z.py

Steps

  1. python -m pipeline_miami.analysis.residual_z (reads the served table read-only; writes the packet and the per-cell CSV).

  2. 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.