PolicyEngine / PolicyEngine/microcosm

Calibrate the undocumented population count as a Ledger fact (weights lane follow-up to #266)

Open
#267 0 comments 0 reactions 0 assignees View on GitHub

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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.