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

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions