Detecting climate regime transitions using geodesic distance on the SPD covariance manifold GL+(d)/SO(d). 12 NOAA indices tracked over 68 years.
Riemannian fingerprinting detects anthropogenic, volcanic, and solar forcings at p<0.01. Euclidean methods fail (p=0.098–0.486).
Climate regimes (ENSO, PDO, AMO) are defined by shifts in the correlation structure between indices — not just changes in individual values. Standard methods (thresholding Niño3.4, PCA) miss structural shifts and can’t distinguish event types.
Covariance matrices live on a curved manifold, not in flat Euclidean space. Euclidean distance between covariances is distorted and scale-dependent.
The space of d×d covariance matrices is the symmetric space GL+(d)/SO(d), equipped with the affine-invariant (DeWitt) metric. The geodesic distance:
is affine-invariant: a 2× variance increase is equally detectable at any base level. By tracking this distance across rolling 6-year covariance windows of 12 climate indices, we detect regime transitions with geometric sensitivity.
Tested against all major ENSO events, volcanic eruptions, and decadal oscillation shifts.
Interactive visualization of geodesic distances, manifold embedding, correlation dynamics, and V+/V− decomposition.
| Date | Distance | σ | Type | Event |
|---|
Monthly anomaly data from NOAA, spanning tropical, oceanic, atmospheric, and global teleconnections.
Niño 3.4, SOI, Niño 1+2, Niño 3, Niño 4
Track tropical Pacific SST anomalies across four overlapping regions plus the Southern Oscillation pressure dipole.
PDO, AMO, DMI (Indian Ocean Dipole)
Decadal oscillations in the Pacific, Atlantic, and Indian Oceans. PDO and AMO modulate ENSO teleconnections.
NAO, PNA, AO (Arctic Oscillation), QBO
Pressure patterns governing mid-latitude weather, Arctic-tropical coupling, and stratospheric quasi-biennial oscillation.
Global Mean Temperature Anomaly
Integrates volcanic forcing, greenhouse trend, and internal variability. Available in the 13D configuration.
Watch SST anomaly patterns evolve on a rotating globe with teleconnection arcs. Before/after comparison of regime transitions.
72-month sliding window over 12 monthly climate indices
12×12 shrunk covariance matrix (Ledoit-Wolf, λ=0.1)
Affine-invariant distance on GL+(12)/SO(12)
Rolling μ + 2σ with 120-month lookback
Cross-reference with ENSO, volcanic, PDO, AMO catalogs
Volume vs shape decomposition classifies event type
Open source. pip install, detect regimes, build dashboards.
from omni_toolkit.applications.climate_analysis import (
ClimateRegimeDetector, ClimateDataLoader, VDecomposition
)
from omni_toolkit.applications.streaming_spd import ClimateMonitor
# Load data (CSV, NOAA API, or synthetic)
data = ClimateDataLoader.generate_synthetic(T=816, d=12)
# Detect regime transitions on SPD(12)
detector = ClimateRegimeDetector(window=72, threshold=2.0)
results = detector.detect(data)
detector.validate(results)
# V+/V- fingerprinting
vd = VDecomposition(results)
fingerprints = vd.fingerprint_analysis()
# Real-time streaming monitor
monitor = ClimateMonitor(window=72, threshold=2.0)
monitor.warm_up(data)
status = monitor.ingest_month(new_values, 2024, 3)
if status.is_alert:
print(f"Regime transition: {status.sigma_above:.1f}σ")