This vignette explores regional variation in life expectancy across Western Europe, based on research by Bonnet et al. (2026) published in Nature Communications.
Each row represents aggregated population statistics for one region-year-sex combination, NOT individual survey responses.
| region_code | year | sex | life_expectancy | What this means |
|---|---|---|---|---|
| FR10 | 2019 | Male | 82.5 | Average LE for all males in Île-de-France in 2019 |
| FR10 | 2019 | Female | 87.1 | Average LE for all females in Île-de-France in 2019 |
| FR10 | 2019 | Total | 84.8 | Average LE for entire population of Île-de-France in 2019 |
The underlying Eurostat data represents ~400 million people across Western Europe. Life expectancy is calculated from official death registrations and census population counts—not a sample survey.
Row count formula: regions × years × 3 sex categories
Since the mid-2000s, Western Europe has fragmented into: - Vanguard regions: Continued progress (~2.5 months/year gain for men) - Laggard regions: Stalled improvement (<0.5 months/year gain)
This divergence reversed decades of convergence observed in the 1990s.
The ~7 year gap between vanguard and laggard regions translates to a substantial lifetime difference in microlives:
2.6 years LE gap = 45,496 lifetime microlives = 3.1 microlives/day
Interpretation: Living in a vanguard region vs a laggard region corresponds to ~3.1 microlives per day—roughly equivalent to the benefit of 30 minutes of daily exercise.
Data period: 2019 (pre-COVID baseline year, last year before pandemic distortions)
Column definitions:
| Column | Definition | Units |
|---|---|---|
region_name |
NUTS2 administrative region | — |
country_code |
ISO 2-letter country code | — |
life_expectancy |
Period life expectancy at birth | Years |
microlives_vs_eu_avg |
Daily microlives gained/lost vs EU average | Microlives/day |
classification |
Vanguard (top 20% + growing), Laggard (bottom 20% or stagnant), Average | — |
Key findings:
The divergence became pronounced after 2005:
Use regional_mortality_multiplier() to adjust baseline micromort estimates by location:
Application: If the baseline risk for an activity is 10 micromorts, the location-adjusted risk in Paris would be approximately 10 × 0.93 = 9.3 micromorts (7% lower due to favorable regional factors).
IMPORTANT: These regional statistics reflect population averages, not individual-level causation.
High life expectancy in “vanguard” regions results from multiple interacting factors:
| Factor | Mechanism |
|---|---|
| Healthcare access | Better hospitals, preventive care |
| Socioeconomic composition | Higher income, education levels |
| Selection effects | Healthy/wealthy people move to desirable regions |
| Historical factors | Long-term infrastructure investments |
| Cultural factors | Diet, social cohesion, lifestyle norms |
Moving to Switzerland will NOT automatically extend your life. The regional advantage reflects the aggregate characteristics of people who already live there.
The regional classification methodology follows Bonnet et al. (2026):
Bonnet F, et al. “Potential and challenges for sustainable progress in human longevity.” Nature Communications 17, 996 (2026). doi:10.1038/s41467-026-68828-z
Raw data from Eurostat demo_r_mlifexp dataset. Interactive exploration available at the ReLoG_Europe tool.
| Function | Purpose |
|---|---|
regional_life_expectancy() |
Full dataset with filters |
vanguard_regions() |
Top-performing regions only |
laggard_regions() |
Stagnating regions only |
regional_mortality_multiplier() |
Location-based risk adjustment |
sessionInfo()
R version 4.6.1 (2026-06-24)
Platform: x86_64-pc-linux-gnu
Running under: Ubuntu 26.04 LTS
Matrix products: default
BLAS: /usr/lib/x86_64-linux-gnu/openblas-pthread/libblas.so.3
LAPACK: /usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblasp-r0.3.32.so; LAPACK version 3.12.0
locale:
[1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
[3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8
[5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8
[7] LC_PAPER=en_US.UTF-8 LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
time zone: Etc/UTC
tzcode source: system (glibc)
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] DT_0.34.0 targets_1.12.0
loaded via a namespace (and not attached):
[1] base64url_1.4 gtable_0.3.6 jsonlite_2.0.0 dplyr_1.2.1
[5] compiler_4.6.1 tidyselect_1.2.1 callr_3.8.0 jquerylib_0.1.4
[9] scales_1.4.0 yaml_2.3.12 fastmap_1.2.0 ggplot2_4.0.3
[13] R6_2.6.1 labeling_0.4.3 generics_0.1.4 igraph_2.3.3
[17] knitr_1.51 htmlwidgets_1.6.4 backports_1.5.1 tibble_3.3.1
[21] maketools_1.3.2 rprojroot_2.1.1 RColorBrewer_1.1-3 bslib_0.11.0
[25] pillar_1.11.1 rlang_1.2.0 cachem_1.1.0 xfun_0.59
[29] sass_0.4.10 sys_3.4.3 S7_0.2.2 otel_0.2.0
[33] cli_3.6.6 withr_3.0.3 magrittr_2.0.5 crosstalk_1.2.2
[37] ps_1.9.3 grid_4.6.1 digest_0.6.39 processx_3.9.0
[41] secretbase_1.3.0 lifecycle_1.0.5 prettyunits_1.2.0 vctrs_0.7.3
[45] evaluate_1.0.5 glue_1.8.1 data.table_1.18.4 farver_2.1.2
[49] codetools_0.2-20 buildtools_1.0.0 rmarkdown_2.31 tools_4.6.1
[53] pkgconfig_2.0.3 htmltools_0.5.9 micromort 0.1.0 | Git 94d93d2 | R 4.5.2 | Built 2026-04-18 12:20:56