F6-dev-01 — Income and life expectancy across countries (Preston curve), 2023
Question
Across countries/economies (each weighted equally), how does life expectancy at birth (LE, years) relate to the natural log of GDP per capita (PPP, constant 2021 international $) in the most recent year with usable World Bank WDI data? The estimand is the slope β of the linear projection LE = α + β·ln(GDPpc) + ε. This is a descriptive association, not a causal effect.
Data and exclusions
- Inputs:
wb_indicators.csv(2,349 entity-year rows, 2015–2023) andwb_entities.csv(296 entities). Files were read with only empty strings treated as missing, so the ISO codeNAM(Namibia) is not parsed as NA. There are no duplicate (iso3, year) keys, and every iso3 code in the indicators file matches an entity. - Aggregates: 44 entities in the indicators file have
region == "Aggregates"(regions, income groups and so on). They were all dropped, leaving 217 countries/economies. - Analysis year: there are 199 complete countries in each year 2015–2022 and 197 in 2023. Every year clears the 150 threshold, so the rule picks 2023.
- Missing data in 2023: 20 countries/economies are dropped. Each has life expectancy but no GDP per capita: ASM, CHI, CUB, ERI, GIB, GUM, IMN, LIE, MAF, MCO, MNP, NCL, PRK, PYF, SSD, SYR, VEN, VGB, VIR, YEM. Nothing was imputed. n = 197 countries are analysed.
- Other data issues found: (i) some entity names have trailing whitespace (harmless, since the join is on iso3); (ii) the LE series for CAF and SSD jump around implausibly within the panel (for example, CAF is 18.8 years in 2022 and 57.4 in 2023). Only 2023 values are used, and CAF's 2023 value looks plausible. I report a sensitivity check that drops CAF. All issues are also listed in
results.json → data_issues.
Method
- Baseline (no information): predict every country's LE with the cross-country mean. Its RMSE is the population SD of LE.
- Model: OLS of LE on a constant and ln(GDPpc), one unweighted observation per country. In-sample RMSE and R² are reported.
- Uncertainty: HC3 heteroskedasticity-robust standard error for β. The 95% CI is β ± 1.96·SE (normal approximation; with 195 df a t-based interval would be practically the same).
- Sensitivity checks (
out/sensitivity.json, produced byanalysis.py): other SE types (classical, HC0–HC2); dropping CAF; dropping the 9 high-influence points with Cook's D > 4/n; adding a quadratic term in ln(GDPpc); Spearman correlation; and the slope in each year from 2015 to 2023. - Deliverables: Figure 1 (
figure1.png) is a scatter by income group with the OLS line. Table 1 (table1.csv) gives means by World Bank income level. No randomness is involved (the seed is fixed at 0 anyway).
Results
| quantity | value |
|---|---|
| analysis year / n analysed / n excluded (missing) | 2023 / 197 / 20 |
| Baseline RMSE (mean-only) | 7.08 years |
| Model RMSE (OLS residuals) | 3.59 years |
| Pearson r (ln GDPpc, LE) | 0.861 |
| R² | 0.742 |
| Slope β | 5.27 years per log-point |
| Intercept α | 22.57 years |
The Preston curve holds clearly in 2023. A 1-unit (about 2.7-fold) difference in GDP per capita goes with about 5.3 more years of life expectancy, or about 3.65 years (5.27·ln 2) per doubling. Knowing income roughly halves the prediction error compared with the mean-only baseline (7.08 → 3.59 years). Table 1 shows the same pattern by income level: mean LE is 63.2 years in low-income countries (n=20), 67.8 in lower-middle (n=46), 73.7 in upper-middle (n=58) and 79.7 in high-income countries (n=73).
The largest negative residuals (countries living much shorter than their income predicts) are Nigeria (−15.3 years), Greenland, Nauru, Equatorial Guinea and Guyana. Several of these are economies driven by oil or other resources. The largest positive residuals are Solomon Islands, Jordan, Lebanon, Malawi and the Maldives.
Uncertainty
- HC3 SE = 0.211, so the 95% CI for β is [4.85, 5.68]. It lies entirely above zero, giving conclusion code
positive_effect. - The SE barely changes with the estimator: classical 0.222, HC0 0.207, HC1 0.208, HC2 0.209.
- The point estimate is stable across sensitivity checks: 5.24 without CAF, and 5.42 after dropping the 9 points with Cook's D > 4/n. The quadratic term in ln(GDPpc) is small and not significant (0.17, HC3 p = 0.34), so over this range the log-linear form is adequate. Spearman ρ = 0.87.
- Over time, the slope drifts down from about 5.9 (2015–2019) to 5.6–5.7 (2020–2022) and 5.27 (2023). That is a descriptive observation only. I did not formally test it, and it partly reflects WDI vintage and estimation choices.
Limitations and open issues
- What would invalidate the result: (i) a systematic revision of the UN WPP life-expectancy estimates or the ICP 2021 PPP benchmarks (2023 values for many low-income countries are modelled or extrapolated, not observed); (ii) mismeasured GDP per capita that correlates with LE, for example in conflict economies or where resource rents inflate GDP. Either would bias β. The sign is extremely robust (the CI is about 23 SEs from zero), but the size of β is less secure.
- Selection from missing data: the 20 excluded economies are not random. They include conflict or sanctioned states (SSD, SYR, YEM, VEN, PRK, CUB, ERI) and small rich territories (MCO, LIE, GIB, IMN, CHI, etc.). The poor conflict states would probably sit below the line and the rich territories near or above it, so their net effect on β is unknown. I did not try any bounding or imputation.
- Not causal: β mixes up the effect of income with health technology, institutions, education, disease environment (HIV, malaria), inequality and reverse causation (health → income). Nothing is claimed about what would happen if a country's income changed.
- Equal weighting: each economy, including micro-states, counts the same as India or China. A population-weighted slope would answer a different question and was not estimated.
- Not checked: out-of-sample prediction (the RMSEs are in-sample, and with two parameters and n = 197 optimism is small); spatial or regional correlation of residuals, which robust SEs do not handle and which would probably widen the CI; alternative functional forms beyond a quadratic in logs; uncertainty in the underlying WDI estimates themselves (treated here as fixed and error-free); and the reasons for the 2023 drop in slope.
- Data quality flags: the volatile CAF and SSD LE series suggest crisis-mortality modelling or revision artefacts. I did not audit these values beyond spot checks, and similar problems may exist undetected in other countries.