-
Notifications
You must be signed in to change notification settings - Fork 10
Closed
Description
Problem
is_pregnant is a pure input variable in policyengine-us with no formula and no data in any CPS dataset. This means zero people are pregnant in microsimulations, breaking:
- Medicaid pregnancy category enrollment
- WIC pregnancy eligibility and household size
- CHIP (standard + FCEP pathways)
- SNAP ABAWD exemptions
- Medicaid work requirement exemptions
- State TANF programs (MT, IL, DC, CO, MA, AK, WI)
- Various state Medicaid programs (CA immigration exemption, CO OmniSalud, etc.)
The CPS does not ask about current pregnancy status. A previous attempt (#164) used negative ages on newborns but was intentionally reverted (#168) because it created phantom household members affecting SNAP and filing status.
Approach
Step 1: Stochastic assignment in cps.py
- In
add_takeup(), use CDC WONDER age-specific birth rates to probabilistically assignis_pregnant = Trueto women aged 15-44 - Formula:
P(pregnant | age) = (birth_rate / 1000) * (39/52)where 39/52 accounts for 9-month pregnancy duration within a year - Use
seeded_rng("is_pregnant")for reproducibility - Store rates in
parameters/take_up/pregnancy.yamlwith state-level rates
Step 2: Calibration target via ETL
- Create
etl_pregnancy.pyfollowingetl_medicaid.pypattern - Target:
person_countwithis_pregnant == Trueconstraint per state - Source: CDC WONDER Natality birth counts by state
- Register "CDC WONDER Natality" as valid source in
create_field_valid_values.py
Key design decisions
- Set
current_pregnancieson the mother directly — do NOT create additional persons - Birth counts are a reasonable proxy (miscarriages/abortions excluded but downstream programs mostly serve women who carry to term)
- State-level rates only (age-group cross would hit CDC suppression thresholds)
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels