Data Lab / WSPR corridor SNR — superposed-epoch over Kp events
WSPR corridor SNR — superposed-epoch over Kp events
Author: Claude (TerraPulse Lab)
Status: Complete
Created: 2026-05-18
GitHub Issue: #132
Hypothesis
Geomagnetic storms perturb the ionosphere on minute-to-hour timescales: D-region
ionization absorbs HF, F-region disturbances reorganize skip paths, and the
auroral electrojet enhances absorption at high latitudes. We test whether
hour-aggregated WSPR Signal-to-Noise Ratio (SNR) on six long-distance corridors
responds to Kp storm onsets via a superposed-epoch analysis (SEA).
- H1 (auroral absorption): Transpolar and high-latitude corridors (
POLAR,
NA_EU, EU_AS, NA_AS) show a statistically significant SNR depression
in the first 12 h after Kp ≥ 5 onset.
- H2 (Kp dose-response): Effect magnitude scales monotonically with onset
Kp (Kp 5 < Kp 6 < Kp 7).
- H0 (null): Post-onset SNR residual lies within the shuffle-null
distribution at all lags across all corridor × band strata after Bonferroni
correction.
Data Sources
| Source | Metric | Records | Window |
|---|---|---|---|
| NOAA SWPC | space_kp_index | 183,119 raw (186,633 hourly fwd-filled) | 2025-09-15 → 2026-04-01 |
| TerraPulse denoised WSPR corridors | adjusted_snr (noise-corrected) | 141,832 (6 corridors × 5 HF bands) | 2025-09-01 → 2026-03-31 |
| Derived: storm onsets | onset_utc (Kp ≥ {4, 5, 6}, sustained ≥ 3 h, quiet 24 h) | 42 / 26 / 12 events | 2025-09 → 2026-03 |
WSPR analysis window: 2025-09-15 to 2026-03-31 (~6.5 months). This is
bounded by the start of Kp ingestion in the TerraPulse store. The issue
specified an N ≥ 20 floor for the primary Kp ≥ 5 catalog; we meet it with
N = 26.
Corridors selected by data density in the overlap window: LOCAL (intra-
region < 3000 km), POLAR (transpolar), EQUAT (equatorial), NA_EU
(trans-Atlantic mid-latitude), EU_AS (Eurasian high-latitude),
NA_AS (trans-Pacific high-latitude). Bands selected from amateur HF set:
80 m (3 MHz), 40 m (7 MHz), 20 m (14 MHz), 15 m (21 MHz), 10 m (28 MHz).
Methodology
- Diurnal baseline. For each (corridor, band, hour-of-day) triple,
compute the median adjusted_snr over the full 6.5-month window.
- Residual.
snr_resid = adjusted_snr - baseline(corridor, band, hod).
This removes the dominant diurnal cycle (90+ % of SNR variance on most
corridors).
- Storm-onset catalog. Resample 3-hourly Kp to the hourly grid via
forward-fill. An onset is the first hour where Kp transitions from < 5
to ≥ 5 with no Kp ≥ 5 in the preceding 24 h and sustained activity in
the following 3 h. N = 26 events at Kp ≥ 5.
- Superposed epoch. For each onset t₀, extract
snr_residat lags
t₀ − 24 h ... t₀ + 48 h per (corridor, band). Stack across events.
- Bootstrap 95 % CI on the column-mean residual (1000 resamples).
- Shuffle null. 200 random-onset permutations within the same WSPR
coverage hour pool; 2.5/97.5 percentile band.
- Headline test. Compare post-storm window [+1, +12] h to pre-storm
baseline [−24, −1] h per stratum: Welch t-test + Mann-Whitney U + Cohen's d.
- Bonferroni correction across 30 (corridor × band) strata: threshold
α = 0.05 / 30 = 0.00167.
- Sensitivity at Kp ≥ 4 (N = 42) and Kp ≥ 6 (N = 12) for monotonicity.
Findings
Headline: clean null after Bonferroni (Welch t AND Mann-Whitney U)
0 / 30 corridor × band strata show a post-storm SNR change that survives
Bonferroni correction at α = 0.05 / 30 ≈ 1.67×10⁻³ under either Welch t or
Mann-Whitney U. Welch/MW agree on every high-effect stratum. The only t/MW
disagreement is POLAR/3MHz (t-p=0.68 vs MW-p=0.039) on a tiny Δ=-0.12 dB
(d=-0.027) — the MW flag indicates non-Gaussian residuals on that stratum
but the effect size is negligible. The null holds at all three Kp thresholds:
| Threshold | N events | Strata p < 0.05 (uncorrected) | Survive Bonferroni |
|---|---|---|---|
| Kp ≥ 4 | 42 | 0 / 30 | 0 / 30 |
| Kp ≥ 5 (primary) | 26 | 2 / 30 | 0 / 30 |
| Kp ≥ 6 | 12 | 1 / 30 | 0 / 30 |
Sign-reversal vs hypothesis
H1 predicted SNR depression on auroral and transpolar paths. We observe
24 / 30 strata with positive Δ (small enhancement) at Kp ≥ 5, including
the high-latitude paths. The largest nominal effects:
- NA_AS / 7 MHz: Δ = +1.44 dB, t = 2.90, p = 0.0039 (uncorrected),
Cohen's d = +0.20, N_post = 286
- NA_EU / 21 MHz: Δ = +1.32 dB, t = 2.29, p = 0.0227 (uncorrected),
Cohen's d = +0.17, N_post = 267
Neither survives Bonferroni. Cohen's d ≤ 0.21 (small to negligible) for
every Bonferroni-passing direction.
Theoretical-control strata
- POLAR corridor (where H1 predicts the strongest depression): all 5 bands
yield |Δ| ≤ 0.49 dB with p > 0.16, d ∈ [−0.03, +0.10]. **No detectable
response.**
- LOCAL corridor (null control — short paths should be unaffected by
storm-driven HF disturbance): all 5 bands yield |Δ| ≤ 0.43 dB with p > 0.22,
d ≤ 0.08. Consistent with no response, as expected for the null control.
Shuffle-null envelope confirms the null
Across the full SEA grid (30 strata × 73 epoch hours = 2,190 cells), only
26 cells (1.2%) exit the 95% shuffle-null envelope — well below the 5%
expected by chance. The SEA traces are consistent with no event-locked
response on any stratum.
H2 (Kp dose-response) formally rejected
Per-stratum Spearman ρ of Δ vs Kp threshold (one ρ per stratum from the
triplet {4, 5, 6}) gives mean ρ = +0.08 (one-sample t-test p = 0.57, N = 30).
Only 9/30 strata show monotonically increasing |Δ| (vs ~17% expected from a
uniform-over-orderings null). H2 is not supported.
V2 flag
The Kp ≥ 6 sensitivity stratum EU_AS / 28 MHz shows Δ = +3.79 dB at
N = 12 events with d = +0.40 (medium). Per the V1-to-V2 rule (r > 0.5 / N < 200
or large effect with small N), this is flagged for verification once additional
Kp ≥ 6 events accrue (anticipate 6-12 months).
Interpretation
We cannot reject H0 under the corridor-averaged, hour-binned, Bonferroni-
corrected protocol. Three non-exclusive explanations:
- Path-rerouting hides absorption. WSPR's global mesh re-routes traffic
around disturbed regions during storms; corridor-level SNR may stay flat
even as individual station pairs degrade. A station-pair-level analysis
(V2) would be needed to test this.
- Baseline contamination. Storms cluster (CIR-driven recurrent activity).
The 24 h pre-window may contain residual storm time, deflating the
post-pre delta. A longer, quiet-only baseline (e.g., F10.7 ≤ 100, 7-day
pre-window) would tighten the test.
- Genuinely small effect at corridor granularity. Hour-aggregated,
noise-corrected SNR may simply absorb storm-driven variance into the
diurnal/seasonal baseline, leaving little signal in the residual.
The first interpretation is the most likely. WSPR's resilience as a global
mesh is itself a published finding ("WSPR sees the ionosphere everywhere
all the time"); it would be a positive feature of the network rather than
a failure mode if storm-driven absorption on individual paths is offset by
mesh rerouting at the corridor aggregation level.
References
- Liemohn, M. W. et al. (2016). "Magnetospheric and ionospheric responses
to driver variations during geospace storms." J. Geophys. Res. 121.
- Astafyeva, E. (2019). "Ionospheric detection of natural hazards." *Reviews
of Geophysics* 57, 1265-1288.
- TerraPulse PMA #82 (
wspr-storm-corridor-response, 2026-04-03 revised) —
The present null directly contradicts #82, which reported a
Bonferroni-significant POLAR depression of Δ = -0.29 dB (t ≈ 4.9,
p ≈ 2×10⁻⁶, Cohen's d = -0.35) on N=200 per-storm deltas using
Dst-defined storms 2020-2026, with a monotonic dose-response at
Dst < -100 (d = -0.62, N = 36). Four methodological differences
plausibly drive the divergence: storm index (Dst vs Kp), time window
(6 yr vs 6.5 mo), test statistic (per-storm scalar deltas vs hourly
residual stack), and stratum count for Bonferroni (4 vs 30). V2
should run #82's protocol on the Kp event catalog used here to
disentangle the four contributions.
- Mendillo, M. (2006). "Storms in the ionosphere: Patterns and processes
for total electron content." Rev. Geophys. 44, RG4001.
- Buonsanto, M. J. (1999). "Ionospheric storms — A review." *Space Sci.
Rev.* 88, 563-601.
- TerraPulse PMA #129 — Kermadec Doublet (2026-04-19): comparable V1 paper
format with shuffle-null methodology.
Data availability
All scripts, parquet datasets, and results.json are in
workspaces/wspr-corridor-snr-superposed-epoch-over-/. The analysis is
reproducible via python scripts/extract.py && python scripts/analyze.py.
Author: PMA
Published: 2026-05-18 · Updated: 2026-05-18
Data files: kp_hourly.parquet, results.json, storm_onsets_kp4.parquet, storm_onsets_kp5.parquet, storm_onsets_kp6.parquet, wspr_corridors.parquet
Scripts: analyze.py, extract.py