Source document

pipeline_miami/config/outcomes.yaml

Served verbatim from the project repository. Internal working document conventions apply: documents may reference file paths, branch names, and findings-ledger anchors from the repo.

# Miami-Dade outcomes the residual-z engine fits (pipeline_miami/analysis/residual_z.py).
# One entry per served metric_key. n_rule gives the weight / sampling-N for the
# cell: `denominator` uses the N stored with the cell; `grades:3-10` sums the
# same year's October membership over those grades (School Grades components
# carry no tested count; tested ≈ enrolled in the tested grades). scale:
# percent → binomial SE; rate_per_100 → Poisson SE; sampling_error: none
# overrides the noise model where the value is not a share of independent
# students (z = resid / tau).
#
# Enrollment / capacity metrics are NOT outcomes (direction NEUTRAL) and live in
# the closure track (docs/cities/miami/06_enrollment_capacity_closures.md).

defaults:
  min_n: 30                 # eligibility floor on N (the publisher's suppression floor is 10)
  z_threshold: 2.0
  persistence: { window: 3, min_flags: 2 }   # window in calendar (spring) years, inside one regime
  # Fit universe: every school with the outcome and a complete covariate row
  # that year, including schools that have since closed (they are the ones the
  # closure analysis cares about; excluding them shifted the baseline upward —
  # review 2026-09-16, C9).

outcomes:
  ela_achievement:
    direction: HIGHER_BETTER
    scale: percent
    n_rule: "grades:3-10"
    comparability_regime: fl_assessment
    validation_reference: learning_gains_ela      # pre-registered check (see residual_z.py PREREGISTERED)
  math_achievement:
    direction: HIGHER_BETTER
    scale: percent
    n_rule: "grades:3-10"
    comparability_regime: fl_assessment
    validation_reference: learning_gains_math
  science_achievement:
    direction: HIGHER_BETTER
    scale: percent
    # Statewide science is tested in grades 5 and 8 and once in high school
    # (Biology EOC). Measured against the SRS tested counts (2022-23 → 2024-25):
    # Biology testers ≈ 0.75–0.85 × grade-9 membership, 0.39–0.41 × grades 9–10,
    # 0.20–0.21 × grades 9–12 — so one grade, not four (review 2026-09-16, M4).
    n_rule: "grades:5,8,9"
    n_rule_alternatives: ["grades:5,8,9-10", "grades:5,8,9-12"]   # refitted in the ablation
    comparability_regime: fl_assessment
  learning_gains_ela:
    direction: HIGHER_BETTER
    scale: percent
    n_rule: "grades:4-10"
    comparability_regime: school_grades
  learning_gains_math:
    direction: HIGHER_BETTER
    scale: percent
    n_rule: "grades:4-10"
    comparability_regime: school_grades
  learning_gains_ela_l25:
    direction: HIGHER_BETTER
    scale: percent
    n_rule: "grades:4-10;share:0.25"
    comparability_regime: school_grades
  learning_gains_math_l25:
    direction: HIGHER_BETTER
    scale: percent
    n_rule: "grades:4-10;share:0.25"
    comparability_regime: school_grades
  graduation_rate_4yr:
    direction: HIGHER_BETTER
    scale: percent
    n_rule: denominator
    comparability_regime: graduation
  chronic_absenteeism_rate:
    direction: LOWER_BETTER
    scale: percent
    n_rule: denominator
    comparability_regime: chronic_absenteeism
  absent_21plus_rate:
    direction: LOWER_BETTER
    scale: percent
    n_rule: denominator
    comparability_regime: chronic_absenteeism
  attendance_rate:
    direction: HIGHER_BETTER
    scale: percent
    # A share of student-DAYS, not of students: a binomial on N students puts
    # the per-student SD at ~25 pp and made sampling noise 36% of the z
    # denominator (review 2026-09-16b, N11). No per-cell noise term: z = resid / tau.
    sampling_error: none
    n_rule: enrollment
    comparability_regime: chronic_absenteeism
  sesir_total_per_100:
    direction: LOWER_BETTER
    scale: rate_per_100
    n_rule: enrollment
    comparability_regime: enrollment