ACTUARIAL GLM FEATURE REVIEW — ew-glm-review-v1 — 13 October 2026

PURPOSE
A user-led inclusive review. All 40 features with existing national bands enter one unpenalised Poisson log-link model together. Each of the other ten numeric features enters a separate raw-value restricted cubic spline extension, with all 40 original features retained and refitted on the same restricted cohort. Twelve candidates have no numeric data. Nothing is automatically dropped or merged. This release does not complete the old F8 penalised/nested-selection protocol.

OUTCOME AND EXPOSURE
Distinct motor-involved police-recorded STATS19 injury collisions at collision location. Offset = log(vehicleMiles/100000); expected count = vehicleMiles/100000 * exp(design * coefficients). exp(design * coefficients) is modelled frequency per 100,000 miles. The model includes eligible zero-collision observations. Allocated mileage is provisional. This is not all-crash frequency, residence risk, policyholder claims frequency or causal evidence.

COHORT AND NATIONAL REFERENCE
Frozen national bands retain the full England/Wales 35,672-LSOA reference population. The main complete-case development fit uses 32,789 LSOAs, 65,578 observations in 2022–2023, 185,755 collisions and 540,614,673,590 allocated miles. Model missingness never redefines a national band. Diagnostics 2024–2025 use 34,515 LSOAs in each year. Each raw-value extension states its own cohort. Speed extensions cover only 1,513 development LSOAs and use current, selectively observed speed data; terrain values remain unvalidated proxies.

MODEL AND RELATIVITIES
Main features use categorical effects, with D5 reference (or structural zero Z0 where present, otherwise nearest observed band). Core terms are intercept, year, Wales x year, sum-zero region, urban/rural, four mileage-quality shares, and estimated-major-mileage share. Raw forms of the 40 features in the old baseline are replaced, not duplicated. 378 coefficients are identifiable in the primary development fit.
RR 1.20 means 20% higher fitted frequency than the stated reference with other model terms held fixed. Correlated/compositional feature combinations may have little support in real data. Raw rates = total collisions / total miles *100000; fitted rates use total expected collisions / total miles *100000. They are not unweighted means of LSOA rates.
Cluster sandwich intervals use permanent authority/source-area blocks with a finite-sample correction (162 blocks in the primary cohort). Exact null-space checks prevent aliased coefficients being presented as neutral effects. Main dispersion is 1.864; no full-model Wald test is attempted because cluster covariance rank is smaller than the coefficient count. Per-feature conditional Wald p and BH q are review aids, with separate families of 40 primary and ten exploratory diagnostic tests. No selection rule is applied.
Adjusted GVIF is GVIF^(1/(2df)), calculated from model-based slope covariance with the intercept excluded. Raw overlap is unique-development-LSOA Spearman correlation. Neither decides a drop.

VALIDATION AND SENSITIVITIES
2022 fit ->2023 test; ten leave-one-region-out fits over development years. Every comparator is refitted on the candidate's identical observations. Previously inspected 2024/2025 results are diagnostics only. Later years inherit the last trained year effect. National bands remain fixed; model coefficients and extra-feature spline knots refit inside each training fold. Unknown held-out categorical levels are excluded from both scores and counted.
The richer Phase4 comparator has a different form: held-out comparison is non-nested, with no likelihood-ratio p-value. Gain =1-D(candidate)/D(comparator). Main temporal gain 16.503%; pooled geographic gain 19.417%. O/E =0.951 and 1.085 respectively. Regional calibration remains uneven. Matched counted-route gain is only 1.268%, with an interval spanning zero.
A feature's conditional contribution compares the full model with a refit excluding that feature. It is evaluated on 2023 after training on 2022; it is not a univariate importance measure. The in-sample deviance change is separate. Removing correlated features together can change their combined contribution substantially.
Gain intervals use 1,000 paired fixed-prediction block draws, seed 20261012. They omit model-refit, selection, exposure and source-measurement uncertainty. Source vintages are mixed and some covariates are later snapshots or climate normals. Retrospective predictive association is not prospective, causal or insurer-claims validation.
Preferred, benchmark and road-length mileage fits are available. Matched counted routes use collision and physical-mileage scope consistently, with allocation quality set to zero. Annual coefficient fits use 2022 and 2023 separately.

TEN RAW-VALUE EXTENSIONS
Separate restricted cubic splines on each feature's usable observations; training knots at 5/27.5/50/72.5/95 percentiles. Crime rates and mean terrain gradient use log1p; other features use identity. Reference is the development median. Tied quantiles reduce unique knots: speed_le30 is a one-df linear term, speed_le20 and steep_road_share have three df, and the other extensions have four df. Grid values are raw quantiles, NOT national deciles. Linear sensitivity curves are also supplied; their development shape is not independently validated. Each temporal extension comparison uses a same-cohort 40-feature comparator. These ten effects do not form a joint 50-feature model.

USER DECISIONS
The website offers Undecided / Keep / Drop / Simplify, a proposed grouping/functional form and notes. Choices persist in browser local storage and export to JSON. They do not change model predictions. Upload the exported decisions for a new joint refit; all remaining coefficients, calibration and validation must update. Never remove a feature by multiplying away a factor or merge bands by averaging relativities. Adjacent-band intervals containing 1 do not prove equivalence.

OFFLINE REPRODUCTION
Extract reproduce-ew-glm-review-v1.zip into a fresh directory. Use Python3.12 with requirements.txt; the tested environment used NumPy2.3.5, pandas2.2.3, SciPy1.17.0, statsmodels0.15.0, Patsy1.0.3. Requirements is inherited from the prior evidence environment.
  python -m pip install -r requirements.txt
  OPENBLAS_NUM_THREADS=2 OMP_NUM_THREADS=2 python scripts/reproduce-ew-glm-review.py
The kit includes exact pinned inputs and the full required model code; no data acquisition or credentials are needed. Every numerical output is compared to a SHA256 manifest. Different BLAS/library versions can change exact bytes; investigate differences, never silently accept them. Model record coefficients are stored on RMS-scaled design columns; divide by the corresponding scale to obtain raw-design coefficients. Only selectedIndices are fitted when a design contains aliases. Model records include full covariance, design, references, scales, nullspace, knots and diagnostics.

FILES
register.json / feature-review.csv: all62 candidates and contributions.
features/: full per-feature evidence, source definitions/vintages, coverage, curves and conditional effects.
all-relativities.csv.gz: six primary coefficient contexts with exact support.
adjacent-band-contrasts.csv: covariance-aware adjacent contrasts.
diagnostic-curves.csv: spline curves for ten separate raw extensions.
metrics.csv / calibration.csv / validation-predictions.csv.gz: held-out metrics, subgroup calibration, prediction counts and frequency.
models/: coefficient/covariance/design records for joint, holdout, removal and raw-extension fits.
input-checksums.json: exact required inputs. model-output-checksums.json: numerical outputs.
frozen-prior-files.json: all783 previous scientific files preserved unchanged.
specification.json: frozen design. release-verification.json: local validation scope.
Actuarial_GLM_Feature_Review.pdf: illustrated review, source notes and printable decisions.

METHOD REFERENCES
Poisson GLM log-link and exposure conventions: https://www.statsmodels.org/stable/generated/statsmodels.genmod.generalized_linear_model.GLM.html
Cluster sandwich convention: https://www.statsmodels.org/stable/generated/statsmodels.stats.sandwich_covariance.cov_cluster.html
Source-specific records remain in each feature's metadata and frozen input releases.
