Skip to content

Impact Functions

Age-specific heat-mortality impact functions translate daily ambient temperature into a conditional probability of heat-attributable death for each exposed age group. They are built in NB04 (04_impact_functions_sensitivity.ipynb).

The framework distinguishes a main deterministic family, promoted to the canonical downstream slot used by NB05–NB08, from sensitivity families written alongside it for generalisability checks. Which family is main is selected by the IF_MAIN_FAMILY environment variable (default masselot_tail).


Main family — Masselot et al. (city- and age-specific)

The default deterministic impact functions come from a reconstruction of the city- and age-specific temperature–mortality relationships of Masselot et al. (2023) (heat- and cold-attributable mortality across 854 European cities; Zenodo record 10288665). Because these curves are estimated per city, the main IF is genuinely local rather than a European average applied uniformly.

For each city the reconstruction produces age-differentiated mean-damage-degree curves stored as masselot_if_curves_<slug>*.json, with impact-function IDs mapped to the three age groups:

Age group impf_T2M ID
< 15 1
15–64 2
65+ 3

High-temperature extrapolation

The two Masselot variants differ only in how the response is extrapolated beyond the fitted temperature range — a material choice because future climate pushes daily temperatures past the observed support:

IF_MAIN_FAMILY Source file Tail extrapolation
masselot masselot_if_curves_<slug>.json Constant tail — response held flat above the last fitted point
masselot_tail (default) masselot_if_curves_<slug>_tail.json Log-linear tail — response continues to rise log-linearly above the last fitted point

NB04 promotes the configured family to the canonical downstream IF slot inside the active output variant, and records the true source and extrapolation assumption in the output metadata (if_main_source: Masselot, masselot_extrapolation).


Sensitivity families — Burke et al.

The previous main family is retained as a sensitivity / generalisability artifact. Two Burke-based curves are written by NB04 but are not used in the main mortality calculation:

Functions are anchor-point approximations to the age-differentiated European panel of Burke et al. (2025), estimated from daily mortality and temperature records across >1,000 European locations using a two-stage meta-regression.

Polynomial (Burke) dose–response

A polynomial in daily mean 2 m temperature T (°C), restricted to operate above a reference temperature T_ref = 20 °C:

$$D_a(T) = \max!\left(0,\;\sum_{k=0}^{K}\beta_{a,k}(T - T_{\mathrm{ref}})^k\right)$$

where D_a(T) is excess deaths per 100,000 population per day for age group a, and β_a,k are age-group-specific coefficients fitted to the Burke (2025) Fig. 2 EU-panel anchor points. This curve is city-agnostic — its only per-city term is the baseline-mortality year scaling (identical to the Masselot-main family).

Convex power-law (Burke)

A convex power-law variant of the same anchors, used to probe functional-form sensitivity at the high-temperature tail.

The 65+ group has a dose–response roughly 20× steeper than the working-age group at 40 °C; the <15 group has the lowest sensitivity.

Copenhagen exception. Copenhagen's Burke sensitivity IF is built on the extreme-event (Track-B) hazard rather than the daily-mean track, shipped in burke_if_reference/copenhagen/ and loaded as-is so the existing sensitivity is preserved exactly.


Interface with CLIMADA

CLIMADA impact functions require mean damage degrees (mdd) in [0, 1]:

$$\mathrm{mdd}_a(T) = \mathrm{clip}!\left(\frac{D_a(T)}{100{,}000},\; 0,\; 1\right)$$

For each target year a distinct CLIMADA ImpactFuncSet is constructed, and each exposure row points to its age-group IF via the impf_T2M field.


Annual scaling

Impact functions are adjusted for each target year to account for two modulating factors. This scaling is applied identically to the Masselot-main and Burke-sensitivity families.

1. Baseline mortality scaling

Age-specific all-cause mortality rates evolve following SSP-consistent epidemiological transitions (WCDE life-table projections). NB04 derives the year factor as the median ratio of each year's stored mdd curve to the reference-year curve:

$$\mathrm{mdd}{a,y}(T) = \frac{M{\mathrm{base}}_{a,y}}{M}_a(T)$$}} \cdot \mathrm{mdd

2. Air-conditioning attenuation

Current AC coverage attenuates the effective heat-mortality dose (applied in NB05, not NB04):

$$\mathrm{mdd}^{\mathrm{eff}}{a,y}(T,x) = \mathrm{mdd}!\left(1 - \varepsilon_a\, c_y(x),\; 0,\; 1\right)$$}(T) \cdot \mathrm{clip

where c_y(x) = local AC coverage fraction at grid cell x in year y, and ε_a = age-specific AC efficacy.

Age-specific AC efficacy (ε_a)

Configured via the efficacy / efficacy_scenarios blocks in the city YAML. Central defaults:

Age group Conservative (sera_spain) Central (default) Optimistic
< 15 0.10 0.20 0.30
15–64 0.14 0.30 0.40
65+ 0.20 0.40 0.55

Sensitivity dimensions

Dimension Values examined
Impact-function family Masselot constant-tail · Masselot log-linear-tail · Burke polynomial · Burke power-law
High-temperature extrapolation Constant vs. log-linear tail
Reference temperature T_ref Multiple thresholds (Burke family)
Anchor-point level scaling ±50% (Burke family)
Mortality displacement Range of short-term displacement fractions

See Uncertainty Analysis for full details.

This page is maintained in the URBADAPT-HEAT wiki and synced automatically. Edit it there, not in the website repository.