geoprior.scripts.compute_brier_exceedance#

Compute Brier scores for subsidence exceedance events.

Event#

y = 1{ subsidence_actual >= T }

Probability approximation#

We approximate P(subsidence >= T) from three quantiles (q10, q50, q90) by piecewise-linear interpolation of the CDF at (q10, 0.1), (q50, 0.5), and (q90, 0.9). Then p = 1 - F(T).

Inputs#

A calibrated forecast CSV that contains coord_t, subsidence_actual, subsidence_q10, subsidence_q50, and subsidence_q90.

Hold-out note#

Your “TestSet” calibrated CSV can also contain subsidence_actual (e.g. 2020-2022 hold-out). So we support three discovery modes:

  • --source auto (default): use TestSet if present, else fall back to Validation

  • --source test: require TestSet

  • --source val: require Validation

Outputs#

A tidy CSV under scripts/out/ by default with columns city, years, threshold_mm_per_yr, brier_score, n_samples, and src_csv.

Examples

Auto-discover (test-first):

python nat.com/compute_brier_exceedance.py \
  --root results \
  --source auto \
  --thresholds 30,50 \
  --years 2020,2021,2022

Force Validation:

python nat.com/compute_brier_exceedance.py \
  --root results \
  --source val \
  --out brier_scores_val.csv

Functions

brier_exceedance_main([argv, prog])

compute_brier_scores(df, *, thresholds, years)

Compute Brier scores for multiple thresholds.

exceed_prob_from_quantiles(q10, q50, q90, *, ...)

Vectorized piecewise-linear CDF interpolation.

main([argv])

geoprior.scripts.compute_brier_exceedance.exceed_prob_from_quantiles(q10, q50, q90, *, threshold)[source]#

Vectorized piecewise-linear CDF interpolation.

Returns p = P(s >= threshold) for each row.

Parameters:
Return type:

ndarray

geoprior.scripts.compute_brier_exceedance.compute_brier_scores(df, *, thresholds, years)[source]#

Compute Brier scores for multiple thresholds.

Returns rows with:

threshold_mm_per_yr, brier_score, n_samples

Parameters:
Return type:

list[dict[str, object]]

geoprior.scripts.compute_brier_exceedance.brier_exceedance_main(argv=None, *, prog=None)[source]#
Parameters:
Return type:

None

geoprior.scripts.compute_brier_exceedance.main(argv=None)[source]#
Parameters:

argv (list[str] | None)

Return type:

None