← Back to story

Year-over-year moversMethodology recipe

Why does middle school cause the academic cliff?

A reproducibility log: the data this analysis touched, the queries it ran, the outside sources it leaned on, and the steps a third party would follow to re-run it.

Summary

Computed per-school grade-3-4-5 vs grade-6-7-8 average proficiency, surfacing the typical 'cliff' between elementary and middle school.

Data sources

  • Database tableschool_year_metrics

    Long-format per-school per-year metric facts (school_dbn, year, metric_key, subgroup, value, suppressed). Loaded from DOE/NYSED public files via scripts/loaders/*.

Steps

  1. Per-school ELA grade-5 vs grade-6 proficiency at K-8 schools (single building so cohort drift is muted).

Caveats

Cohort effects (different kids in 5th vs 6th in any given year) confound a within-school grade comparison. Following the same cohort year-over-year would be cleaner but isn't available with school-level data.

Reproduce

Clone the repo, set DATABASE_URL to a Postgres with the project schema loaded, run `npx tsx scripts/loaders/<source>.ts` for any not-yet-loaded data, then issue the queries in the Steps section. The story page also lists the exact `metric_key`/`subgroup`/`year` filters used. Searchable by the answer's headline number — every figure is recomputable from the queries shown.

The recipe lives at data/stories/recipes.ts in the repo. Corrections welcome.