Parent: #248
Problem
Populace US does not currently expose the SNAP reported amount or SNAP take-up input that policyengine-us-data carried through for microsimulation.
In PolicyEngine-US:
snap_reported is an SPM-unit input used when gov.simulation.reported_snap is enabled.
takes_up_snap_if_eligible gates simulated SNAP benefits in microsimulation mode.
takes_up_snap_if_eligible defaults to True, so when it is absent, every eligible SPM unit is treated as taking up SNAP.
The current Populace H5 has raw CPS/SPM SPM_SNAPSUB on the person table, but does not expose:
snap_reported
takes_up_snap_if_eligible
This is a material parity gap with policyengine-us-data, especially for SNAP enrollment/distribution analysis and OBBBA SNAP work-requirement exposure.
Evidence
Legacy policyengine-us-data:
- maps
snap_reported = SPM_SNAPSUB in add_spm_variables;
- creates
takes_up_snap_if_eligible in add_takeup;
- prioritizes reported SNAP recipients when assigning the take-up indicator.
On the local legacy enhanced_cps_2024.h5 snapshot:
snap_reported is present on SPM units;
takes_up_snap_if_eligible is present on SPM units;
- weighted reported SNAP receipt is not universal, and the take-up flag is not all true.
On the Populace 2024 H5 used in the SNAP audit:
- raw
SPM_SNAPSUB is present;
snap_reported is absent;
takes_up_snap_if_eligible is absent.
Proposed Scope
- Aggregate raw
SPM_SNAPSUB to the PolicyEngine SPM-unit grain and expose it as snap_reported.
- Add a Populace-owned
takes_up_snap_if_eligible assignment.
- Preserve reported SNAP recipients as true anchors where possible.
- Use the same deterministic/stable-random pattern used for other Populace take-up assignments.
- Add diagnostics comparing:
- reported SNAP SPM units / households,
- simulated eligible units,
- take-up units,
- final SNAP recipients and spending.
Acceptance Criteria
snap_reported exists in the Populace US output at SPM-unit grain.
takes_up_snap_if_eligible exists in the Populace US output at SPM-unit grain.
- The take-up flag is not a degenerate all-true default.
- Reported SNAP recipients are preserved as take-up recipients unless explicitly documented otherwise.
- Tests cover schema presence, deterministic assignment, and non-degenerate weighted take-up distribution.
Related
Parent: #248
Problem
Populace US does not currently expose the SNAP reported amount or SNAP take-up input that
policyengine-us-datacarried through for microsimulation.In PolicyEngine-US:
snap_reportedis an SPM-unit input used whengov.simulation.reported_snapis enabled.takes_up_snap_if_eligiblegates simulated SNAP benefits in microsimulation mode.takes_up_snap_if_eligibledefaults toTrue, so when it is absent, every eligible SPM unit is treated as taking up SNAP.The current Populace H5 has raw CPS/SPM
SPM_SNAPSUBon the person table, but does not expose:snap_reportedtakes_up_snap_if_eligibleThis is a material parity gap with
policyengine-us-data, especially for SNAP enrollment/distribution analysis and OBBBA SNAP work-requirement exposure.Evidence
Legacy
policyengine-us-data:snap_reported = SPM_SNAPSUBinadd_spm_variables;takes_up_snap_if_eligibleinadd_takeup;On the local legacy
enhanced_cps_2024.h5snapshot:snap_reportedis present on SPM units;takes_up_snap_if_eligibleis present on SPM units;On the Populace 2024 H5 used in the SNAP audit:
SPM_SNAPSUBis present;snap_reportedis absent;takes_up_snap_if_eligibleis absent.Proposed Scope
SPM_SNAPSUBto the PolicyEngine SPM-unit grain and expose it assnap_reported.takes_up_snap_if_eligibleassignment.Acceptance Criteria
snap_reportedexists in the Populace US output at SPM-unit grain.takes_up_snap_if_eligibleexists in the Populace US output at SPM-unit grain.Related