Poverty, not just geography, is the strongest predictor of worse state-level health outcomes in the US
CDC NCHS mortality, ACS poverty/income, USDA ERS rurality — 50 states + DC, most recent available 10-year window (2008-2017)
Summary
Across US states over roughly the last available 10-year window of comparable federal mortality data (2008-2017 — see data-availability note below), the strongest, most robust predictor of worse health is poverty, not rurality or region per se. A one-percentage-point increase in a state's poverty rate is associated with about 16 additional age-adjusted deaths per 100,000 residents per year, controlling for rurality and per-capita income (p=0.002, survives leave-one-out testing on all 50 states). Poverty rate alone correlates with state mortality at r=0.71. Rurality (share of population in USDA-defined nonmetro counties) adds a smaller, only marginally significant effect on top of poverty (p=0.06-0.09 depending on specification) — consistent with a large published literature finding a widening rural-urban mortality gap, but in this cross-sectional analysis the poverty gradient dominates. Once poverty is controlled for, per-capita income has no additional independent effect (its own bivariate correlation with mortality, r=-0.73, is almost entirely explained by its overlap with poverty, r=-0.78 between the two). In short: the kind of place with worse health is a poor place, whether or not it is also a rural place — the poorest 10 states average roughly 250 more deaths per 100,000 per year (about 30% higher) than the 10 richest.
What the published literature says
Three independent literatures converge on the same broad picture, which this analysis was built to test against real state data rather than just cite:
- Income/poverty and mortality: Opportunity Insights' Chetty et al. work found life expectancy differences of more than 10 years between the highest- and lowest-income Americans, and a cohort study in the American Journal of Preventive Medicine found roughly 3.3-fold higher all-cause mortality for people earning under $15,000/year versus $50,000+ (Opportunity Insights summary, Sarraju et al., AJPM 2024). RWJF and Health Affairs summarize the same poverty-health gradient at the policy level (RWJF, 2018; Health Affairs brief).
- Rural-urban gap: USDA's Economic Research Service found the rural/urban natural-cause mortality gap for ages 25-54 widened from 6% in 1999 to 43% by 2019, driven especially by rising mortality among rural women, and widest in the South (ERS, "The Nature of the Rural-Urban Mortality Gap"; reported in CBS News). CDC's own rural-health program attributes tens of thousands of preventable rural deaths a year to heart disease, cancer, injury and respiratory disease (CDC, Leading Causes of Death in Rural America). America's Health Rankings similarly finds the most-rural states scoring notably worse on its composite health index than the least-rural states (America's Health Rankings; overview at Rural Health Information Hub).
- A named 'rust/poverty belt': Coverage of state life-expectancy data specifically names a contiguous low-life-expectancy belt running Michigan-Ohio-Indiana-Kentucky-Tennessee-Arkansas-Oklahoma-Kansas — a region that is disproportionately both poor and (outside a few large metros) rural, which is exactly the confound this analysis tries to separate.
Method — what this report computed from AskAmerica data
Outcome: state-average age-adjusted all-cause mortality rate (deaths per 100,000, CDC NCHS multi-cause file, health.cdc_mortality). Predictors: average poverty rate (census.poverty_rate, ACS-based), USDA ERS Rural-Urban Continuum nonmetro population share by state (geo.rural_urban_continuum), and per-capita income (census.acs_income). Grain: 50 states (DC excluded as a non-state outlier — it is 100% 'metro' by construction and has anomalously high income and mortality simultaneously). n=50.
A genuine data-availability finding, not a choice: the question asked about "the last ten years," but health.cdc_mortality turns out to carry no all-cause mortality for any year after 2019 — its 2020-2023 rows exist only for cause_name='COVID-19', and its age-adjusted annual series stops at 2017 entirely (this is a real coverage gap in the CDC-sourced table, logged as a data-quality issue during this analysis, not a modeling choice). The county-grain County Health Rankings premature-death table that would have given a more current, finer-grained outcome (health.chr_premature_death) also failed to load (S3/storage error, also logged). Given that, the true "last ten years" of usable state all-cause mortality in this corpus is 2008-2017, which is what this report uses and states explicitly rather than silently substituting or reporting a false current-decade window.
Regression: OLS of mortality rate on poverty rate, nonmetro population share, and per-capita income (in $1,000s), all averaged over 2008-2017 (rurality is a single 2022 cross-section, the only vintage USDA has published in this corpus, applied as a structural characteristic). R²=0.57, F=20.7 (p<0.001, n=50). VIF for all three predictors is under 4 (no problematic multicollinearity, checked with correlation_matrix before regressing). The poverty coefficient was leave-one-out tested across all 50 states: it never flips sign or crosses p=0.05 when any single state is dropped (coefficient ranges 12.5 to 18.7 across the 50 refits) — a genuinely robust finding, not one state's artifact. A quintile-binned dose-response test on rurality alone (no controls) shows a mostly-monotonic rise in mortality with nonmetro share (trend p=0.05), consistent with, but weaker than, the poverty effect.
Regression results
| Intercept | 584.9 | 189.9 | 0.003 |
| Poverty rate (pp) | +16.3 | 5.1 | 0.002 |
| Nonmetro population share (pp) | +1.17 | 0.61 | 0.061 |
| Per-capita income ($1,000s) | -3.0 | 4.2 | 0.478 (n.s.) |
| Intercept | 584.9 | 189.9 | 0.003 |
| Nonmetro population share (pp) | +1.17 | 0.61 | 0.061 |
| Per-capita income ($1,000s) | -3.0 | 4.2 | 0.478 (n.s.) |
| Poverty rate (pp) | +16.3 | 5.1 | 0.002 |
| Intercept | 584.9 | 189.9 | 0.003 |
| Poverty rate (pp) | +16.3 | 5.1 | 0.002 |
| Nonmetro population share (pp) | +1.17 | 0.61 | 0.061 |
| Per-capita income ($1,000s) | -3.0 | 4.2 | 0.478 (n.s.) |
| Intercept | 584.9 | 189.9 | 0.003 |
| Poverty rate (pp) | +16.3 | 5.1 | 0.002 |
| Per-capita income ($1,000s) | -3.0 | 4.2 | 0.478 (n.s.) |
| Nonmetro population share (pp) | +1.17 | 0.61 | 0.061 |
| Nonmetro population share (pp) | +1.17 | 0.61 | 0.061 |
| Intercept | 584.9 | 189.9 | 0.003 |
| Poverty rate (pp) | +16.3 | 5.1 | 0.002 |
| Per-capita income ($1,000s) | -3.0 | 4.2 | 0.478 (n.s.) |
R²=0.574, adj. R²=0.547, n=50 states (DC excluded). Interpreting the coefficients together: a state one standard deviation poorer (roughly +3.5 points of poverty rate) is predicted to have about 57 more deaths per 100,000 per year than an otherwise-similar state — a large, statistically decisive effect. Rurality's own effect, net of poverty, is smaller and only marginally significant at conventional thresholds; income adds nothing once poverty is already in the model, because the two are themselves correlated at r=-0.78 across states.
Caveats
- This is a cross-sectional, state-level (n=50) correlational analysis, not a causal design — it cannot separate poverty's effect from correlated factors this analysis did not model (healthcare access, smoking/obesity prevalence, race/ethnicity composition, climate, insurance coverage). CDC's BRFSS behavioral risk-factor table, which would have let us test smoking/obesity as a mechanism, is present in the schema but only actually has one year (2018) loaded despite a declared 2008-2024 window — also logged as a data gap.
- State-grain analysis (n=50-51) cannot separate more than a couple of correlated explanations at once; a county-grain analysis would have more power to distinguish poverty from rurality, but the county-grain premature-death table failed to load in this session.
- The 2008-2017 window, forced by the CDC table's actual coverage, predates COVID-19, the 2021-2023 opioid-mortality surge, and other very recent shifts — the true "last ten years" (2016-2025) cannot currently be answered from this corpus's mortality table.
- Rurality is measured from a single 2022 snapshot, not a decade-long series, so it cannot itself show change over time, only used as a stable structural characteristic of each state.
What This Report Does Not Answer
- Over the last ten years (2016-2025 window): health.cdc_mortality has no usable all-cause mortality data past 2019 (2020-2023 rows only carry COVID-19 as cause_name; the age-adjusted annual series stops at 2017). This is a genuine, logged data-coverage gap, not a choice. The report uses 2008-2017, the most recent 10-year window the corpus actually supports for this outcome, and states this substitution explicitly rather than reporting a false 2016-2025 window.
Sources
- CDC NCHS state mortality, age-adjusted rate, 2008-2017 — health.cdc_mortality, cause_name='All causes', source_type='annual'
Show SQL
SELECT sr.state_name, AVG(CAST(m.age_adjusted_rate AS DOUBLE)) AS avg_mortality_rate FROM health.cdc_mortality m JOIN geo.state_ref sr ON sr.state_name=m.state WHERE m.cause_name='All causes' AND m.source_type='annual' AND CAST(m."year" AS INTEGER) BETWEEN 2008 AND 2017 GROUP BY sr.state_name - ACS state poverty rate, 2009-2017 — census.poverty_rate
Show SQL
SELECT state, AVG(poverty_rate_pct) AS avg_poverty_rate FROM census.poverty_rate WHERE CAST("year" AS INTEGER) BETWEEN 2009 AND 2017 GROUP BY state - USDA ERS Rural-Urban Continuum Codes, 2022 vintage — geo.rural_urban_continuum, population-weighted nonmetro share by state
Show SQL
SELECT state_fips, CAST(SUM(CASE WHEN metro_nonmetro='Nonmetro' THEN population ELSE 0 END) AS DOUBLE)/NULLIF(SUM(population),0) AS nonmetro_share FROM geo.rural_urban_continuum GROUP BY state_fips - ACS per-capita and median household income, 2009-2017 — census.acs_income, state level
Show SQL
SELECT state, AVG(per_capita_income) AS avg_income FROM census.acs_income WHERE county IS NULL AND CAST("year" AS INTEGER) BETWEEN 2009 AND 2017 GROUP BY state - OLS regression: mortality ~ poverty + rurality + income
Show tool call
ols_regression(outcome="avg_mortality_rate", predictors=["avg_poverty_rate","nonmetro_pct","avg_income_k"]) - Leave-one-out sensitivity test on poverty coefficient
Show tool call
sensitivity_analysis(term="avg_poverty_rate", group_col="state_name") - Correlation matrix and VIF check
Show tool call
correlation_matrix(columns=["avg_mortality_rate","avg_poverty_rate","nonmetro_pct","avg_income"]) - Rurality dose-response (quintile binning test)
Show tool call
quantile_binning_test(outcome="avg_mortality_rate", predictor="nonmetro_pct", bins=5) - USDA ERS: The Nature of the Rural-Urban Mortality Gap
- CBS News: City-country mortality gap widens amid persistent holes in rural health care access
- CDC: Leading Causes of Death in Rural America
- America's Health Rankings: state-by-state rural health insights
- Rural Health Information Hub: Rural Health Disparities Overview
- Opportunity Insights: The Association Between Income and Life Expectancy in the United States
- Sarraju et al., Impacts of Poverty and Lifestyles on Mortality, AJPM 2024
- RWJF: Health, Income, and Poverty
- Health Affairs: Health, Income, and Poverty brief