Reference-normalize weather transmission scale factor (AH_ref + clamp)#160
Merged
atmyers merged 1 commit intoJun 15, 2026
Merged
Conversation
The weather transmission model rho(T,AH) = p_max * exp(-beta_AH*AH - alpha_T*max(0,T-T0)) references the absolute-humidity exponential at AH=0, which never occurs in the data (US min 0.13, p05 2.9 g/m^3). As a result rho is far below 1 everywhere (US mean ~0.20, peak winter ~0.38). Because rho multiplies the calibrated baseline transmission probabilities (disease.p_trans / xmit_*), enabling the weather model suppressed effective transmission ~5x year-round and craters the calibrated R0. Move the exponential's reference point to a flu-season absolute humidity AH_ref (default 6.0 g/m^3) and clamp the result to 1: rho = min(1, p_max * exp(-beta_AH*(AH - AH_ref) - alpha_T*max(0,T-T0))) With p_max=1 the scale factor is 1 at/below AH_ref (and T<=T0), so the calibrated baseline is recovered during flu-season conditions and weather only attenuates toward summer. The clamp keeps 1 - infect*xmit*rho >= 0. Set AH_ref=0 to recover the previous un-normalised behaviour. The model form (exp decay in AH, T0~5C threshold) remains as supported by Shaman & Kohn 2009, Peci et al. 2019, Park et al. 2020, and Lowen et al. 2007; only the normalisation changes. Verified on a 120-day MA run: AH_ref=6 reproduces the no-weather baseline (~141k infections), whereas AH_ref=0 suppresses it to ~42k. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
atmyers
approved these changes
Jun 15, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Refinement to the weather-dependent transmission model added in #150. The model
references the absolute-humidity exponential at
AH = 0, which never occurs in the data (US min 0.13, p05 2.9 g/m³). Sorhois far below 1 everywhere — US mean ≈ 0.20, even peak winter only ≈ 0.38. Sincerhomultiplies the calibrated baseline transmission probabilities (disease.p_trans/xmit_*) viaprob = 1 - infect*xmit*rho, turning the weather model on suppresses effective transmission ~5× year-round and craters the calibrated R0.Change
Move the exponential's reference point to a flu-season absolute humidity
AH_ref(default 6.0 g/m³) and clamp the result to 1:With
p_max = 1the scale factor is 1 at/belowAH_ref(andT <= T0), so the calibrated baseline is recovered during flu-season conditions and weather only attenuates toward summer. The clamp keeps1 - infect*xmit*rho >= 0. SetAH_ref = 0to recover the previous behaviour.The model form (exponential decay in AH,
T0 ~ 5 °Cthreshold) is unchanged and remains supported by Shaman & Kohn 2009, Peci et al. 2019, Park et al. 2020, and Lowen et al. 2007 — only the normalisation changes.Verification
rho over
weatherData_US.csv(AH_ref=6, defaults): mean 0.47, winter (DJF) 0.81, summer (JJA) 0.13 (~6.3× swing), 22% of county-weeks at rho=1. Clamp invariant holds (max rho = 1, so1 - infect*xmit*rho >= 0).120-day MA simulation (
inputs.ma, built locally):do_weather=0(baseline)AH_ref=6(new default)AH_ref=0(old behaviour)The new default reproduces the calibrated epidemic (winter-seeded outbreak burns through while rho≈1), whereas the old un-normalised reference suppressed it to ~30%.
Files
src/WeatherTransmissionModel.H—AH_refmember + normalised/clamped compute, doc updatesrc/WeatherTransmissionModel.cpp— parseweather_transmission.AH_refdocs/source/usage/how_to_run.rst— formula +AH_refparameter docsexamples/inputs_random_us_weather— commentedAH_refreference line🤖 Generated with Claude Code