Miami-Dade's small elementary schools spend more per student; a median-based benchmark gap totals $20 million
A reproducibility log: the data this analysis touched, the queries it ran, and how a third party would re-run it.
Summary
Joined 2024-25 per-pupil expenditure to October enrollment for district-run schools, grouped by level and size band, and computed the excess of small elementary schools over the 500–749 median.
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-enrollment.jsonThe enrollment analysis packet: trend, school change, utilization, lift table, spending versus size.
- External datasetFLDOE ESSA school per-pupil expenditures
- External datasetFLDOE Membership by District and School by Grade (Survey 2)
Steps
PPE and enrollment for district-run regular schools (the packet's universe).
SELECT a.school_number, s.school_level, a.value AS ppe, b.value AS enrollment FROM miami_school_year_metrics a JOIN miami_school_year_metrics b USING (school_number, year) JOIN miami_schools s ON s.school_number = a.school_number WHERE a.metric_key = 'per_pupil_expenditure_school' AND b.metric_key = 'enrollment_oct' AND a.year = '2024-25' AND a.subgroup = 'ALL' AND b.subgroup = 'ALL' AND NOT a.suppressed AND NOT b.suppressed AND NOT s.is_charter AND s.school_type = 'REGULAR';Medians by level and size band; the excess = Σ over elementary schools under 300 of (school PPE − 500–749 median) × school enrollment (packet ppe_vs_size.excess_cost_small_es.excess_usd); the median-gap × students reading is median_gap_times_students_usd.
Caveats
The series used is the state's school-level per-pupil expenditure, which excludes allocated district indirect costs (the 'total' series that adds them back is served separately); charter figures are self-reported and excluded here. The $20.5M is a per-school sum, not a difference of medians times students (that is $17.3M), and neither is a savings estimate.
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.