Hurricane outage impact forecast
A calibrated forecast of hurricane power-outage impact. Given an approaching storm and a county, it predicts the peak number of customers without power as an 80% prediction interval (P10โP90) with a P50 median. Trained on sgw-resilience-data.
How it works
- Three LightGBM quantile regressors (P10/P50/P90) trained on
log1p(peak_customers_out); predictions are back-transformed withexpm1and sorted per row so the bands never cross. - Asymmetric Conformalized Quantile Regression calibrates the interval to an 80% target, with offsets averaged over the evaluation folds.
Files
quantile_10.txt,quantile_50.txt,quantile_90.txtโ native LightGBM boosters.config.jsonโ features, quantiles, the log transform, and the conformal offsets.metrics.json,loso_per_storm.parquetโ evaluation results, in aggregate and per storm.
Evaluation
Leave-one-storm-out over 28 storms; each storm is held out once and scored by models trained on the others, with calibration storms disjoint from both train and test.
| metric | value |
|---|---|
| 80% interval coverage | 0.79 (target 0.80) |
| coverage per tail | 0.11 below / 0.10 above |
| per-storm coverage | 0.56โ0.92 (std 0.10) |
| mean interval width | ~6,800 customers |
| P50 mean absolute error | ~2,200 customers |
Coverage is calibrated in aggregate but marginal, not per-storm: with only 28 storms it is estimated coarsely, and an individual storm can be materially under- or over-covered. Magnitude transfer across storms is limited by the small storm record.
Usage
import json
import lightgbm as lgb
import numpy as np
cfg = json.load(open("config.json"))
boosters = [lgb.Booster(model_file=f"quantile_{int(q * 100):02d}.txt") for q in cfg["quantiles"]]
# X: array with columns cfg["features"], in that order
log = np.sort(np.column_stack([b.predict(X) for b in boosters]), axis=1)
lo = np.minimum(log[:, 0] - cfg["offsets_log"]["lower"], log[:, 1])
hi = np.maximum(log[:, 2] + cfg["offsets_log"]["upper"], log[:, 1])
p10, p50, p90 = (np.clip(np.expm1(v), 0, None) for v in (lo, log[:, 1], hi))
Limitations
Intended for South-East and Gulf hurricanes resembling the 2014โ2025 record; coverage degrades for storms unlike those seen. The features use distance-decayed intensity as a proxy rather than a physical wind field. The model is MIT licensed; the training data is CC-BY-4.0.
- Downloads last month
- 2