Replies: 2 comments
-
Addendum: anchoring to Census, not just to each otherFair challenge from review: the tables above only show the two datasets disagreeing — they don't say which one is wrong. Anchoring the implied national rates to the official Census SPM ("Poverty in the United States: 2024", P60-287, Sept 2025):
Populace is the one near the Census anchor (within ~0.4pp overall / ~1.2pp child, and 2026-vs-2024 timing explains some of that). The per-state ECPS files run ~6pp hot on both measures — so the state-level gaps in the tables above are better read as "the per-state files overstate poverty" than "populace understates it." That reframes the migration question: the concern is less about populace's levels and more that switching would drop CPID's headline poverty rates toward the Census-consistent level, a large but defensible change that needs to be communicated deliberately. State-level anchoring is coming next: we're adding Census state SPM 3-year-average rates (overall + child) as out-of-sample validation rows in populace's reform-validation payload — same pattern as the state-credit outlays in PolicyEngine/populace#295 — so the calibration dashboard will show per-state poverty error for every build going forward. Caveat on state comparisons: state SPM 3-year averages carry wide CPS margins of error for small states; treat single-state gaps under a few pp as noise. |
Beta Was this translation helpful? Give feedback.
-
Decision: CPID switched to Populace (2026-07-07)PolicyEngine is standardizing all projects on Populace, and the Census anchoring above settled the levels question in its favor, so CPID made the switch (PR #56) — with the state-rate gaps acknowledged as work-in-progress in the rewritten methodology and tracked per release by the Census state SPM validation rows (populace#348). Two implementation notes for anyone following:
|
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Posted for review before any dataset migration decision (task: populace parity harness). Run completed 2026-07-01 on Modal:
restore_2021_expanded_ctccomputed for all 51 states on both datasets — the per-state calibrated ECPS files CPID uses in production, and the nationalpopulace_us_2024.h5filtered to each state (per-state filtering to avoid the full-frame OOM).TL;DR: do not switch CPID to populace yet. Demographics and reform dollar flows agree well (child counts mean 1.5% apart; 2021-CTC transfer totals mean 5.1% apart), but baseline child poverty levels diverge systematically — mean 5.7pp, max 11.7pp — with populace lower in every large-gap state. Switching would change every state's headline child-poverty rate, some by half (AL 23.5% → 11.8%). Since counts and transfers line up, this points at income/benefit imputation or calibration-target differences between the datasets rather than the state filtering itself.
Related evidence from the state-credit validation work (populace#295, incl. three-way cross-check): populace reproduces official state EITC outlays within ~10%, but under-6 credits (CA YCTC +38.7%, CO CTC +30.4%) run hot — a separate, smaller-magnitude issue.
cc @MaxGhenis @PavelMakarchuk
Populace vs per-state ECPS parity — 2021 CTC restoration, 2026
Test reform:
restore_2021_expanded_ctcacross all 51 states. Populace = national populace_us_2024.h5 filtered per state; ECPS = the 51 state-calibrated files CPID uses today.Headline agreement
Largest divergences (by baseline child-poverty gap)
Full 51-state table
National CTC transfer: populace $79.7B vs ECPS $81.4B (-2.1%)
Beta Was this translation helpful? Give feedback.
All reactions