Skip to content

Assign official Census metro areas to congressional districts for GEOADJ #482

@MaxGhenis

Description

@MaxGhenis

Summary

Currently, policyengine-us-data calculates GEOADJ for congressional districts using ACS median rent data and the GEOADJ formula. This produces unofficial estimates that don't match official Census Bureau SPM thresholds.

Proposed Solution: Census Block Assignment

Recommended approach: For each congressional district, assign a population-weighted random census block, then look up everything from that block.

Why census blocks?

  1. One crosswalk, infinite lookups - Build CD → block once, then derive metro, county, tract, PUMA, etc. from block. No need for separate CD→metro, CD→county crosswalks.

  2. Matches CPS methodology - Census assigns people to geographies, then looks up GEOADJ. This replicates that for simulated CD populations.

  3. Captures within-CD heterogeneity - A CD spanning both SF metro (GEOADJ 1.95) and California Nonmetro (0.96) would naturally get a population-weighted mix.

  4. Reusable infrastructure - Same block assignment could feed other geography-dependent calculations beyond SPM.

  5. More accurate for edge cases - CDs that span metro boundaries, rural/urban splits, etc.

Implementation

  1. Get census block population data (Decennial Census PL 94-171)
  2. Build CD → census block crosswalk with population weights
  3. For each simulation, randomly sample a block within CD (population-weighted)
  4. Look up metro area (or state metro/nonmetro) for that block
  5. Use official GEOADJ from Census SPM threshold data

Data Sources

Context

  • The spm-calculator web app now only uses official Census metro areas
  • The unofficial CD GEOADJ estimates (computed from ACS rents with arbitrary 0.7-1.5 clamp) have been removed
  • This change would allow proper CD-level thresholds using authoritative data

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