evaluate.eval_coverage()
Empirical coverage of the central alpha prediction interval.
Usage
evaluate.eval_coverage(pred: Float[Array, " sample *batch"] | Float[np.ndarray, " sample *batch"], truth: Float[Array, " *batch"] | Float[np.ndarray, " *batch"], alpha: float = ..., batch_size: None = None) -> Array
evaluate.eval_coverage(pred: Float[Array, " sample *batch"] | Float[np.ndarray, " sample *batch"], truth: Float[Array, " *batch"] | Float[np.ndarray, " *batch"], alpha: float = ..., batch_size: int) -> Array | np.floatingThe central alpha interval is bounded by the (1 - alpha) / 2 and 1 - (1 - alpha) / 2 quantiles of the forecast samples; the metric is the fraction of ground-truth values that fall inside it. A well-calibrated forecast has coverage close to alpha. A pure JAX scalar kernel (see ~numpyro_forecast.typing.Metric); bind a non-default level with functools.partial(eval_coverage, alpha=...).
Parameters
pred: Float[Array, " sample *batch"] | Float[np.ndarray, " sample *batch"]-
Forecast samples with the sample axis first.
truth: Float[Array, " *batch"] | Float[np.ndarray, " *batch"]-
Ground-truth values (matching
predwithout the sample axis). alpha: float = _DEFAULT_COVERAGE_ALPHA-
Nominal interval level in
(0, 1); defaults to0.9. batch_size: int | None = None-
Optional number of flattened data cells evaluated on the accelerator per pass (see eval_crps(); the sample axis is never chunked). Coverage is a count of exact 0/1 indicators, so chunking recovers the identical count; only the precision of the final division differs from the single pass.
None(default) evaluates in one pass.
Returns
Array | np.floating-
The fraction of ground truth inside the central
alphainterval, as a scalar (a NumPy scalar when chunked).
Raises
ValueError-
If
alphais not strictly inside(0, 1).