Summarizes the per-capita and peer-cohort behavior changes for users upgrading from earlier 0.1 snapshots.
2.8 KiB
2.8 KiB
uscogdata 0.1.0 (development)
Per-capita denominators now use per-year Census F-33 population
cog_spending()andcog_revenue()previously divided all years' amounts by a single ACS 2018-2022 estimate (canonical_fips_xwalk.population_acs), producing biased per-capita values for time-series analysis. They now divide by the F-33populationrecorded on each gov-year via the newgov_population_yearlyview. Result tibbles gain apop_sourcecolumn with values"census_f33"or"unavailable".notesis updated to concatenate multiple notes with"; ".
Peer cohorts can be set to a chosen year
cog_find_peers()adds ayearargument (default: most recent year for which the target has an observed population ingov_population_yearly). The returned column previously namedpopulation_acsis nowpopulationand reflects the cohort year's vintage. The cohort year is attached to the returned tibble asattr(x, "cohort_year").cog_peer_compare()now stamps acohort_yearcolumn on its result (read from the peers tibble's attribute) and recordscohort_yearpluscohort_govidsin provenance. When the caller supplies a bare character vector instead of acog_find_peers()result,cohort_yearisNA.
Rollups exclude govs missing population
cog_geographic_rollup(per_capita = TRUE)drops rows whose government haspop_source == "unavailable"and records the dropped govids inprovenance$rollup$excluded_govids. This excludes special districts (type 4) and school districts (type 5) from per-capita rollups by design.
New: vignette and provenance metadata
- New vignette
population-denominatorscovers the four population sources, the type-4/5 coverage gap, the popyear quirk, and how to build moving-window peer cohorts manually. - Provenance gains
transformations$per_capita$popyear_rangeandpop_source_counts.cog_explain()renders both.
New features
cog_gov_search()gains a basket mode: passing vectorname/state/typearguments resolves multiple place names in one call and returns a tibble of canonical rows in input order, ready to pipe intocog_spending()/cog_revenue(). Per-row resolution follows an exact-then-substring matching algorithm with deterministic disambiguation; ambiguous and missing entries are surfaced via a sidecar audit tibble plus a single console summary message.- New exports
cog_basket_resolution()andcog_basket_unresolved()expose the basket sidecar for iterative query refinement.
Breaking changes
- The first formal of
cog_gov_search()was renamed frompatterntoname. All existing call sites incog_explorer/and the package itself use positional first-arg, so this rename is non-breaking in practice. Callers that passpattern = ...by name must update toname = ....