=== versions === python 3.12.0 | geopandas 1.2.0 | libpysal 4.15.0 | esda 2.10.0 | numpy 2.5.4 | pandas 3.0.6 === STATS19 collisions === 101,525 collisions in Great Britain in 2025 (12 months, 01/01/2025 .. 31/12/2025) Birmingham: 2,307 collisions | fatal 23, serious 418, slight 1866 boundary: Birmingham, 267.8 km2 === hexagon grid === 1,240 hexagons 500 m across (0.217 km2 each) cover 268.5 km2 2,288 of 2,307 collisions fall in the grid; 39.8% of hexagons have none; max 16 in one hexagon mean 1.85, variance 6.43 (variance/mean 3.5) === spatial weights === queen contiguity: 1240 units, mean 5.69 neighbours (min 1, max 6), islands 0 distance band 1 km: mean 16.6 neighbours (min 4, max 18) distance band 2 km: mean 52.3 neighbours (min 12, max 60) === global Moran's I (counts, queen, row-standardised) === I = 0.384 E[I] = -0.0008 z(normal) = 22.6 z(permutation) = 22.5 pseudo p = 0.0001 largest of 9999 permuted I values: 0.064 distance band 1 km: I = 0.338, z(permutation) = 33.6, pseudo p = 0.0001 distance band 2 km: I = 0.296, z(permutation) = 53.2, pseudo p = 0.0001 === Getis-Ord Gi* (queen + self, binary weights) === two-sided pseudo p-values: min 0.0002 (floor 2/(1+9999) = 0.0002) hot 99%: 59 cold 99%: 150 hot 95%: 47 cold 95%: 63 hot 90%: 30 cold 90%: 71 p <= 0.05 without correction: 319 hexagons (expected false positives under the null: 62) FDR (Benjamini-Hochberg, alpha 0.05) p threshold = 0.0081: 56 hot, 146 cold hexagons Bonferroni threshold would be 0.000040, below the smallest attainable p, so it would find nothing with 9999 permutations esda alternative='two-sided' instead: smallest p 0.0033, FDR threshold 0.0000, 0 significant hexagons FDR hot spots hold 369 collisions (16.1%) in 12.1 km2 (4.5% of the city) === local Moran's I (LISA, queen, row-standardised) === FDR threshold 0.0017; High-High 34, Low-High 3, Low-Low 2, High-Low 2 uncorrected p <= 0.05: High-High 88, Low-High 22, Low-Low 124, High-Low 8 High-High LISA and Gi* hot spots agree on 34 hexagons; Gi*-only 22, LISA-only 0 === Gi* hot spots under different weights (FDR 5%) === queen (6 neighbours) hot 56 cold 146 hot area 12.1 km2 FDR p threshold 0.0081 distance band 1 km (18) hot 149 cold 255 hot area 32.3 km2 FDR p threshold 0.0163 distance band 2 km (~60) hot 295 cold 405 hot area 63.9 km2 FDR p threshold 0.0282 hot-spot overlap (Jaccard) queen vs distance band 1 km: 0.36 hot-spot overlap (Jaccard) queen vs distance band 2 km: 0.19 hot-spot overlap (Jaccard) distance band 1 km vs distance band 2 km: 0.48 === modifiable areal unit problem === hexagons 250 m units 4942 mean count 0.46 Moran's I 0.187 (z 22.4) FDR hot 165 units = 8.9 km2 holding 11.4% of collisions hexagons 500 m units 1240 mean count 1.85 Moran's I 0.384 (z 22.8) FDR hot 56 units = 12.1 km2 holding 16.1% of collisions hexagons 1 km units 310 mean count 7.25 Moran's I 0.552 (z 15.8) FDR hot 20 units = 17.3 km2 holding 20.7% of collisions LSOAs (659) units 659 mean count 3.49 Moran's I 0.331 (z 14.4) FDR hot 14 units = 7.9 km2 holding 9.6% of collisions === normalising by exposure: road length === 22,464 OSM road ways; 2,842 km of road inside the grid (dual carriageways are mapped as two ways and count twice) road length per hexagon: median 2.4 km, 185 hexagons under 1 km correlation between collisions and road length per hexagon: r = 0.49 1053 hexagons with >= 1 km of road; city-wide rate 0.817 collisions per road-km Moran's I of the empirical-Bayes rate: 0.282 (z 14.4, pseudo p 0.0001) EB-rate LISA (FDR 5%): High-High 16, Low-High 3, Low-Low 3, High-Low 0 count Gi* hot spots on this subset: 41; EB-rate High-High: 16; in both: 14 10 busiest hexagons: median 4.2 road-km vs 2.6 median of all 1053 wrote figures 01-07 and output/birmingham_hexagons_gi.gpkg