Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Non-stationary GEV — a parametric trend

A time-varying location for a warming climate, at one long station

Abstract

Every model so far has assumed the GEV parameters are fixed in time. Over a century of records that assumption is wrong: the climate warms, and the distribution of annual maxima drifts with it. This notebook makes the GEV non-stationary in the simplest, most interpretable way — a linear trend in the location, μ(t)=μ0+μ1z(t)\mu(t)=\mu_0+\mu_1 z(t) — fit by NUTS to the longest single station in the record (Albacete, 1901–2025). We test whether the trend is real (WAIC against the stationary model), read it off in °C per decade, and see the headline consequence: return levels are now a function of time.

Keywords:non-stationary extremesGEVclimate trendreturn levelsNUTS

Non-stationary extremes: a parametric trend

The pooling and spatial notebooks (Borrowing strength across stations, A spatial GEV — location as a Gaussian process) borrowed strength across space to sharpen a GEV fit, but every one of them held the parameters fixed in time — the 1901 annual maximum and the 2025 one were treated as draws from the same distribution. For temperature over a warming century that is exactly the assumption we should distrust.

This is the first of three notebooks that let the GEV drift in time at a single long station, escalating in flexibility:

  1. parametric (this notebook) — a rigid linear trend, the textbook model;

  2. ODE (Non-stationary GEV — a mechanistic ODE) — a mechanistic, forced-relaxation trajectory;

  3. GP (Non-stationary GEV — a state-space GP trend) — a nonparametric smooth curve.

Same station, same GEV likelihood, same NUTS sampler throughout — only the model of how the parameters move changes.

Background

A time-varying GEV

We keep the GEV of The GEV distribution but let the location depend on a covariate. With z(t)z(t) a standardized index of the year,

Yt∼GEV ⁣(μ(t), σ, ξ),μ(t)=μ0+μ1 z(t),Y_t \sim \mathrm{GEV}\!\bigl(\mu(t),\,\sigma,\,\xi\bigr), \qquad \mu(t) = \mu_0 + \mu_1\, z(t),

so μ1\mu_1 is the shift in the centre of the annual-maximum distribution per unit of zz. We hold the scale σ\sigma and shape ξ\xi constant: with ~115 maxima there is signal for a trend in the centre, but pinning a trend in the spread or the tail type is much harder (we add a scale trend as an extension at the end, and devote the GP notebook to flexible shapes).

This is Coles’ non-stationary GEV (Coles 2001, ch. 6). The log-likelihood is the stationary one (3) with μ\mu replaced block-by-block by μ(t)\mu(t); xtremax assembles those per-block fields with assemble_nonstationary_gev_fields.

Return levels become time-dependent

The crucial consequence: the TT-year return level is no longer a single number. Reading (5) at the parameters of a given year gives an instantaneous return level zT(t)z_T(t) — “the 1-in-100-year heat for the climate of year tt”. A fixed physical threshold that was a 1-in-100-year event in 1901 is, under a warmed μ(2025)\mu(2025), a far more frequent event. We make both views concrete below.

Setup

source: REAL CDS
Albacete (-1.86 degE, 38.95 degN) — id SP000008280
115 annual maxima, 1901-2025, 35.0-45.0 degC

The record is long enough to see a drift by eye. Here are the annual maxima through time, with a least-squares line for orientation, and a locator map:

<Figure size 1100x440 with 2 Axes>

A stationary fit, and why it is not enough

First the honest baseline: fit the stationary GEV (constant μ,σ,ξ\mu,\sigma,\xi) exactly as in The GEV distribution. It will fit the marginal histogram perfectly well — the tell-tale of misspecification is in the residuals against time.

stationary fit:  mu=38.07  sigma=1.54  xi=-0.115
divergences: 6

The diagnostic: transform each maximum to its fitted GEV probability G^(zi)\hat G(z_i) (a PIT value, uniform on [0,1][0,1] if the model is right) and plot it against the year. Under a stationary model these should show no trend — a flat cloud. A drift means early years sit low (their maxima are small for the fitted distribution) and late years sit high.

<Figure size 950x380 with 1 Axes>

Letting the location drift: μ(t)=μ0+μ1z(t)\mu(t)=\mu_0+\mu_1 z(t)

Now the non-stationary model (1). The only change from the baseline is a second location parameter μ1\mu_1 multiplying the standardized year z(t)z(t); we build the per-block location field with xtremax’s assemble_nonstationary_gev_fields (n_sites=1 here — the same primitive the spatial notebooks use across many sites).


                 mean       std    median      5.0%     95.0%     n_eff     r_hat
  log_sigma      0.40      0.07      0.40      0.28      0.51   2049.64      1.00
        mu0     38.07      0.15     38.07     37.82     38.31   2056.60      1.00
        mu1      0.41      0.16      0.41      0.14      0.66   2525.02      1.00
         xi     -0.09      0.05     -0.09     -0.16     -0.01   1883.60      1.00

