← Back to story

Borough & districtMethodology recipe

The chronic absenteeism map looks like the temporary-housing map

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

Without a per-school students-in-temporary-housing (STH) share loaded, we used borough-level STH density (from public DOE reports) and showed it tracks borough-level chronic-absenteeism averages.

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 datasetAdvocates for Children NY — NYC student-in-temporary-housing annual report

Steps

  1. Per-borough absenteeism averages from our DB; per-borough STH density from AFC's annual report.

Caveats

Borough-level join is coarse — within-borough variation is large. Loading STH per school (about 1 hour of loader work) would enable a proper school-level correlation.

References

Reproduce

Load NYC DOE's Demographic Snapshot file (same source as our existing loaders) and add an STH-share metric per school per year. See scripts/loaders/ for the existing Demographic Snapshot loader pattern.

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