← Back to story

Miami-DadeWhat families and staff sayMethodology recipe

How school survey responses relate to later enrollment change

A reproducibility log: the data this analysis touched, the queries it ran, and how a third party would re-run it.

Summary

Regressed the log change in October membership from the survey year to 2025-26 on the survey measure with controls (utilization, school-grade letter index, level, log enrollment) for district-run schools; pre-registered in pipeline_miami/analysis/survey_enrollment.py.

Data sources

Steps

  1. Survey measures and controls for the survey year; enrollment and the first permanent capacity for the utilization control; enrollment for 2025-26.

    SELECT school_number, metric_key, year, value FROM miami_school_year_metrics
    WHERE subgroup = 'ALL' AND NOT suppressed AND metric_key IN ('survey_parents_recommend','survey_students_recommend','survey_students_safety','survey_students_teaching','survey_parents_teaching','survey_staff_leadership','utilization_permanent_pct','fish_capacity_permanent','school_grade_letter_index','enrollment_oct')
      AND year IN ('2021-22','2022-23','2025-26');
  2. OLS with level dummies; partial R² = (R²_with − R²_controls) / (1 − R²_controls). See the packet by_survey_year, and common_schools for the two cohorts refitted on the same schools with a paired school bootstrap of the difference and each measure's year-to-year correlation.

Caveats

Observational; parents about to leave may already rate the school lower. The 2021-22 utilization control is that cohort's own October 2021 headcount over the 2022-23 permanent capacity (the first state capacity report). As published the two cohorts are different school sets (the 2022-23 workbook withholds fewer schools under 10 responses); both windows end in 2025-26 and span different durations (four and three years). Year-to-year correlations cannot separate response noise from real change and do not explain coefficient differences. Twelve predictor tests were run; the packet carries Holm-adjusted p-values.

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.