F6-dev-01 — Income and life expectancy across countries (Preston curve)
Question
Does the cross-country association between real income per capita and life expectancy (the Preston curve) hold in the most recent year with usable World Bank data, and how strong is it? Estimand: the slope β of the linear projection LE_i = α + β·ln(GDPpc_i) + ε_i over countries/economies (equal weights), with heteroskedasticity-robust uncertainty. This is descriptive/associational; no causal claim is made.
Data and exclusions
- Inputs:
data/wb_indicators.csv(2,349 rows, 261 entities × 2015–2023) anddata/wb_entities.csv(296 rows), WDI indicators NY.GDP.PCAP.PP.KD (GDP pc, PPP, constant 2021 int'l $) and SP.DYN.LE00.IN (life expectancy at birth). Files read with only empty strings treated as missing (so a code like "NA" would not be silently turned into NaN). - Audit: no duplicate (iso3, year) rows; every iso3 in the indicator file is in the metadata; GDP is strictly positive. Two aggregate names differ between files only by trailing whitespace (LCN, SSF); joining is done on iso3.
- Aggregates: 44 aggregate entities (396 rows) excluded (region ==
Aggregates), leaving 217 countries/economies per year. - Analysis year: both indicators are observed for 199 countries in every year 2015–2022 and 197 in 2023; the most recent year with ≥150 is 2023.
- Missing in 2023: 20 countries/economies are dropped, all for missing GDP per capita (life expectancy is reported for all): ASM, CHI, CUB, ERI, GIB, GUM, IMN, LIE, MAF, MCO, MNP, NCL, PRK, PYF, SSD, SYR, VEN, VGB, VIR, YEM. No imputation. n = 197 analysed.
- Implausible time-series volatility detected in life expectancy: Central African Republic (e.g. 31.5 in 2019, 18.8 in 2022, 57.4 in 2023), South Sudan (35.4 → 51.9 between 2017 and 2018), and West Bank & Gaza (76.7 in 2022 → 65.2 in 2023, consistent with the Gaza war). Only the 2023 values enter the estimate (SSD is anyway excluded for missing GDP). Values were kept as published, and a sensitivity check drops these entities. All issues are listed in
results.json → data_issues.
Method
- Baseline (no-information model): predict every country's LE with the sample mean; its RMSE equals the population SD of LE.
- Main model: OLS of LE on ln(GDPpc), one equally weighted observation per country. Fit is reported as the in-sample residual RMSE and R². The log specification is the standard Preston-curve form; a quadratic term in ln(GDPpc) was tested as a check on functional form.
- Uncertainty: HC3 heteroskedasticity-robust standard error (the most conservative of HC0–HC3 in small/moderate samples with leverage points), with a normal-based (z) 95% CI, β ± 1.96·SE. Checks: HC0/HC1/HC2 SEs; nonparametric pairs bootstrap (2,000 resamples, seed 20261029); slope without the volatile-LE entities; slope without high-influence points (Cook's D > 4/n); same regression in 2019 (pre-pandemic). Robustness numbers are in
out/sensitivity.json, produced byout/analysis.py.
Results
| quantity | value |
|---|---|
| analysis year / n analysed / n excluded (missing) | 2023 / 197 / 20 |
| baseline RMSE (mean only) | 7.08 years |
| OLS residual RMSE | 3.59 years (≈49% lower than baseline) |
| Pearson r (ln GDPpc, LE) | 0.861 |
| R² | 0.742 |
| slope β | 5.27 years per log-point |
| intercept α | 22.57 years |
| HC3 SE of β | 0.211 |
| 95% CI for β | [4.85, 5.68] |
| conclusion | positive_effect |
Interpretation: across countries in 2023, a 10% higher GDP per capita goes with about 0.50 more years of life expectancy (β·ln 1.1), and a doubling goes with about 3.65 more years (β·ln 2), on average. Figure 1 (out/figure1.png) shows the scatter and fitted line. Table 1 (out/table1.csv) gives means by World Bank income group:
| income level | n | mean ln GDPpc | mean LE |
|---|---|---|---|
| Low income | 20 | 7.61 | 63.19 |
| Lower middle income | 46 | 8.69 | 67.81 |
| Upper middle income | 58 | 9.69 | 73.70 |
| High income | 73 | 10.82 | 79.69 |
Life expectancy goes up steadily across the income groups.
Uncertainty
- Robust SEs barely depend on the variant: HC0 0.207, HC1 0.208, HC2 0.209, HC3 0.211. The pairs-bootstrap 95% percentile interval [4.87, 5.69] is almost the same as the HC3 interval.
- Excluding CAF and PSE (volatile LE series) gives β = 5.23; excluding the 9 observations with Cook's D > 4/n (the most influential are NGA, GRL, TCD, SLB, GUY) gives β = 5.42. Both are inside the main CI.
- Functional form: a quadratic term in ln(GDPpc) is not significant (coef 0.17, HC3 p = 0.34), so in this year the linear-in-log form gives a good description.
- In 2019 (pre-COVID) the slope is 5.92, above the 2023 CI. The slope is therefore not fixed over time. Pandemic-era mortality and the WPP-based LE revisions may affect the gradient, so the 2023 value should not be read as a structural constant.
- The CI covers sampling-type uncertainty only. Measurement error in GDP-PPP and in modelled LE estimates is not included.
Limitations and open issues
- What would invalidate the result: (i) systematic error in the 2023 life-expectancy estimates. For many low-income countries these are model-based UN WPP projections rather than vital-registration data, and the CAF/SSD/PSE series show that single-year values can shift by 10–20 years between revisions or events. If such errors are correlated with income, β is biased. (ii) Errors in PPP conversion (2021 ICP benchmark), which are largest for poor and small economies. Classical error in ln(GDPpc) would bias β toward zero (attenuation). (iii) Non-random exclusion. The 20 dropped economies are mostly rich small territories/microstates (Monaco, Liechtenstein, Channel Islands…) and conflict/sanctioned states (Yemen, Syria, South Sudan, Venezuela, DPRK, Eritrea, Cuba). Dropping both tails could change β, and the direction of the effect is not identified from these data.
- What was not checked: population weighting (the estimand is equally weighted, so China/India count the same as Nauru); other years beyond the 2019 comparison; data vintages (the API returns current revisions, so results may change on re-download); controls (health spending, education, region, HIV prevalence, conflict). A regression with controls would answer a different question and is outside this estimand.
- Main threats to interpretation: the association is not causal. Reverse causality (health → productivity) and confounding by institutions, education and disease environment are both plausible. Heteroskedasticity and large negative residuals (Nigeria −15.3 y, Greenland, Nauru, Equatorial Guinea, Guyana: resource-rich or special cases) show that income explains only about three-quarters of the cross-country variance. Countries cannot be treated as independent draws from a population, so the "sampling" CI is a conventional summary, not a frequentist statement about a superpopulation.
- The analysis year is set mechanically by the ≥150 rule. 2023 has only 2 fewer complete cases than 2022, so the choice does not hinge on the threshold.