Skip to content

Add cps_check_codes() warning and document 2022+ No Response discontinuity - #70

Open
Franky58-art wants to merge 3 commits into
masterfrom
fix-2024-no-response
Open

Add cps_check_codes() warning and document 2022+ No Response discontinuity#70
Franky58-art wants to merge 3 commits into
masterfrom
fix-2024-no-response

Conversation

@Franky58-art

Copy link
Copy Markdown
Collaborator

Thanks for reporting this, Dr. Hanmer — confirmed, and it turns out to predate 2024.

The -9 ("No Response") code is entirely absent from PES1/VRS_VOTE in both the 2022 and 2024 data, not just 2024. Reading the full raw files and tabulating every code present in PES1:

Year -9 (No Resp) -1 (Not in Univ) 1 (Yes) 2 (No)
2016 6.6% 38.3% 38.5% 14.6%
2018 8.1% 38.0% 33.8% 17.9%
2020 7.6% 38.9% 41.1% 10.5%
2022 0% 48.9% 31.2% 17.8%
2024 0% 48.5% 38.2% 11.6%

The adult share of -1 roughly doubles right when -9 disappears. This suggests the Census Bureau folded "No Response" adults into the generic "Not in Universe" bucket starting in 2022, without documenting the change.

Age composition of the -1 group:

Year -1 count % of -1 group aged 18+
2016 58,302 13.1%
2018 54,301 12.6%
2020 52,224 11.6%
2022 61,611 23.4%
2024 61,494 22.4%

Why this matters for cpsvote: cps_label() treats -1 as missing (NA) before cps_recode_vote() ever runs. Through 2020, a -9 respondent was counted as "No" for cps_turnout and correctly dropped to NA for hurachen_turnout. Since 2022, that same person (now coded -1) is wiped to NA at the labelling step and never reaches the recode logic. cps_turnout's denominator silently shrinks, inflating the naive estimate.

Numbers for 2024:

  • Naive turnout, PWSSWGT-weighted, excluding only -1s: 73.4% — matches the ~74% figure in the issue
  • Hur-Achen adjusted turnout: 62.8% — in the neighborhood of the ~65% CPS-reported rate

Changes made in this PR:

  • Added cps_check_codes(), which warns when a documented code is completely absent from the data. cps_recode_vote() now calls this automatically.
  • Documented the discontinuity in vignette("voting").

Not yet addressed: using respondent age to split the -1 bucket back into "Not in Universe" vs. "No Response" for 2022+. That would be a substantive methodological change held for discussion. Input welcome.

Franky58-art and others added 3 commits July 21, 2026 16:55
Documents two validation comparisons (CPS standard weight vs. McDonald
VEP, and cpsvote vs. Census Table 4a) plus the 2022+ No Response
discontinuity from issue #69. Published as a pkgdown article rather
than a vignette since it downloads external data and is meant as a
standing reference, not CRAN-checked documentation.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant