Question: do the warm start and the leak change WIS and coverage in the same way on the adaptive learning rate and on the constant one, and on both diseases? E04 and E05 asked this on the flu ensemble with the adaptive rate only; E18 found that the leak’s effect depends on how large the adaptive step gets late in the season, so the two anchors may answer differently.
Setup:
windowed_seasonal replay (53 locations, the hub rounds).
Horizons h0–h3.The grid is 2 × 2 × 2 (E18 step 2 shows the slow term does nothing, so it is left out), plus prod’s two configs:
| factor | levels |
|---|---|
| anchor | adaptive 0.03: sqrt scale, eta = 0.03 × the 90th
percentile of the last 20 rounds’ absolute errors, floor 0.001 (E01’s
elbow). constant 0.018: sqrt of admissions per 100k, eta =
0.018 (E16’s elbow, picked on flu) |
| start | cold: offsets start at zero. warm:
slow_init = "burn_in_quantile" from the 2023-24 season |
| leak | no leak. leak 0.1: the offset shrinks by
10% each round |
| references | REF-op warm (flu prod: adaptive, warm, leak, plus a
slow term); REF-op cold (covid prod) |
WIS reduction % = 100 × (base − calibrated) / base, so positive = calibrated WIS lower than base. L1 coverage bias: lower is better. “Month-avg” coverage bias is computed within each calendar month and then averaged.
Every WIS cell carries a 90% interval from a round bootstrap: the
season’s rounds are resampled with replacement 1000 times and the WIS
reduction recomputed on each draw (cal_wis_boot()). The
same draws score every config, so a gap between two configs has a paired
interval; the “Paired gaps” tables show it for the cells the ledger
compares. Outcomes within a round move together, so the round is the
resampling unit; this ignores dependence between neighbouring rounds, so
the intervals are if anything too narrow.
source(here::here("scripts/calibration/calibration_ws_replay.R"))
DISEASES <- c(flu = "flu", covid = "covid")
RUNS <- purrr::map(DISEASES, function(d) {
wi <- ws_inputs(d)
fc_burn_in <- bind_rows(ws_burn_in_forecasts(d), wi$fc)
specs <- c(ws_grid_configs(wi$rate_scales), ws_prod_specs(wi$rate_scales))
list(wi = wi, specs = specs, cals = purrr::map(specs, ws_run_spec, wi = wi, fc_burn_in = fc_burn_in, workers = params$workers))
})
grid_names <- names(ws_grid_configs(RUNS$flu$wi$rate_scales))
split_name <- function(d) {
d %>%
mutate(config = as.character(config)) %>%
tidyr::separate_wider_delim(config, " | ", names = c("anchor", "start", "leak"), cols_remove = FALSE, too_few = "align_start")
}
ANCHOR_COLS <- c(`adaptive 0.03` = "#E69F00", `constant 0.018` = "#0072B2")
h_levels <- paste0("h", 0:3)
M <- purrr::map(RUNS, function(r) {
m <- ws_wis_by_season(r$cals)
mv <- cal_month_view(r$cals, seasons = LIVE)
cov <- mv$cov %>% transmute(config, season, h = factor(paste0("h", horizon), levels = h_levels), pooled = pooled_cal, mavg = mavg_cal)
bt <- cal_wis_boot(r$cals, seasons = LIVE)
list(m = m, mv = mv, cov = cov, bt = bt)
})
for (d in names(M)) {
cat("\n\n", cal_h(2), " ", d, "\n\n", sep = "")
cal_wis_boot_table(M[[d]]$bt) %>%
knitr::kable(caption = paste0(d, ": ", cal_wis_boot_caption(M[[d]]$bt))) %>%
print()
}
| config | 2024-2025 h0 | 2024-2025 h1 | 2024-2025 h2 | 2024-2025 h3 | 2025-2026 h0 | 2025-2026 h1 | 2025-2026 h2 | 2025-2026 h3 | both h0 | both h1 | both h2 | both h3 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| adaptive 0.03 | cold | no leak | +1.8 [-0.2, +3.5] | +0.0 [-2.7, +2.0] | -1.4 [-5.1, +0.9] | -2.6 [-6.9, -0.1] | +2.2 [-3.2, +6.5] | -0.6 [-6.0, +3.4] | -0.7 [-6.9, +3.2] | -0.2 [-7.6, +4.0] | +1.9 [-0.6, +3.9] | -0.2 [-2.8, +1.8] | -1.1 [-4.2, +1.1] | -1.7 [-5.2, +0.7] |
| adaptive 0.03 | cold | leak 0.1 | +2.0 [+0.5, +3.3] | +0.9 [-0.7, +2.4] | +0.1 [-2.0, +1.5] | -0.5 [-2.9, +0.9] | +1.5 [-0.6, +3.3] | +0.1 [-2.1, +1.8] | +0.4 [-1.6, +2.1] | +0.9 [-0.8, +2.3] | +1.8 [+0.6, +2.9] | +0.6 [-0.7, +1.8] | +0.2 [-1.2, +1.3] | -0.0 [-1.4, +1.1] |
| adaptive 0.03 | warm | no leak | +2.8 [+1.0, +4.4] | +1.2 [-1.0, +3.1] | +0.4 [-3.1, +2.8] | -0.0 [-4.6, +2.7] | +2.4 [-2.7, +6.7] | -0.7 [-5.3, +3.0] | -0.8 [-6.1, +2.7] | -0.2 [-6.2, +3.3] | +2.7 [+0.3, +4.6] | +0.4 [-1.8, +2.3] | -0.1 [-2.9, +2.0] | -0.1 [-3.5, +2.2] |
| adaptive 0.03 | warm | leak 0.1 | +3.1 [+1.6, +4.4] | +2.0 [+0.5, +3.5] | +1.8 [-0.3, +3.4] | +1.9 [-1.0, +3.8] | +2.1 [-0.7, +5.2] | +0.1 [-3.0, +2.8] | +0.1 [-3.1, +2.9] | +0.4 [-3.0, +3.2] | +2.7 [+1.3, +4.0] | +1.2 [-0.4, +2.6] | +1.1 [-0.8, +2.6] | +1.3 [-0.9, +3.0] |
| constant 0.018 | cold | no leak | +1.7 [+0.6, +2.7] | +0.6 [-0.3, +1.4] | +0.3 [-0.6, +0.9] | +0.1 [-0.7, +0.6] | +3.0 [-0.9, +6.6] | +1.0 [-2.1, +3.5] | +1.1 [-1.9, +3.3] | +1.5 [-1.4, +3.6] | +2.2 [+0.5, +3.7] | +0.8 [-0.6, +1.9] | +0.6 [-0.7, +1.6] | +0.6 [-0.5, +1.5] |
| constant 0.018 | cold | leak 0.1 | +1.5 [+0.6, +2.2] | +0.6 [+0.0, +1.2] | +0.4 [-0.2, +0.8] | +0.2 [-0.3, +0.5] | +1.3 [-0.1, +2.7] | +0.4 [-0.7, +1.3] | +0.4 [-0.3, +1.2] | +0.7 [+0.0, +1.3] | +1.4 [+0.6, +2.2] | +0.5 [-0.0, +1.0] | +0.4 [-0.1, +0.8] | +0.4 [-0.0, +0.7] |
| constant 0.018 | warm | no leak | +3.4 [+1.9, +4.8] | +2.1 [+0.7, +3.7] | +2.2 [+0.2, +4.0] | +3.3 [+0.7, +5.2] | +3.4 [-1.0, +7.7] | +0.9 [-2.8, +4.4] | +0.8 [-3.6, +4.5] | +1.2 [-4.6, +5.2] | +3.4 [+1.5, +5.3] | +1.6 [-0.2, +3.3] | +1.6 [-0.5, +3.5] | +2.5 [+0.0, +4.5] |
| constant 0.018 | warm | leak 0.1 | +3.6 [+2.3, +4.9] | +2.5 [+1.2, +3.9] | +2.7 [+1.1, +4.4] | +4.0 [+1.9, +5.6] | +2.9 [+0.2, +6.3] | +0.8 [-1.7, +3.8] | +0.8 [-2.3, +4.1] | +1.2 [-3.0, +4.5] | +3.3 [+2.0, +4.8] | +1.8 [+0.4, +3.3] | +1.9 [+0.3, +3.6] | +2.9 [+0.9, +4.6] |
| REF-op warm | +3.2 [+1.6, +4.6] | +1.9 [+0.2, +3.6] | +1.6 [-0.8, +3.4] | +1.6 [-1.6, +3.7] | +2.2 [-0.9, +5.6] | -0.1 [-3.6, +2.9] | -0.0 [-3.7, +3.1] | +0.2 [-3.6, +3.2] | +2.8 [+1.3, +4.3] | +1.1 [-0.7, +2.7] | +0.9 [-1.2, +2.6] | +1.1 [-1.4, +2.9] |
| REF-op cold | +2.2 [+0.5, +3.6] | +0.9 [-1.1, +2.5] | -0.0 [-2.5, +1.6] | -0.8 [-3.7, +0.9] | +1.8 [-0.8, +4.1] | +0.1 [-2.7, +2.4] | +0.3 [-2.5, +2.5] | +0.9 [-1.6, +2.8] | +2.0 [+0.6, +3.3] | +0.6 [-1.0, +2.0] | +0.1 [-1.7, +1.4] | -0.2 [-2.0, +1.1] |
| config | 2024-2025 h0 | 2024-2025 h1 | 2024-2025 h2 | 2024-2025 h3 | 2025-2026 h0 | 2025-2026 h1 | 2025-2026 h2 | 2025-2026 h3 | both h0 | both h1 | both h2 | both h3 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| adaptive 0.03 | cold | no leak | +2.3 [+1.1, +3.5] | -0.7 [-1.7, +0.2] | -2.1 [-3.8, -0.5] | -2.8 [-5.8, -0.3] | -0.8 [-4.8, +3.5] | -4.5 [-6.9, -2.1] | -4.0 [-5.9, -2.1] | -1.2 [-5.3, +2.6] | +0.7 [-1.4, +2.9] | -2.7 [-4.1, -1.3] | -3.1 [-4.4, -1.8] | -1.9 [-4.5, +0.3] |
| adaptive 0.03 | cold | leak 0.1 | +1.7 [+0.8, +2.6] | +0.4 [-0.5, +1.2] | +0.3 [-0.7, +1.4] | +0.4 [-1.1, +1.9] | +0.5 [-1.2, +2.3] | -2.0 [-3.7, -0.2] | -2.8 [-4.3, -1.2] | -3.1 [-4.8, -1.1] | +1.1 [+0.1, +2.1] | -0.8 [-1.8, +0.2] | -1.4 [-2.3, -0.3] | -1.4 [-2.7, -0.1] |
| adaptive 0.03 | warm | no leak | +0.5 [-0.7, +1.8] | -2.5 [-5.5, +0.8] | -2.7 [-8.4, +2.8] | -1.0 [-8.9, +6.5] | -0.7 [-4.3, +3.1] | -3.9 [-5.7, -1.9] | -2.8 [-6.2, +0.3] | +1.0 [-5.2, +6.7] | -0.1 [-2.0, +1.9] | -3.2 [-5.0, -1.3] | -2.7 [-6.1, +0.3] | +0.1 [-4.9, +4.8] |
| adaptive 0.03 | warm | leak 0.1 | -0.9 [-1.8, +0.0] | -2.5 [-5.6, +0.8] | -1.1 [-7.0, +4.6] | +1.7 [-6.3, +9.2] | -0.4 [-1.5, +0.6] | -1.3 [-4.7, +1.6] | +0.8 [-5.1, +5.9] | +4.9 [-3.1, +11.8] | -0.6 [-1.3, +0.0] | -1.9 [-4.1, +0.3] | -0.1 [-4.3, +3.6] | +3.4 [-2.3, +8.4] |
| constant 0.018 | cold | no leak | +2.2 [+1.2, +3.3] | -0.2 [-0.7, +0.4] | -0.8 [-1.7, -0.0] | -0.8 [-2.2, +0.3] | -0.9 [-5.1, +3.7] | -3.3 [-5.5, -1.0] | -2.1 [-3.1, -0.8] | +0.9 [-1.3, +3.0] | +0.7 [-1.6, +3.0] | -1.8 [-3.0, -0.6] | -1.5 [-2.2, -0.7] | +0.1 [-1.3, +1.3] |
| constant 0.018 | cold | leak 0.1 | +1.5 [+0.8, +2.2] | +0.3 [-0.2, +0.8] | +0.2 [-0.3, +0.7] | +0.3 [-0.4, +1.0] | +0.6 [-1.3, +2.6] | -1.4 [-2.8, +0.1] | -1.7 [-2.5, -0.6] | -1.2 [-2.1, -0.2] | +1.1 [+0.0, +2.1] | -0.5 [-1.3, +0.3] | -0.8 [-1.3, -0.2] | -0.5 [-1.1, +0.1] |
| constant 0.018 | warm | no leak | -1.3 [-2.8, +0.5] | -5.1 [-10.1, +0.3] | -4.6 [-13.6, +3.9] | -2.8 [-15.5, +8.9] | -0.5 [-3.9, +3.3] | -1.7 [-3.6, +0.1] | +0.8 [-6.1, +7.0] | +5.0 [-7.0, +15.6] | -0.9 [-2.8, +1.3] | -3.4 [-6.1, -0.7] | -1.8 [-7.6, +3.3] | +1.3 [-7.4, +9.1] |
| constant 0.018 | warm | leak 0.1 | -3.2 [-4.6, -1.8] | -6.8 [-12.0, -1.5] | -6.0 [-15.4, +2.7] | -4.0 [-17.1, +7.9] | -1.1 [-2.8, +0.2] | -2.6 [-9.1, +3.1] | -0.7 [-11.7, +8.9] | +2.2 [-13.1, +15.4] | -2.2 [-3.3, -1.1] | -4.7 [-8.8, -0.8] | -3.2 [-10.8, +3.3] | -0.8 [-11.2, +8.3] |
| REF-op warm | -0.5 [-1.4, +0.5] | -2.3 [-5.4, +0.9] | -1.2 [-7.0, +4.6] | +1.4 [-6.6, +8.8] | +0.2 [-1.0, +1.5] | -1.2 [-3.8, +1.0] | +0.3 [-4.7, +4.7] | +4.1 [-3.2, +10.4] | -0.1 [-0.9, +0.7] | -1.8 [-3.8, +0.2] | -0.4 [-4.3, +3.0] | +2.8 [-2.6, +7.7] |
| REF-op cold | +1.9 [+0.9, +2.9] | +0.3 [-0.6, +1.2] | +0.0 [-1.1, +1.2] | +0.1 [-1.6, +1.9] | +0.6 [-1.6, +2.9] | -2.4 [-4.4, -0.3] | -3.2 [-4.8, -1.4] | -3.1 [-5.0, -0.8] | +1.3 [+0.0, +2.5] | -1.1 [-2.2, +0.1] | -1.7 [-2.7, -0.5] | -1.6 [-3.0, -0.1] |
The gap in WIS reduction % between two cells, with its paired bootstrap interval (same draws on both sides). An interval that excludes zero in a season means the ranking of the pair survived resampling that season’s rounds.
PAIRS <- list(
flu = list(
c("constant 0.018 | warm | leak 0.1", "constant 0.018 | warm | no leak"),
c("constant 0.018 | warm | leak 0.1", "REF-op warm"),
c("constant 0.018 | warm | leak 0.1", "adaptive 0.03 | warm | leak 0.1"),
c("constant 0.018 | warm | leak 0.1", "constant 0.018 | cold | leak 0.1")
),
covid = list(
c("constant 0.018 | cold | leak 0.1", "REF-op cold"),
c("constant 0.018 | cold | leak 0.1", "constant 0.018 | cold | no leak"),
c("constant 0.018 | cold | leak 0.1", "constant 0.018 | warm | leak 0.1")
)
)
for (d in names(M)) {
cat("\n\n", cal_h(2), " ", d, "\n\n", sep = "")
purrr::map(PAIRS[[d]], function(pr) {
cal_wis_boot_diff(M[[d]]$bt, pr[1], pr[2]) %>% mutate(pair = paste(pr[1], "−", pr[2]), .before = 1)
}) %>%
bind_rows() %>%
transmute(pair, col = paste(season, h), cell = sprintf("%+.1f [%+.1f, %+.1f]", diff, lo, hi)) %>%
tidyr::pivot_wider(names_from = col, values_from = cell) %>%
knitr::kable(caption = paste0(d, ": gap in WIS reduction % (first − second) with its 90% paired bootstrap interval")) %>%
print()
}
| pair | 2024-2025 h0 | 2024-2025 h1 | 2024-2025 h2 | 2024-2025 h3 | 2025-2026 h0 | 2025-2026 h1 | 2025-2026 h2 | 2025-2026 h3 | both h0 | both h1 | both h2 | both h3 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| constant 0.018 | warm | leak 0.1 − constant 0.018 | warm | no leak | +0.2 [-0.2, +0.7] | +0.4 [+0.1, +0.9] | +0.5 [+0.2, +1.1] | +0.7 [+0.3, +1.4] | -0.5 [-2.2, +1.9] | -0.1 [-1.3, +1.8] | +0.1 [-1.0, +1.9] | -0.0 [-1.2, +1.9] | -0.1 [-0.9, +0.8] | +0.2 [-0.4, +0.9] | +0.3 [-0.2, +1.0] | +0.4 [-0.2, +1.2] |
| constant 0.018 | warm | leak 0.1 − REF-op warm | +0.4 [-0.2, +1.3] | +0.5 [-0.3, +1.9] | +1.1 [+0.0, +2.7] | +2.3 [+1.3, +4.0] | +0.7 [-0.3, +1.9] | +0.9 [-0.2, +2.8] | +0.9 [+0.0, +2.4] | +1.0 [+0.2, +1.8] | +0.5 [-0.0, +1.2] | +0.7 [-0.0, +1.7] | +1.0 [+0.2, +2.1] | +1.8 [+1.2, +2.7] |
| constant 0.018 | warm | leak 0.1 − adaptive 0.03 | warm | leak 0.1 | +0.5 [+0.0, +1.2] | +0.5 [-0.2, +1.6] | +0.9 [+0.1, +2.3] | +2.1 [+1.3, +3.4] | +0.8 [+0.1, +1.8] | +0.8 [-0.1, +2.2] | +0.7 [+0.1, +1.9] | +0.8 [-0.2, +1.7] | +0.6 [+0.2, +1.2] | +0.6 [+0.0, +1.5] | +0.8 [+0.2, +1.7] | +1.6 [+1.0, +2.3] |
| constant 0.018 | warm | leak 0.1 − constant 0.018 | cold | leak 0.1 | +2.1 [+1.3, +3.3] | +1.8 [+0.8, +3.2] | +2.3 [+1.1, +3.9] | +3.8 [+2.1, +5.3] | +1.6 [+0.1, +3.6] | +0.5 [-1.2, +2.6] | +0.4 [-2.0, +2.9] | +0.5 [-3.1, +3.3] | +1.9 [+1.1, +2.9] | +1.3 [+0.3, +2.4] | +1.5 [+0.3, +2.9] | +2.5 [+0.9, +4.0] |
| pair | 2024-2025 h0 | 2024-2025 h1 | 2024-2025 h2 | 2024-2025 h3 | 2025-2026 h0 | 2025-2026 h1 | 2025-2026 h2 | 2025-2026 h3 | both h0 | both h1 | both h2 | both h3 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| constant 0.018 | cold | leak 0.1 − REF-op cold | -0.4 [-0.6, -0.1] | +0.0 [-0.4, +0.5] | +0.1 [-0.6, +0.8] | +0.2 [-0.9, +1.2] | -0.0 [-0.5, +0.3] | +1.0 [+0.3, +1.7] | +1.6 [+0.8, +2.3] | +1.9 [+0.6, +3.0] | -0.2 [-0.5, +0.0] | +0.5 [+0.1, +0.9] | +0.9 [+0.3, +1.4] | +1.1 [+0.2, +1.9] |
| constant 0.018 | cold | leak 0.1 − constant 0.018 | cold | no leak | -0.6 [-1.1, -0.3] | +0.5 [+0.2, +0.8] | +1.0 [+0.5, +1.6] | +1.1 [+0.5, +1.9] | +1.4 [-1.4, +4.0] | +2.0 [+0.7, +3.1] | +0.4 [-0.4, +1.2] | -2.1 [-3.8, -0.3] | +0.4 [-1.1, +1.8] | +1.2 [+0.6, +1.9] | +0.7 [+0.2, +1.2] | -0.6 [-1.5, +0.4] |
| constant 0.018 | cold | leak 0.1 − constant 0.018 | warm | leak 0.1 | +4.8 [+3.0, +6.4] | +7.1 [+1.6, +12.4] | +6.1 [-2.5, +15.4] | +4.3 [-7.5, +17.2] | +1.7 [-0.9, +4.5] | +1.3 [-5.3, +8.6] | -0.9 [-10.8, +10.6] | -3.4 [-16.9, +11.9] | +3.2 [+1.6, +4.9] | +4.1 [-0.0, +8.7] | +2.5 [-4.2, +10.1] | +0.3 [-8.7, +10.4] |
The change from adding the warm start (warm − cold) at each leak level, and from adding the leak (leak − no leak) at each start, per anchor. WIS: change in WIS reduction % (positive = the factor lowers WIS). Coverage: change in month-avg L1 coverage bias (negative = the factor improves coverage).
contrast <- function(d, factor, hi, lo, held) {
d %>%
select(anchor, start, leak, season, h, wis_pct, mavg) %>%
tidyr::pivot_wider(names_from = all_of(factor), values_from = c(wis_pct, mavg)) %>%
transmute(
anchor, season, h,
factor = paste0("+ ", hi, " (", .data[[held]], ")"),
d_wis = .data[[paste0("wis_pct_", hi)]] - .data[[paste0("wis_pct_", lo)]],
d_mavg = .data[[paste0("mavg_", hi)]] - .data[[paste0("mavg_", lo)]]
)
}
DELTAS <- purrr::imap(M, function(x, d) {
g <- x$m %>%
filter(config %in% grid_names) %>%
select(config, season, h, wis_pct) %>%
left_join(x$cov, by = c("config", "season", "h")) %>%
split_name()
bind_rows(contrast(g, "start", "warm", "cold", "leak"), contrast(g, "leak", "leak 0.1", "no leak", "start")) %>%
mutate(disease = d)
})
for (d in names(DELTAS)) {
cat("\n\n", cal_h(2), " ", d, "\n\n", sep = "")
DELTAS[[d]] %>%
transmute(anchor, factor, col = paste(season, h), cell = sprintf("%+.1f / %+.3f", d_wis, d_mavg)) %>%
tidyr::pivot_wider(names_from = col, values_from = cell) %>%
arrange(anchor, factor) %>%
knitr::kable(caption = paste0(d, ": change in WIS reduction % / month-avg L1 coverage bias from adding the factor, per anchor and season")) %>%
print()
}
| anchor | factor | 2024-2025 h0 | 2024-2025 h1 | 2024-2025 h2 | 2024-2025 h3 | 2025-2026 h0 | 2025-2026 h1 | 2025-2026 h2 | 2025-2026 h3 | both h0 | both h1 | both h2 | both h3 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| adaptive 0.03 | + leak 0.1 (cold) | +0.2 / +0.008 | +0.9 / +0.002 | +1.5 / +0.002 | +2.0 / -0.000 | -0.7 / +0.003 | +0.7 / -0.001 | +1.1 / -0.003 | +1.0 / -0.009 | -0.1 / +0.006 | +0.8 / +0.000 | +1.4 / -0.001 | +1.7 / -0.005 |
| adaptive 0.03 | + leak 0.1 (warm) | +0.3 / +0.000 | +0.8 / -0.003 | +1.4 / +0.000 | +1.9 / -0.019 | -0.3 / -0.001 | +0.8 / -0.001 | +1.0 / -0.007 | +0.6 / -0.005 | +0.1 / -0.001 | +0.8 / -0.002 | +1.2 / -0.004 | +1.4 / -0.011 |
| adaptive 0.03 | + warm (leak 0.1) | +1.1 / -0.006 | +1.1 / -0.007 | +1.7 / -0.002 | +2.5 / -0.005 | +0.6 / -0.003 | -0.0 / +0.007 | -0.3 / +0.003 | -0.5 / +0.009 | +0.9 / -0.005 | +0.6 / +0.000 | +0.9 / +0.000 | +1.3 / +0.002 |
| adaptive 0.03 | + warm (no leak) | +1.0 / +0.002 | +1.2 / -0.002 | +1.8 / -0.000 | +2.6 / +0.013 | +0.2 / +0.002 | -0.1 / +0.007 | -0.1 / +0.007 | -0.0 / +0.005 | +0.7 / +0.002 | +0.7 / +0.003 | +1.0 / +0.003 | +1.6 / +0.009 |
| constant 0.018 | + leak 0.1 (cold) | -0.2 / +0.010 | +0.0 / +0.005 | +0.1 / +0.006 | +0.1 / +0.005 | -1.7 / +0.011 | -0.6 / +0.011 | -0.6 / +0.009 | -0.8 / +0.003 | -0.8 / +0.010 | -0.2 / +0.008 | -0.2 / +0.007 | -0.2 / +0.004 |
| constant 0.018 | + leak 0.1 (warm) | +0.2 / +0.003 | +0.4 / -0.002 | +0.5 / -0.004 | +0.7 / -0.011 | -0.5 / -0.000 | -0.1 / -0.007 | +0.1 / -0.014 | -0.0 / -0.012 | -0.1 / +0.001 | +0.2 / -0.005 | +0.3 / -0.009 | +0.4 / -0.012 |
| constant 0.018 | + warm (leak 0.1) | +2.1 / -0.007 | +1.8 / -0.012 | +2.3 / -0.007 | +3.8 / -0.002 | +1.6 / -0.004 | +0.5 / +0.006 | +0.4 / +0.015 | +0.5 / +0.022 | +1.9 / -0.005 | +1.3 / -0.002 | +1.5 / +0.005 | +2.5 / +0.011 |
| constant 0.018 | + warm (no leak) | +1.7 / -0.001 | +1.5 / -0.005 | +1.9 / +0.004 | +3.3 / +0.014 | +0.4 / +0.008 | -0.1 / +0.024 | -0.3 / +0.037 | -0.3 / +0.037 | +1.2 / +0.004 | +0.8 / +0.011 | +1.0 / +0.021 | +1.9 / +0.026 |
| anchor | factor | 2024-2025 h0 | 2024-2025 h1 | 2024-2025 h2 | 2024-2025 h3 | 2025-2026 h0 | 2025-2026 h1 | 2025-2026 h2 | 2025-2026 h3 | both h0 | both h1 | both h2 | both h3 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| adaptive 0.03 | + leak 0.1 (cold) | -0.6 / +0.011 | +1.1 / -0.006 | +2.4 / -0.008 | +3.1 / -0.007 | +1.3 / +0.007 | +2.6 / -0.003 | +1.2 / -0.002 | -1.9 / +0.003 | +0.4 / +0.009 | +1.8 / -0.005 | +1.8 / -0.004 | +0.5 / -0.001 |
| adaptive 0.03 | + leak 0.1 (warm) | -1.4 / +0.019 | -0.0 / +0.014 | +1.6 / +0.010 | +2.7 / +0.008 | +0.4 / +0.023 | +2.7 / +0.019 | +3.6 / +0.016 | +3.9 / +0.009 | -0.5 / +0.021 | +1.3 / +0.017 | +2.6 / +0.013 | +3.3 / +0.008 |
| adaptive 0.03 | + warm (leak 0.1) | -2.6 / +0.035 | -2.9 / +0.035 | -1.4 / +0.023 | +1.4 / +0.020 | -0.9 / +0.017 | +0.7 / +0.021 | +3.7 / +0.017 | +8.0 / +0.005 | -1.7 / +0.025 | -1.0 / +0.027 | +1.2 / +0.020 | +4.8 / +0.012 |
| adaptive 0.03 | + warm (no leak) | -1.8 / +0.027 | -1.8 / +0.014 | -0.6 / +0.005 | +1.8 / +0.006 | +0.1 / +0.001 | +0.6 / -0.001 | +1.3 / -0.000 | +2.2 / -0.001 | -0.9 / +0.012 | -0.5 / +0.005 | +0.4 / +0.002 | +2.0 / +0.002 |
| constant 0.018 | + leak 0.1 (cold) | -0.6 / +0.009 | +0.5 / -0.004 | +1.0 / -0.004 | +1.1 / -0.003 | +1.4 / +0.006 | +2.0 / -0.005 | +0.4 / +0.000 | -2.1 / +0.002 | +0.4 / +0.007 | +1.2 / -0.005 | +0.7 / -0.002 | -0.6 / -0.000 |
| constant 0.018 | + leak 0.1 (warm) | -2.0 / +0.016 | -1.7 / +0.011 | -1.3 / +0.007 | -1.2 / +0.005 | -0.6 / +0.025 | -0.9 / +0.027 | -1.6 / +0.025 | -2.9 / +0.028 | -1.3 / +0.021 | -1.3 / +0.020 | -1.4 / +0.017 | -2.1 / +0.018 |
| constant 0.018 | + warm (leak 0.1) | -4.8 / +0.036 | -7.1 / +0.043 | -6.1 / +0.032 | -4.3 / +0.035 | -1.7 / +0.019 | -1.3 / +0.029 | +0.9 / +0.029 | +3.4 / +0.034 | -3.2 / +0.026 | -4.1 / +0.035 | -2.5 / +0.030 | -0.3 / +0.034 |
| constant 0.018 | + warm (no leak) | -3.4 / +0.029 | -5.0 / +0.027 | -3.8 / +0.021 | -2.0 / +0.028 | +0.4 / +0.001 | +1.6 / -0.003 | +2.9 / +0.003 | +4.2 / +0.008 | -1.5 / +0.013 | -1.6 / +0.010 | -0.3 / +0.011 | +1.2 / +0.016 |
ggplot(bind_rows(DELTAS) %>% filter(season != "both"), aes(h, d_wis, colour = anchor, group = anchor)) +
geom_hline(yintercept = 0, colour = "grey60") +
geom_line() +
geom_point() +
facet_grid(disease + season ~ factor) +
scale_colour_manual(values = ANCHOR_COLS) +
labs(x = NULL, y = "change in WIS reduction %", colour = NULL) +
theme(legend.position = "bottom")
Per state, pooled over h0–h3: WIS reduction % of the adaptive anchor against the constant one at the same start and leak (above the line, adaptive is better).
STATE <- purrr::map(RUNS, function(r) {
cal_state_wis(r$cals[grid_names]) %>%
group_by(config, season, location) %>%
summarize(pct = 100 * (sum(wis_base) - sum(wis_cal)) / sum(wis_base), .groups = "drop") %>%
split_name() %>%
select(-config) %>%
tidyr::pivot_wider(names_from = anchor, values_from = pct) %>%
mutate(cell = paste(start, leak, sep = ", "))
})
for (d in names(STATE)) {
cat("\n\n", cal_h(2), " ", d, "\n\n", sep = "")
print(
ggplot(STATE[[d]], aes(`constant 0.018`, `adaptive 0.03`)) +
geom_abline(slope = 1, intercept = 0, colour = "grey50") +
geom_hline(yintercept = 0, colour = "grey85") +
geom_vline(xintercept = 0, colour = "grey85") +
geom_point(alpha = 0.8) +
facet_grid(season ~ cell) +
labs(title = d, x = "constant 0.018: WIS reduction %, h0–h3", y = "adaptive 0.03: WIS reduction %, h0–h3")
)
STATE[[d]] %>%
group_by(cell, season) %>%
summarize(adaptive_better = sum(`adaptive 0.03` > `constant 0.018`), states = n(), .groups = "drop") %>%
transmute(cell, season, v = sprintf("%d / %d", adaptive_better, states)) %>%
tidyr::pivot_wider(names_from = season, values_from = v) %>%
knitr::kable(caption = paste0(d, ": states (of those scored) where the adaptive anchor beats the constant one, h0–h3 pooled")) %>%
print()
}
| cell | 2024-2025 | 2025-2026 |
|---|---|---|
| cold, leak 0.1 | 19 / 52 | 23 / 52 |
| cold, no leak | 11 / 52 | 5 / 52 |
| warm, leak 0.1 | 15 / 52 | 13 / 52 |
| warm, no leak | 8 / 52 | 10 / 52 |
| cell | 2024-2025 | 2025-2026 |
|---|---|---|
| cold, leak 0.1 | 31 / 52 | 13 / 52 |
| cold, no leak | 14 / 52 | 13 / 52 |
| warm, leak 0.1 | 26 / 52 | 20 / 52 |
| warm, no leak | 19 / 52 | 5 / 52 |
The month plots show the no-leak grid and flu prod; the tables keep every config.
mv_plot_cfgs <- c(grid_names[c(1, 3, 5, 7)], "REF-op warm")
mv_cols <- setNames(c("#E69F00", "#D55E00", "#0072B2", "#56B4E9", "#000000"), mv_plot_cfgs)
for (d in names(M)) {
mv <- M[[d]]$mv
cal_month_section(d, level = 2L)
}
Scores by calendar month of the reference date, one figure per season, states only (US excluded). Rows are the three metrics, columns the horizons:
100 × (WIS_base − WIS_cal) / WIS_base within the month, so
positive = calibrated WIS lower than base. Grey bars are the month’s
share of the season’s base WIS, so a large swing in a month with a small
bar costs little overall.100 × (bias_base − bias_cal) / bias_base, so positive =
calibrated coverage bias lower than base. The bias is computed within
the month: the mean over the 23 levels of |share of outcomes at or below
the quantile − level|. A season-pooled bias lets under-prediction on the
ramp cancel over-prediction after the peak; the monthly one does not.
When the base’s bias is already small, a small absolute change shows as
a large percentage; the month-average column of the coverage table below
gives the absolute values.A month holds one to five rounds of about 52 states, and outcomes in the same round move together, so a single month’s coverage bias is noisy and sits above zero even for a calibrated forecaster. That’s why the plot shows it relative to the base.
mv_plot_month <- mv$month
if (!is.null(get0("mv_plot_cfgs"))) {
mv_plot_month <- mv_plot_month %>% filter(config %in% mv_plot_cfgs) %>% mutate(config = droplevels(config))
}
for (s in sort(unique(mv_plot_month$season))) {
cat("\n\n", cal_h(2), " ", s, "\n\n", sep = "")
print(cal_month_plot(mv_plot_month, s, colours = get0("mv_cols"), linetype = get0("mv_linetype"), colour_by = get0("mv_colour_by") %||% "config"))
}
cat("\n\n", cal_h(2), " By horizon\n\n", sep = "")
cat("WIS reduction % (positive = calibrated WIS lower than base), states only; `both` pools the seasons.\n\n")
WIS reduction % (positive = calibrated WIS lower than base), states
only; both pools the seasons.
print(knitr::kable(cal_month_wis_table(mv)))
| config | 2024-2025 h0 | 2024-2025 h1 | 2024-2025 h2 | 2024-2025 h3 | 2025-2026 h0 | 2025-2026 h1 | 2025-2026 h2 | 2025-2026 h3 | both h0 | both h1 | both h2 | both h3 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| adaptive 0.03 | cold | no leak | +1.8 | +0.0 | -1.4 | -2.6 | +2.2 | -0.6 | -0.7 | -0.2 | +1.9 | -0.2 | -1.1 | -1.7 |
| adaptive 0.03 | cold | leak 0.1 | +2.0 | +0.9 | +0.1 | -0.5 | +1.5 | +0.1 | +0.4 | +0.9 | +1.8 | +0.6 | +0.2 | -0.0 |
| adaptive 0.03 | warm | no leak | +2.8 | +1.2 | +0.4 | -0.0 | +2.4 | -0.7 | -0.8 | -0.2 | +2.7 | +0.4 | -0.1 | -0.1 |
| adaptive 0.03 | warm | leak 0.1 | +3.1 | +2.0 | +1.8 | +1.9 | +2.1 | +0.1 | +0.1 | +0.4 | +2.7 | +1.2 | +1.1 | +1.3 |
| constant 0.018 | cold | no leak | +1.7 | +0.6 | +0.3 | +0.1 | +3.0 | +1.0 | +1.1 | +1.5 | +2.2 | +0.8 | +0.6 | +0.6 |
| constant 0.018 | cold | leak 0.1 | +1.5 | +0.6 | +0.4 | +0.2 | +1.3 | +0.4 | +0.4 | +0.7 | +1.4 | +0.5 | +0.4 | +0.4 |
| constant 0.018 | warm | no leak | +3.4 | +2.1 | +2.2 | +3.3 | +3.4 | +0.9 | +0.8 | +1.2 | +3.4 | +1.6 | +1.6 | +2.5 |
| constant 0.018 | warm | leak 0.1 | +3.6 | +2.5 | +2.7 | +4.0 | +2.9 | +0.8 | +0.8 | +1.2 | +3.3 | +1.8 | +1.9 | +2.9 |
| REF-op warm | +3.2 | +1.9 | +1.6 | +1.6 | +2.2 | -0.1 | -0.0 | +0.2 | +2.8 | +1.1 | +0.9 | +1.1 |
| REF-op cold | +2.2 | +0.9 | -0.0 | -0.8 | +1.8 | +0.1 | +0.3 | +0.9 | +2.0 | +0.6 | +0.1 | -0.2 |
print(knitr::kable(cal_month_cov_table(mv), caption = CAL_MONTH_COV_CAPTION))
| config | 2024-2025 h0 | 2024-2025 h1 | 2024-2025 h2 | 2024-2025 h3 | 2025-2026 h0 | 2025-2026 h1 | 2025-2026 h2 | 2025-2026 h3 | both h0 | both h1 | both h2 | both h3 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| base | 0.127 / 0.130 | 0.129 / 0.144 | 0.148 / 0.179 | 0.169 / 0.211 | 0.090 / 0.097 | 0.081 / 0.112 | 0.084 / 0.130 | 0.086 / 0.146 | 0.108 / 0.112 | 0.105 / 0.127 | 0.115 / 0.153 | 0.127 / 0.177 |
| adaptive 0.03 | cold | no leak | 0.085 / 0.115 | 0.077 / 0.138 | 0.078 / 0.174 | 0.075 / 0.213 | 0.008 / 0.078 | 0.010 / 0.105 | 0.014 / 0.130 | 0.016 / 0.143 | 0.045 / 0.095 | 0.039 / 0.120 | 0.037 / 0.150 | 0.032 / 0.176 |
| adaptive 0.03 | cold | leak 0.1 | 0.110 / 0.123 | 0.111 / 0.140 | 0.123 / 0.176 | 0.132 / 0.213 | 0.067 / 0.082 | 0.060 / 0.104 | 0.063 / 0.126 | 0.064 / 0.134 | 0.088 / 0.101 | 0.085 / 0.121 | 0.093 / 0.149 | 0.097 / 0.171 |
| adaptive 0.03 | warm | no leak | 0.069 / 0.116 | 0.057 / 0.136 | 0.048 / 0.173 | 0.051 / 0.227 | 0.012 / 0.080 | 0.017 / 0.112 | 0.017 / 0.136 | 0.018 / 0.148 | 0.035 / 0.097 | 0.030 / 0.123 | 0.026 / 0.153 | 0.027 / 0.185 |
| adaptive 0.03 | warm | leak 0.1 | 0.089 / 0.116 | 0.081 / 0.133 | 0.082 / 0.173 | 0.071 / 0.208 | 0.042 / 0.079 | 0.036 / 0.111 | 0.031 / 0.129 | 0.030 / 0.144 | 0.065 / 0.096 | 0.053 / 0.121 | 0.048 / 0.150 | 0.041 / 0.173 |
| constant 0.018 | cold | no leak | 0.099 / 0.115 | 0.104 / 0.136 | 0.120 / 0.170 | 0.137 / 0.204 | 0.021 / 0.075 | 0.023 / 0.098 | 0.024 / 0.119 | 0.022 / 0.138 | 0.059 / 0.094 | 0.062 / 0.116 | 0.071 / 0.143 | 0.078 / 0.169 |
| constant 0.018 | cold | leak 0.1 | 0.117 / 0.125 | 0.120 / 0.141 | 0.138 / 0.176 | 0.157 / 0.209 | 0.075 / 0.086 | 0.071 / 0.108 | 0.074 / 0.128 | 0.075 / 0.141 | 0.096 / 0.104 | 0.095 / 0.124 | 0.105 / 0.150 | 0.115 / 0.173 |
| constant 0.018 | warm | no leak | 0.076 / 0.115 | 0.070 / 0.131 | 0.065 / 0.174 | 0.057 / 0.218 | 0.018 / 0.083 | 0.027 / 0.122 | 0.035 / 0.156 | 0.051 / 0.175 | 0.040 / 0.098 | 0.034 / 0.126 | 0.032 / 0.164 | 0.040 / 0.195 |
| constant 0.018 | warm | leak 0.1 | 0.093 / 0.118 | 0.086 / 0.129 | 0.085 / 0.169 | 0.075 / 0.207 | 0.048 / 0.083 | 0.040 / 0.115 | 0.034 / 0.142 | 0.044 / 0.163 | 0.070 / 0.099 | 0.055 / 0.121 | 0.046 / 0.155 | 0.042 / 0.183 |
| REF-op warm | 0.085 / 0.115 | 0.079 / 0.133 | 0.077 / 0.175 | 0.066 / 0.208 | 0.035 / 0.078 | 0.032 / 0.111 | 0.027 / 0.129 | 0.029 / 0.146 | 0.060 / 0.095 | 0.049 / 0.121 | 0.043 / 0.150 | 0.038 / 0.175 |
| REF-op cold | 0.106 / 0.121 | 0.107 / 0.140 | 0.117 / 0.175 | 0.124 / 0.213 | 0.057 / 0.078 | 0.050 / 0.100 | 0.049 / 0.121 | 0.047 / 0.127 | 0.081 / 0.098 | 0.077 / 0.119 | 0.082 / 0.146 | 0.085 / 0.167 |
Scores by calendar month of the reference date, one figure per season, states only (US excluded). Rows are the three metrics, columns the horizons:
100 × (WIS_base − WIS_cal) / WIS_base within the month, so
positive = calibrated WIS lower than base. Grey bars are the month’s
share of the season’s base WIS, so a large swing in a month with a small
bar costs little overall.100 × (bias_base − bias_cal) / bias_base, so positive =
calibrated coverage bias lower than base. The bias is computed within
the month: the mean over the 23 levels of |share of outcomes at or below
the quantile − level|. A season-pooled bias lets under-prediction on the
ramp cancel over-prediction after the peak; the monthly one does not.
When the base’s bias is already small, a small absolute change shows as
a large percentage; the month-average column of the coverage table below
gives the absolute values.A month holds one to five rounds of about 52 states, and outcomes in the same round move together, so a single month’s coverage bias is noisy and sits above zero even for a calibrated forecaster. That’s why the plot shows it relative to the base.
mv_plot_month <- mv$month
if (!is.null(get0("mv_plot_cfgs"))) {
mv_plot_month <- mv_plot_month %>% filter(config %in% mv_plot_cfgs) %>% mutate(config = droplevels(config))
}
for (s in sort(unique(mv_plot_month$season))) {
cat("\n\n", cal_h(2), " ", s, "\n\n", sep = "")
print(cal_month_plot(mv_plot_month, s, colours = get0("mv_cols"), linetype = get0("mv_linetype"), colour_by = get0("mv_colour_by") %||% "config"))
}
cat("\n\n", cal_h(2), " By horizon\n\n", sep = "")
cat("WIS reduction % (positive = calibrated WIS lower than base), states only; `both` pools the seasons.\n\n")
WIS reduction % (positive = calibrated WIS lower than base), states
only; both pools the seasons.
print(knitr::kable(cal_month_wis_table(mv)))
| config | 2024-2025 h0 | 2024-2025 h1 | 2024-2025 h2 | 2024-2025 h3 | 2025-2026 h0 | 2025-2026 h1 | 2025-2026 h2 | 2025-2026 h3 | both h0 | both h1 | both h2 | both h3 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| adaptive 0.03 | cold | no leak | +2.3 | -0.7 | -2.1 | -2.8 | -0.8 | -4.5 | -4.0 | -1.2 | +0.7 | -2.7 | -3.1 | -1.9 |
| adaptive 0.03 | cold | leak 0.1 | +1.7 | +0.4 | +0.3 | +0.4 | +0.5 | -2.0 | -2.8 | -3.1 | +1.1 | -0.8 | -1.4 | -1.4 |
| adaptive 0.03 | warm | no leak | +0.5 | -2.5 | -2.7 | -1.0 | -0.7 | -3.9 | -2.8 | +1.0 | -0.1 | -3.2 | -2.7 | +0.1 |
| adaptive 0.03 | warm | leak 0.1 | -0.9 | -2.5 | -1.1 | +1.7 | -0.4 | -1.3 | +0.8 | +4.9 | -0.6 | -1.9 | -0.1 | +3.4 |
| constant 0.018 | cold | no leak | +2.2 | -0.2 | -0.8 | -0.8 | -0.9 | -3.3 | -2.1 | +0.9 | +0.7 | -1.8 | -1.5 | +0.1 |
| constant 0.018 | cold | leak 0.1 | +1.5 | +0.3 | +0.2 | +0.3 | +0.6 | -1.4 | -1.7 | -1.2 | +1.1 | -0.5 | -0.8 | -0.5 |
| constant 0.018 | warm | no leak | -1.3 | -5.1 | -4.6 | -2.8 | -0.5 | -1.7 | +0.8 | +5.0 | -0.9 | -3.4 | -1.8 | +1.3 |
| constant 0.018 | warm | leak 0.1 | -3.2 | -6.8 | -6.0 | -4.0 | -1.1 | -2.6 | -0.7 | +2.2 | -2.2 | -4.7 | -3.2 | -0.8 |
| REF-op warm | -0.5 | -2.3 | -1.2 | +1.4 | +0.2 | -1.2 | +0.3 | +4.1 | -0.1 | -1.8 | -0.4 | +2.8 |
| REF-op cold | +1.9 | +0.3 | +0.0 | +0.1 | +0.6 | -2.4 | -3.2 | -3.1 | +1.3 | -1.1 | -1.7 | -1.6 |
print(knitr::kable(cal_month_cov_table(mv), caption = CAL_MONTH_COV_CAPTION))
| config | 2024-2025 h0 | 2024-2025 h1 | 2024-2025 h2 | 2024-2025 h3 | 2025-2026 h0 | 2025-2026 h1 | 2025-2026 h2 | 2025-2026 h3 | both h0 | both h1 | both h2 | both h3 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| base | 0.080 / 0.081 | 0.030 / 0.082 | 0.013 / 0.109 | 0.048 / 0.131 | 0.049 / 0.103 | 0.032 / 0.119 | 0.050 / 0.147 | 0.087 / 0.177 | 0.057 / 0.094 | 0.023 / 0.103 | 0.034 / 0.131 | 0.070 / 0.157 |
| adaptive 0.03 | cold | no leak | 0.056 / 0.062 | 0.033 / 0.094 | 0.013 / 0.121 | 0.019 / 0.142 | 0.023 / 0.091 | 0.021 / 0.125 | 0.020 / 0.148 | 0.024 / 0.172 | 0.022 / 0.079 | 0.016 / 0.112 | 0.014 / 0.136 | 0.017 / 0.159 |
| adaptive 0.03 | cold | leak 0.1 | 0.071 / 0.073 | 0.036 / 0.088 | 0.012 / 0.113 | 0.025 / 0.136 | 0.039 / 0.098 | 0.027 / 0.121 | 0.033 / 0.146 | 0.059 / 0.175 | 0.047 / 0.087 | 0.023 / 0.107 | 0.018 / 0.132 | 0.044 / 0.158 |
| adaptive 0.03 | warm | no leak | 0.086 / 0.089 | 0.093 / 0.108 | 0.096 / 0.126 | 0.105 / 0.148 | 0.021 / 0.092 | 0.020 / 0.123 | 0.025 / 0.148 | 0.029 / 0.171 | 0.034 / 0.091 | 0.044 / 0.117 | 0.050 / 0.138 | 0.057 / 0.161 |
| adaptive 0.03 | warm | leak 0.1 | 0.108 / 0.108 | 0.113 / 0.122 | 0.119 / 0.136 | 0.128 / 0.156 | 0.065 / 0.115 | 0.082 / 0.142 | 0.094 / 0.163 | 0.106 / 0.180 | 0.082 / 0.112 | 0.094 / 0.134 | 0.104 / 0.152 | 0.115 / 0.170 |
| constant 0.018 | cold | no leak | 0.060 / 0.065 | 0.029 / 0.089 | 0.008 / 0.114 | 0.037 / 0.135 | 0.025 / 0.092 | 0.025 / 0.125 | 0.032 / 0.147 | 0.049 / 0.172 | 0.025 / 0.080 | 0.015 / 0.110 | 0.021 / 0.133 | 0.043 / 0.156 |
| constant 0.018 | cold | leak 0.1 | 0.073 / 0.074 | 0.032 / 0.085 | 0.008 / 0.110 | 0.039 / 0.132 | 0.040 / 0.098 | 0.028 / 0.120 | 0.040 / 0.147 | 0.073 / 0.174 | 0.048 / 0.088 | 0.022 / 0.105 | 0.026 / 0.131 | 0.059 / 0.156 |
| constant 0.018 | warm | no leak | 0.091 / 0.094 | 0.106 / 0.116 | 0.117 / 0.135 | 0.136 / 0.163 | 0.022 / 0.092 | 0.025 / 0.122 | 0.046 / 0.150 | 0.076 / 0.181 | 0.038 / 0.093 | 0.056 / 0.120 | 0.075 / 0.144 | 0.100 / 0.173 |
| constant 0.018 | warm | leak 0.1 | 0.111 / 0.110 | 0.120 / 0.128 | 0.129 / 0.142 | 0.145 / 0.167 | 0.068 / 0.117 | 0.093 / 0.149 | 0.114 / 0.175 | 0.146 / 0.208 | 0.085 / 0.114 | 0.103 / 0.140 | 0.120 / 0.161 | 0.145 / 0.191 |
| REF-op warm | 0.104 / 0.104 | 0.110 / 0.120 | 0.116 / 0.135 | 0.125 / 0.155 | 0.052 / 0.107 | 0.067 / 0.133 | 0.078 / 0.156 | 0.090 / 0.176 | 0.073 / 0.106 | 0.084 / 0.128 | 0.093 / 0.147 | 0.104 / 0.167 |
| REF-op cold | 0.068 / 0.071 | 0.035 / 0.089 | 0.014 / 0.115 | 0.023 / 0.137 | 0.033 / 0.095 | 0.026 / 0.122 | 0.031 / 0.147 | 0.052 / 0.175 | 0.042 / 0.085 | 0.022 / 0.108 | 0.017 / 0.133 | 0.039 / 0.159 |