Number of divergences: 2
divergences: 2

Reading the trend

The slope μ1\mu_1 is in °C per unit of zz; multiplying by 10/sd(year)10/\mathrm{sd}(\text{year}) puts it in the units a climatologist wants — °C per decade — and integrating across the record gives the total warming of the distribution’s centre.

warming of the location:
  slope   +0.115 degC/decade   (95% CI +0.026, +0.202)
  total   +1.43 degC over 1901-2025  (95% CI +0.32, +2.50)
  P(mu1 > 0 | data) = 0.994

Is the trend real? Model comparison with WAIC

A non-zero slope in a richer model is not by itself evidence — the extra parameter can fit noise. The Watanabe–Akaike Information Criterion (WAIC) weighs fit against effective complexity using the full posterior, with no extra dependencies: from the pointwise log-likelihoods ℓs,i=log⁡p(yi∣θs)\ell_{s,i}=\log p(y_i\mid \theta_s) over draws ss,

lppd=∑ilog⁡1S∑seℓs,i,pWAIC=∑iVars ℓs,i,WAIC=−2(lppd−pWAIC).\mathrm{lppd}=\sum_i \log\tfrac1S\sum_s e^{\ell_{s,i}},\quad p_{\mathrm{WAIC}}=\sum_i \mathrm{Var}_s\,\ell_{s,i},\quad \mathrm{WAIC}=-2(\mathrm{lppd}-p_{\mathrm{WAIC}}).

Lower is better; a drop of more than a few points is meaningful.

                      WAIC  p_eff  dWAIC
stationary          447.85   3.02   4.67
linear trend mu(t)  443.18   4.21   0.00

WAIC improves by 4.7 when the location is allowed to drift.

Time-varying return levels

The payoff. Evaluating the return-level formula (5) at each year’s parameters turns the single return-level curve of the stationary model into a family of curves indexed by year. We contrast the start and the end of the record, propagating posterior uncertainty. The observed maxima are plotted at their own year’s climate — each point sits at the return period Tt=1/(1−G^(yt; θt))T_t = 1/(1 - \hat G(y_t;\,\theta_t)) implied by the fitted GEV for that year, and is coloured by year. Because every point lies on its own-year curve, and those curves lie between the two we draw, the cloud drifts from the early (blue) envelope up to the recent (red) one — the data live between the climates, not on either single one.

<Figure size 880x500 with 2 Axes>

And the table that an engineer would read — the same design return periods, for the climate of the first year versus the last:

        1901 degC  2025 degC  shift degC
T (yr)                                  
10          40.35      41.77        1.42
25          41.50      42.94        1.44
50          42.26      43.69        1.42
100         42.97      44.38        1.40
200         43.63      45.04        1.41

The same threshold, a shorter wait

Flip it around. Take the level that was a 1-in-100-year maximum in the climate of the first year, then ask how often that same temperature is exceeded under the final-year distribution. A century of warming turns a 1-in-100 event into a far more frequent one — the single most intuitive statement of non-stationary risk.

The 1901 1-in-100-year maximum is 42.9 degC.
Under the 2025 climate, that level is exceeded about 1-in-26 years.

Extension: a trend in the scale, too

Warming can change not just the centre but the spread of summer maxima. We let log⁡σ\log\sigma drift as well, log⁡σ(t)=s0+s1z(t)\log\sigma(t)=s_0+s_1 z(t), and check whether the data ask for it (does s1s_1’s credible interval exclude zero, and does WAIC improve further?).

scale trend s1 = -0.052  (95% CI -0.171, +0.071)
WAIC: stationary 447.8 | mu-trend 443.2 | mu+sigma-trend 444.7
s1 straddles 0 — no clear evidence the spread changes.

Recap & where next

We made the GEV non-stationary the textbook way — a linear trend in the location, μ(t)=μ0+μ1z(t)\mu(t)=\mu_0+\mu_1 z(t) — fit it by NUTS to Albacete’s 1901–2025 record, and confirmed with WAIC that the drift is real and not over-fitting. The trend reads as a warming of the annual-maximum centre of a few tenths of a degree per decade, and it rewrites the engineering numbers: return levels are now functions of time, and a fixed threshold that was rare a century ago recurs far more often today.

A straight line is the strongest possible assumption about the shape of the trend — it cannot bend, plateau, or accelerate, and it extrapolates without limit. The next notebook, Non-stationary GEV — a mechanistic ODE, replaces the line with a mechanistic ODE: the location follows a forced-relaxation trajectory with a physical timescale, a grey-box midpoint between this rigid parametric form and the fully nonparametric Gaussian process of Non-stationary GEV — a state-space GP trend.