PolicyEngine / PolicyEngine/microcosm
Calibrate the undocumented population count as a Ledger fact (weights lane follow-up to #266)
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 0
- Forks
- 4
- Avg merge
- 1d 3h
- Merged PRs (30d)
- 94
Description
#266 (fixing #225) assigns ssn_card_type / immigration_status_str labels from ASEC citizenship via the residual method, with only the undocumented worker/student EAD split forced to published controls. The total undocumented population is deliberately emergent (13.3M on the 2024 ASEC) and is only release-gated against a coarse plausibility band around Pew's 11.0M (2022) anchor — per the charter, representation belongs to calibration, not to label churn in a source stage.
The proper reconciliation is a calibration target in the facts lane:
- Target: weighted person count with
ssn_card_type == NONE(and optionally the non-citizen total,!= CITIZEN), national grain to start. - Value + SE: a published unauthorized-population estimate with its uncertainty — Pew (11.0M in 2022, with later vintages as they publish), DHS OHSS, and/or CBO's 2023–24 estimates. Ledger should own the source package so the value carries a citation and standard error like every other fact, and vintage updates flow through normally.
- Why weights and not labels: CPS undercoverage of unauthorized immigrants is household-level undercoverage; upweighting households that contain undocumented members (mixed-status households included) is the honest mechanism, unlike the incumbent's family-correlation step that relabeled Medicaid/Social Security recipients as undocumented to hit a total.
- Protected-family candidate: once active, the SSN composition belongs in the protected-families list so a contribution can't degrade it silently — and the OBBBA CTC SSN reform-validation line (how #225 was caught) becomes its out-of-sample check.
Depends on #266 landing (the label surface must exist before a target can bind on it).
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reading #266 and confirming that its undocumented labels have landed, then inspect the facts-lane calibration flow and the existing source-package handling. Define a national weighted-person target for ssn_card_type == NONE, with a cited estimate and standard error, and use the OBBBA CTC SSN reform-validation line as the out-of-sample check; protected-family coverage should prevent silent regression.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- data
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100