Data
1,154,102 crime records from NZ Police (Feb 2022 – Jan 2026), covering 6 crime types across 42,778 meshblocks. Data cleaned from UTF-16 CSV, joined to Stats NZ 2017 Area Unit and 2018 Meshblock geographic boundaries (99.4% and 81.2% join rates respectively).
Spatial Grid
A 500m × 500m regular grid (77 rows × 59 cols = 4,543 cells) overlaid on the Auckland urban area in NZTM2000. Crime counts are allocated to grid cells via meshblock centroids. The result is a 4D tensor: (48 months × 77 × 59 × 6 crime types).
Models
ConvLSTM (Primary)
3-layer Convolutional LSTM with 32→64→32 hidden channels. Processes 6-month lookback windows. 376K parameters trained with MSE on log1p-transformed counts.
Test RMSE: 1.128 · Best on burglary (0.61)
ST-ResNet (Secondary)
Two-branch residual network: Closeness (last 3 months) + Period (same month last 3 years). 4 residual units per branch, 64 hidden channels. 614K parameters.
Test RMSE: 1.181 · Best on assault (0.53)
Results
| Model | RMSE | Theft | Burglary | Assault |
|---|---|---|---|---|
| Last Month (baseline) | 0.996 | 2.20 | 0.77 | 0.64 |
| Historical Average | 1.290 | 3.04 | 0.63 | 0.51 |
| ConvLSTM | 1.128 | 2.61 | 0.61 | 0.63 |
| ST-ResNet | 1.181 | 2.76 | 0.62 | 0.53 |
Limitations
- Only 30 training samples (months) — deep learning models need more data to outperform simple baselines overall
- Auckland-only grid — other cities use TA-level aggregation
- Monthly granularity — finer temporal resolution could capture day/hour patterns
- No external features (weather, events, demographics) included