# London baseline and qualifications — reproducible study v1

Published 20 October 2026. Original analytical snapshot: 10 October 2026.

## Start here

Read study-specification.json, assumptions.json and source-manifest.json first.
The original study is retained unchanged in original/. Its older statements about
not publishing refer to that historical delivery, not this website release.

With Python 3.12 installed, extract this ZIP into an empty directory:

    python3 -m venv .venv
    .venv/bin/python -m pip install -r requirements.txt
    .venv/bin/python reproduce.py --full-bootstrap

Windows: use `python` to create the environment and `.venv\Scripts\python.exe`
for the two subsequent commands. Network access is needed only to install the
two pinned dependencies. The analysis itself runs offline. Allow several minutes
for all 399 bootstrap draws; time depends on hardware. Keep BLAS threads at one
(the runner sets OPENBLAS_NUM_THREADS, OMP_NUM_THREADS and MKL_NUM_THREADS).

`python3 reproduce.py --audit-only` needs only the standard library. It checks
checksums, inputs, joins, units, deciles, aggregate rates and saved predictions;
it does not fit models. `reproduce.py` without flags refits temporal, borough and
central-pair models, plus mileage scenarios, and reconstructs intervals from
archived draws. Only `--full-bootstrap` freshly refits every bootstrap draw.

The runner exits nonzero on a failure. Read outputs/validation.json and
outputs/sensitivity-validation.json. Prediction tolerance is absolute 1e-6 plus
relative 1e-8; arithmetic comparisons use absolute 1e-8 plus relative 1e-9.
All 399 bootstrap positions remain, including failed draws; none are replaced.
Outputs are regenerated; the original/ snapshot is never overwritten.

## Reproduction boundary

The pack includes all frozen model inputs and required model code. It starts
with 1,064 authority-year rows, not raw STATS19 extraction. Primary-source URLs,
archived-byte links, exact hashes, release vintages and exclusions are included
for inspecting upstream preparation. Do not replace sources with current data.
The CSV traffic snapshot and Census count/share context enable extra independent
input checks. They are not a fresh raw-data rebuild.

## Interpretation

The 33 London authorities contribute 99 assessment rows in 2023–2025. Numerator:
64,815 police-reported injury collisions; denominator: 58,278,600,000 motor miles.
Rate: 0.11121578074970916 per 100,000 miles. Do not average authority rates.
National vs selected London baseline and social additions have different
comparators; consult metrics.csv and study-specification.json.

No social block passes every prespecified support, persistence and uncertainty
check. All outcomes were inspected previously. Reproduction is a calculation
check, not proof of causation, fresh validation, or approval for insurance pricing.
No human actuarial review is claimed.

The five mileage scenarios are stress assumptions, not an estimate of DfT error.
All scenarios refit the national anchor, nested baseline selection and social
models. Inner/Outer reallocation preserves London's annual mileage total.

## Files

- study-specification.json and its reusable schema: purpose, measures and gates.
- source-manifest.json: releases, URLs, attribution, hashes and reuse terms.
- data-dictionary.json / assumptions.json: meanings, units and assumptions.
- original/: immutable original inputs, protocols, code and reference outputs.
- reproduce.py / independent_checks.py / mileage_sensitivity.py /
  validate_sensitivity.py: runnable analysis and distinct calculation checks.
- input-context/: DfT original traffic and Census count/share reconciliation data.
- outputs/: validation, freshly fitted predictions and mileage scenarios.
- pack-manifest.json: SHA-256 for code, specifications, inputs and original files;
  generated outputs are excluded because a rerun changes them.

Attribution: Department for Transport; Office for National Statistics via Nomis;
English Indices of Deprivation publishers, under OGL v3.0 where stated; Greater
London Authority for the London Plan classification. The source guide inspired
the workflow; its text and PDF are not redistributed.
