Skip to content

Carry SNAP reported amounts and take-up inputs through Populace US outputs #243

Description

@daphnehanse11

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

  1. Aggregate raw SPM_SNAPSUB to the PolicyEngine SPM-unit grain and expose it as snap_reported.
  2. Add a Populace-owned takes_up_snap_if_eligible assignment.
  3. Preserve reported SNAP recipients as true anchors where possible.
  4. Use the same deterministic/stable-random pattern used for other Populace take-up assignments.
  5. 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions