Spatial Statistics¶
Part of Statistical Methods — MORIE’s statistical-methods reference.
MORIE provides a comprehensive spatial statistics library covering global and local autocorrelation, geostatistical interpolation, geographically weighted regression, and point pattern analysis. The implementation achieves 100% chapter coverage of Schabenberger & Gotway (2005) across all 9 chapters.
All spatial functions live in morie/fn/ as individual files and
accept arbitrary column names via keyword parameters.
Global Autocorrelation¶
Measures of spatial dependence across the entire study region.
morai— Moran’s \(I\). Global spatial autocorrelation index in \([-1, +1]\). Schabenberger & Gotway Ch. 7.geary— Geary’s \(C\). Dissimilarity-based autocorrelation in \([0, 2]\). Ch. 7.getgo— Getis-Ord general \(G\). Hot/cold-spot clustering for positive attributes. Ch. 7.jncnt— Join count. Binary spatial autocorrelation on categorical data. Ch. 7.
from morie.fn import morai, geary
import numpy as np
values = np.array([2.5, 3.1, 2.8, 4.0, 3.7])
W = np.array([[0, 1, 0, 0, 1],
[1, 0, 1, 0, 0],
[0, 1, 0, 1, 0],
[0, 0, 1, 0, 1],
[1, 0, 0, 1, 0]], dtype=float)
result = morai(values, W)
print(f"Moran's I = {result.statistic:.4f}, p = {result.p_value:.4f}")
Local Indicators of Spatial Association (LISA)¶
Local decompositions that identify clusters and spatial outliers.
lisa— local Moran’s \(I\). Per-location cluster / outlier classification (HH, HL, LH, LL).getgi— Getis-Ord \(G_i^{*}\). Local hot/cold-spot z-scores.lgeary— local Geary. Local dissimilarity decomposition.
Each function returns per-observation statistics, pseudo p-values from conditional permutation tests (default 999 permutations), and cluster classification labels.
Geostatistical Interpolation¶
Prediction of values at unsampled locations using spatial covariance structure.
Variogram modelling:
svari— semivariogram estimation. Parameters:lag_dist,n_lags,model(spherical / exponential / gaussian).vfit— variogram fitting. Nugget, sill, range via weighted least squares.
Interpolation methods:
krige— ordinary kriging. BLUP with variogram model; returns predictions and variance.ukrig— universal kriging. Kriging with external drift / trend surface.idw— inverse distance weighting. Power parameter (default \(p = 2\)); no variance estimate.cokriging/cokrg— co-kriging. Multivariate kriging using cross-variograms.
from morie.fn import krige, svari
gamma = svari(x, y, values, n_lags=15, model="spherical")
predictions = krige(x, y, values, grid_x, grid_y,
variogram=gamma)
Geographically Weighted Regression (GWR)¶
Spatially varying coefficient models that capture local heterogeneity in regression relationships.
gwr— basic GWR with Gaussian / bisquare kernel; bandwidth via AICc, cross-validation, or fixed.gwpca— geographically weighted PCA; adaptive bandwidth.stgwr— spatio-temporal GWR; joint space-time bandwidth.
Spatial Weight Matrices¶
Functions for constructing spatial connectivity structures:
wqueen— queen contiguity (shared edge or vertex).wrook— rook contiguity (shared edge only).wknn— k-nearest neighbours.wdist— distance-based (threshold or inverse distance).wrow— row-standardise any weight matrix.
Point Pattern Analysis¶
ripk— Ripley’s K-function and L-function for clustering / dispersion.stkde— spatio-temporal kernel density estimation.stscan— space-time scan statistic (Kulldorff).
Density-Based Clustering¶
stdbs— DBSCAN with spatio-temporal distance metric. Used inmorie.tps_spatial_advancedto find connected hot clusters across the TPS incident feed and produce yearly small-multiples with a four-crime overlay (Assault / Robbery / Auto Theft / Break-and-Enter).hdbsc— HDBSCAN hierarchical variant for density-varying data.
Kulldorff Space-Time Scan¶
The Kulldorff scan statistic detects significant spatio-temporal
clusters by maximising a likelihood ratio over candidate cylindrical
windows in space-time. Implementation in stscan returns the most
likely cluster, its log-likelihood ratio, the Monte-Carlo p-value, and
the included neighbourhoods + time window. The Hohl-style
“panel d” visualisation is rendered by
morie.tps_render.render_satscan_panel — it draws the
significant cluster polygons over a base choropleth.
Reference: Kulldorff, M. (1997). A spatial scan statistic. Communications in Statistics 26(6):1481–1496.
Visualisation Helpers¶
The morie.tps_render and morie.tps_spatial_advanced
modules expose publication-style plot helpers commonly paired with
the spatial estimators above:
morie.tps_render.render_choropleth— choropleth (per 100k, 9 categories).morie.tps_render.render_district_proportional— district proportional-symbol map (6 former-borough divisions).morie.tps_render.render_quad— 4-panel quad (density / rate / LISA / \(G_i^{*}\)).morie.tps_render.render_yearly_grid— yearly small-multiples (4-crime overlay + DBSCAN clusters).morie.tps_render.render_dbscan— DBSCAN cluster overlay.morie.tps_spatial_advanced.bivariate_moran— bivariate Moran scatter.morie.tps_spatial_advanced.moran_sweep_heatmap— Moran sweep heatmap (categories × years).morie.tps_render.render_satscan_panel— Kulldorff panel d (Hohl-style).
Style follows Hohl, A. Geographic visualisation of disease cluster detection results.
Spatio-Temporal Extensions¶
25 spatio-temporal functions cover panel data, trajectory analysis,
and dynamic spatial processes: stacf, stscan, stkde,
stvar, stgwr, trajd, stdbs, ripk, gwpca,
stmrn, and 15 additional functions for spatio-temporal
autocorrelation, clustering, and prediction.
References¶
Schabenberger, O. & Gotway, C.A. (2005). Statistical Methods for Spatial Data Analysis. Chapman & Hall / CRC. 9 chapters, 100% coverage in MORIE fn/ files.
Armstrong, M.P. et al. (2000). Spatial voting analysis. 28/28 backends implemented.
Anselin, L. (1995). Local Indicators of Spatial Association — LISA. Geographical Analysis 27(2):93–115.