SPB Git

spb/wp29_uqo

Public

# F1-conf-02 — Balanced-panel mean life expectancy, 2000–2022

# Question

How much did life expectancy at birth (World Bank WDI SP.DYN.LE00.IN) change between 2000 and 2022 across a fixed set of countries? The estimand is the unweighted mean over countries that have a recorded value in every year 2000–2022 (the balanced panel), with each country counted once. I also report a naive descriptive baseline for 2022: the mean over every distinct country with a 2022 value.

# Data and exclusions

Input: data/life_expectancy_panel.csv, 439 data rows (n_input_rows), 20 distinct iso3 codes (n_countries_total), years 2000–2022. I found three data problems, all listed in data_issues:

  1. Duplicate Türkiye rows. TUR appears twice for each of the 23 years, once as "Turkey" and once as "Turkiye", with identical values. This is an assembly duplicate. I kept one row per (iso3, year). Because the values are identical, no number depends on which row is kept.
  2. One missing value. The CHE (Switzerland) 2007 cell is empty. It was not imputed, so CHE is incomplete.
  3. Short coverage for four countries. BGD, ETH, IND and NGA only have rows for 2011–2022; their 2000–2010 rows are absent. These values were not looked up or imputed, so all four are incomplete.

Exclusion ledger (out/exclusions.csv): 439 rows read → 439 after the year-window filter (0 removed) → 416 after deduplication (23 removed) → 415 after dropping the missing value (1 removed) → 345 after keeping only balanced countries (70 removed). The final 345 is n_analysed, i.e. 15 countries × 23 years.

# Method

I deduplicated on (iso3, year) after confirming the duplicate values were identical; the script stops if duplicate values conflict. I then dropped empty values and defined the balanced set as the iso3 codes with 23 distinct years of recorded values. For 2000 and 2022 I took the simple unweighted mean over that set. The baseline is the unweighted mean over every distinct iso3 with a recorded 2022 value, after deduplication. Everything is deterministic: no randomness is used, so random_seed = null. out/analysis.py regenerates all outputs.

# Results

  • Balanced set: 15 countries (n_countries_balanced): AUS, AUT, BEL, CAN, DEU, ESP, FRA, GBR, ITA, JPN, KOR, NLD, SWE, TUR, USA (balanced_countries). Five countries are incomplete (n_countries_incomplete): BGD, CHE, ETH, IND, NGA (incomplete_countries).
  • Balanced mean in 2000: 78.060 years (mean_2000_balanced = 78.060267).
  • Balanced mean in 2022: 81.553 years (mean_2022_balanced = 81.553067).
  • Change from 2000 to 2022: +3.493 years (change_2000_2022_balanced = 3.4928).
  • Baseline, 2022 mean over all 20 countries with a 2022 value: 78.692 years (mean_2022_all_available, n_countries_2022_available = 20). That is 2.861 years below the balanced 2022 mean (baseline_minus_balanced_2022 = −2.861067). The gap exists because the baseline includes the four lower-life-expectancy countries that drop out of the balanced set. The baseline should not be compared with the 2000 balanced mean.
  • Feasibility: feasibility = "complete". The estimand as defined could be computed in full.

# Uncertainty

These are exact descriptive means over a fixed, fully listed set of countries, so I did not compute a sampling confidence interval. The remaining uncertainty is about measurement and composition, not sampling:

  • WDI estimates are model-based and get revised between releases.
  • Values are rounded to 3 decimals, which shifts the means by less than 0.001 years.
  • The balanced set depends on assembly errors in the file (see the next section).

# Limitations and open issues

  • The balanced set is not representative. It contains only high-income OECD countries plus Türkiye. All four low and lower-middle-income countries (BGD, ETH, IND, NGA) drop out, apparently because their 2000–2010 rows were lost in the narrower of the two extractions, not because the World Bank has no data for those years. Switzerland drops out because of a single empty 2007 cell. The +3.49-year change therefore describes this 15-country set only and cannot be generalised to all 20 countries. The task rules forbid looking up or imputing the missing values, so I did not try to recover them.
  • The means are unweighted country means, not population-weighted.
  • The country label kept for TUR is "Turkiye". This is a cosmetic choice and affects no number.
Files · main
Menu

Theme