← Back to story

Punching above expectationMethodology recipe

Which Title I dollars actually moved the needle?

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

We don't have per-pupil spending data loaded. The story body describes how a proper analysis would join the NYC DOE School Allocation Memos (PDFs) with outcome data; the data analysis shows the variance in Title I outcomes among similar-need schools as a proxy.

Data sources

  • Database tableschools

    One row per New York City public school (DBN, name, district, borough, school_type, grade_band, latest_enrollment, proclivity_decile, proclivity_score, closed_at, admission_category).

  • 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/*.

  • External datasetNYC DOE School Allocation Memos (per-school funding, PDF format)

Steps

  1. For Title I-eligible schools (proxied by FRL share ≥ 75%), pull academic composite + chronic absenteeism.

  2. Compute within-group variance; note how much of Title I dollars cluster at schools with similar input but different output.

Caveats

Without the per-school funding data, we can show variance but not causal effect of dollars. PTA fundraising adds a parallel funding stream not visible to Title I accounting.

References

Reproduce

Scrape the NYC DOE School Allocation Memos (one PDF per school) to build a per-school per-pupil-spending dataset; then join to school_year_metrics for the outcome model.

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