Country lead/lag cross-correlation
Time-shifted Pearson correlation between top-50 censored countries. Surfaces pairs where one country’s daily incident pattern reliably leads another’s by N days — useful for forecasting which country may be hit next when one starts shutting down.
Top 20 most significant lead/lag pairs
Ranked by |r|. Reading: when leader has a spike, follower has a spike lag_days later. Direction inferred from the lag with maximum |r|.
| # | Leader | → | Follower | Lag (days) | r | p (FDR) |
|---|---|---|---|---|---|---|
| 1 | SA Saudi Arabia | → | TH Thailand | 1 | +0.912 | <1e-6 |
| 2 | UZ Uzbekistan | → | PK Pakistan | 1 | +0.891 | <1e-6 |
| 3 | AZ Azerbaijan | → | JO Jordan | 1 | +0.847 | <1e-6 |
| 4 | TZ Tanzania | → | AZ Azerbaijan | 2 | +0.836 | <1e-6 |
| 5 | UZ Uzbekistan | → | AZ Azerbaijan | 1 | +0.801 | <1e-6 |
| 6 | IQ Iraq | → | KZ Kazakhstan | 26 | +0.780 | <1e-6 |
| 7 | UZ Uzbekistan | → | JO Jordan | 1 | +0.771 | <1e-6 |
| 8 | JO Jordan | → | PK Pakistan | 1 | +0.764 | <1e-6 |
| 9 | AE United Arab Emirates | → | TH Thailand | 1 | +0.756 | <1e-6 |
| 10 | AE United Arab Emirates | → | SA Saudi Arabia | 1 | +0.756 | <1e-6 |
| 11 | TH Thailand | → | KZ Kazakhstan | 1 | +0.749 | <1e-6 |
| 12 | SA Saudi Arabia | → | KZ Kazakhstan | 1 | +0.749 | <1e-6 |
| 13 | AE United Arab Emirates | → | QA Qatar | 1 | +0.747 | <1e-6 |
| 14 | TZ Tanzania | → | JO Jordan | 5 | +0.735 | <1e-6 |
| 15 | MA Morocco | → | IR Iran | 15 | +0.733 | <1e-6 |
| 16 | AZ Azerbaijan | → | PK Pakistan | 2 | +0.732 | <1e-6 |
| 17 | MM Myanmar | → | TZ Tanzania | 30 | +0.726 | <1e-6 |
| 18 | PK Pakistan | → | TZ Tanzania | 30 | +0.716 | <1e-6 |
| 19 | AE United Arab Emirates | → | PK Pakistan | 26 | +0.686 | <1e-6 |
| 20 | RW Rwanda | → | AZ Azerbaijan | 10 | +0.675 | <1e-6 |
Per-country lead/lag
For each country, the top countries that LEAD it (predictive signal) and the top countries IT LEADS. Only 20 countries have ≥5 nonzero days and ≥5 total incidents in the past 365 days and qualify for analysis.
- UZ +1d+0.89
- JO +1d+0.76
- AZ +2d+0.73
- AE +26d+0.69
- QA +15d+0.60
- TZ +30d+0.72
- RW +30d+0.52
- MM +1d+0.52
- BY +26d+0.45
- TZ +2d+0.84
- UZ +1d+0.80
- RW +10d+0.67
- MM +30d+0.53
- SY +1d+0.51
- JO +1d+0.85
- PK +2d+0.73
- MA +30d+0.61
- TZ +1d+0.63
- QA +14d+0.61
- AE +24d+0.59
- MM +30d+0.56
- RW +19d+0.50
- PK +1d+0.89
- AZ +1d+0.80
- JO +1d+0.77
- SY +1d+0.54
- MM +30d+0.73
- PK +30d+0.72
- RW +1d+0.65
- SY +1d+0.58
- BY +3d+0.58
- AZ +2d+0.84
- JO +5d+0.73
- MA +30d+0.65
- UZ +1d+0.63
- EG +2d+0.40
- AZ +1d+0.85
- UZ +1d+0.77
- TZ +5d+0.73
- RW +8d+0.61
- SY +1d+0.48
- PK +1d+0.76
- MA +26d+0.52
- RU +1d+0.65
- BY +1d+0.63
- IQ +1d+0.61
- RW +10d+0.57
- IR +1d+0.55
- VN +25d+0.55
- KZ +24d+0.53
- TH +22d+0.51
- SA +22d+0.51
- MA +25d+0.47
- IR +1d+0.60
- MM +1d+0.45
- EG +1d+0.65
- IQ +1d+0.57
- VN +27d+0.52
- PK +30d+0.51
- KZ +25d+0.51
- MA +15d+0.73
- MM +1d+0.67
- KZ +25d+0.61
- RU +1d+0.60
- TH +21d+0.60
- SA +21d+0.60
- MM +18d+0.52
- IR +19d+0.52
- IQ +21d+0.48
- EG +21d+0.43
- VN +18d+0.43
- TH +1d+0.76
- SA +1d+0.76
- QA +1d+0.75
- PK +26d+0.69
- UZ +24d+0.59
- RW +5d+0.65
- SY +1d+0.59
- RU +27d+0.45
- PK +26d+0.45
- MA +29d+0.66
- EG +1d+0.63
- TZ +3d+0.58
- UZ +14d+0.49
- AZ +4d+0.48
- IR +1d+0.58
- RU +1d+0.57
- MA +14d+0.44
- KZ +26d+0.78
- QA +19d+0.62
- EG +1d+0.61
- TH +22d+0.57
- SA +22d+0.57
- IR +1d+0.67
- PK +1d+0.52
- VN +17d+0.51
- MA +15d+0.46
- IQ +1d+0.44
- TZ +30d+0.73
- TH +21d+0.57
- SA +21d+0.57
- SY +30d+0.57
- UZ +30d+0.56
- AE +1d+0.75
- IQ +19d+0.62
- MM +18d+0.54
- IR +19d+0.53
- EG +19d+0.42
- TH +1d+0.67
- SA +1d+0.67
- UZ +14d+0.61
- PK +15d+0.60
- KZ +5d+0.59
- SY +19d+0.54
- PK +30d+0.52
- MM +30d+0.49
- IQ +14d+0.44
- AZ +10d+0.67
- BY +5d+0.65
- TZ +1d+0.65
- JO +8d+0.61
- EG +10d+0.57
- IQ +26d+0.78
- TH +1d+0.75
- SA +1d+0.75
- IR +25d+0.61
- QA +5d+0.59
- PK +26d+0.50
- SY +26d+0.47
- UZ +5d+0.44
- VN +2d+0.41
- BY +29d+0.66
- TZ +30d+0.65
- AZ +30d+0.61
- RW +30d+0.54
- JO +26d+0.52
- IR +15d+0.73
- MM +15d+0.46
- IQ +14d+0.44
- AE +1d+0.76
- QA +1d+0.67
- IR +21d+0.60
- IQ +22d+0.57
- MM +21d+0.57
- TH +1d+0.91
- KZ +1d+0.75
- PK +26d+0.57
- UZ +12d+0.47
- VN +4d+0.46
- MM +30d+0.57
- UZ +1d+0.54
- RU +30d+0.49
- KZ +26d+0.47
- TH +28d+0.45
- BY +1d+0.59
- PK +1d+0.58
- TZ +1d+0.58
- RW +19d+0.54
- MA +30d+0.52
- SA +1d+0.91
- AE +1d+0.76
- QA +1d+0.67
- IR +21d+0.60
- IQ +22d+0.57
- KZ +1d+0.75
- PK +26d+0.57
- UZ +12d+0.47
- VN +4d+0.46
- SY +28d+0.45
- EG +25d+0.55
- RU +27d+0.52
- IQ +26d+0.51
- IR +26d+0.51
- TH +4d+0.46
- MM +17d+0.51
- MA +6d+0.49
- AE +18d+0.43
Methodology
Inputs. Daily citable-censorship incident counts (incident_type IN ('censorship','mixed')) for the top-50 countries by 365-day volume. IODA disruption rows are excluded because they conflate fiber cuts, BGP outages, DDoS, and weather with censorship — the same correction shipped in the May-21 forecast-labels fix.
Smoothing. 7d centered rolling mean. Daily incident series are spiky point events; without smoothing the cross-correlation is dominated by accidental single-day overlap.
Cross-correlation. For each ordered pair (A, B) and lag L ∈ {-30, …, +30} \ {0}, we compute Pearson r between A[t] and B[t+L] over the overlap window. Two-sided p-value from the t-statistic on r with n_eff = 365 − |L|. Lag 0 is intentionally excluded: simultaneous correlation already lives at /atlas/correlation-matrix.
Direction convention. If the best lag is positive for (A, B), A leads B; if negative, we swap to (B, A) and flip the sign so reported lag_days is always non-negative.
Multiple-comparison correction. With 20 countries × 60 lags per pair, the raw p-values vastly overstate significance. We apply Benjamini–Hochberg FDR control at α=0.05 and require |r| ≥ 0.4. BH-FDR (rather than Bonferroni) is chosen because the analysis is exploratory and we tolerate a controlled false-discovery rate rather than the catastrophic loss of power Bonferroni would impose.
Sparse-country filter. Countries with fewer than 5 nonzero days OR fewer than 5 total incidents are dropped — they produce artifactual r=1.0 correlations after smoothing because two delta spikes trivially align. We started at 50 countries and kept 20 that clear the support floor.
Cross-correlation does NOT imply causation. Significant lead/lag pairs may reflect (a) one country influencing another, (b) shared regional or geopolitical drivers (elections, sanctions, fiber routes), or (c) downstream measurement effects from overlapping ISP infrastructure. lag=0 (simultaneous) is intentionally excluded -- see /atlas/correlation-matrix for that case. With 50 countries and 31 lags evaluated per pair, the raw p-values overstate significance; we apply Benjamini-Hochberg FDR control at alpha=0.05 and require |r| >= 0.4. Counts come from the citable-censorship subset (incident_type IN censorship/mixed) -- IODA disruption rows are excluded since they include fiber cuts / weather / DDoS.
Endpoints
GET /v1/atlas/lead-lag— full sidecar (pairs + per-country index).GET /v1/atlas/lead-lag/info— sidecar metadata only.GET /v1/atlas/lead-lag/{cc}— top-K leaders + followers for one country.