Proper Scoring Rules (CRPS, Log Score, Pinball Loss)

Summary

A scoring rule assigns a numerical reward to a predictive distribution when outcome materialises. It is proper if a forecaster whose true belief is maximises expected score by reporting , and strictly proper if is the unique maximiser. Gneiting & Raftery (2007) characterise all proper rules through convex functions (Theorem 1), link them to entropies and Bregman divergences, and catalogue the rules used in practice: the logarithmic score (↔ Shannon entropy / KL divergence / Bayes factors), the CRPS (a distance-sensitive score on CDFs that generalises absolute error), the energy score (multivariate CRPS), the pinball / check loss (proper for a quantile), and the interval score (proper for central prediction intervals, rewarding narrowness and penalising misses). Their case study shows that intuitive but improper scores lead to badly wrong conclusions.

Overview

Any comparison of probabilistic forecasts needs a loss that acts on distributions. The danger is that a badly chosen loss can be gamed: the forecaster does better, in expectation, by reporting something other than their honest belief — typically an over-confident distribution. Propriety rules this out. Because a proper score is maximised in expectation by the true data-generating distribution, averaging it over a test set measures calibration and sharpness simultaneously; one does not need separate penalties for interval width and coverage.

Gneiting & Raftery take scores to be positively oriented (rewards). The forecasting literature (DeepAR, Chronos, the M-competitions) uses the negatively oriented versions (losses); this note gives both.

Main Content

Proper and strictly proper scoring rule ^def-proper

Let be a convex class of probability measures on . A scoring rule is a function . Write the expected score under when is quoted as

is proper relative to if for all , and strictly proper if equality holds only when (Eq. 1, p. 360). If is (strictly) proper, so is for (Eq. 2): such rules are equivalent.

Characterisation via convex functions (Gneiting & Raftery, Theorem 1) ^thm-convex-characterisation

A regular scoring rule is proper relative to if and only if there exists a convex real-valued function on such that

where is a subtangent of at . The statement holds with strictly proper and strictly convex. Equivalently, the expected-score function is convex and is a subtangent of at (p. 361).

Entropy and divergence of a scoring rule ^def-entropy-divergence

is the generalised entropy (information measure) and

is the associated divergence (Eqs. 6-7); on finite sample spaces it is the Bregman divergence of . Proper rules also arise from decision problems: if is the Bayes act under and a utility, then is proper (Sec. 2.2).

Scores for density forecasts (Sec. 4.1)

Logarithmic score ^def-log-score

Strictly proper relative to the class of dominated measures. Its entropy is negative Shannon entropy and its divergence is the Kullback–Leibler divergence (p. 365). It is local — it depends on only through — and Bernardo (1979) showed every proper local rule is equivalent to it. Negatively oriented, it is the negative log predictive density (NLPD) used as the DeepAR training loss and as elpd in Bayesian Model Comparison.

Other density scores are the quadratic score and the spherical score . By contrast the linear score is not proper: it “encourages overprediction at the modes of an assessor’s true predictive density” (p. 366).

CRPS and the energy score (Secs. 4.2-4.3)

Continuous ranked probability score ^def-crps

For a predictive CDF on , in negative orientation,

with independent draws from (Eqs. 20-21). It is the integral of Brier scores over all thresholds, is proper on all Borel measures and strictly proper on those with finite first moment, is reported in the units of the observations, and reduces to the absolute error when is a point mass — so it “provides a direct way to compare deterministic and probabilistic forecasts” (p. 367). Its divergence is the Cramér–von Mises-type distance .

Closed form for a Gaussian forecast ^thm-crps-gaussian

With ,

For a sample of size the score is computable from order statistics in (Hersbach 2000).

The energy score , , generalises CRPS (, ) to vector-valued outcomes and is strictly proper (Eq. 22); at it degenerates to squared error of the mean, which is proper but not strictly proper. This is the natural score for joint sample paths over a horizon or across a hierarchy.

Quantile and interval forecasts (Sec. 6)

Proper scoring rules for a quantile (Theorem 6) ^thm-quantile-score

If is nondecreasing and arbitrary, then

is proper for predicting the -quantile (Eq. 40). Taking , gives (Eq. 41), whose negative is the tick / check / pinball loss

This is exactly the criterion minimised in Quantile Regression (Koenker & Bassett 1978; Sec. 9.2), and — doubled — the -risk of DeepAR and the WQL of Chronos (see Forecast Evaluation and Backtesting). Eq. 48 shows that integrating a proper quantile score over levels, , yields a proper score for the whole distribution. With pinball loss and uniform this construction gives the CRPS up to a constant — the standard identity (not stated explicitly in the paper; see Laio & Tamea 2007) is — which is why an average of doubled pinball losses over a quantile grid is used as a CRPS approximation.

Interval score ^def-interval-score

For the central interval (the and quantiles), negatively oriented,

(Eq. 43). “The forecaster is rewarded for narrow prediction intervals, and he or she incurs a penalty, the size of which depends on , if the observation misses the interval” (p. 370). It was later adopted as the interval metric of the M4 competition.

With fully specified forecasts, : the log Bayes factor is a difference of log scores (Eq. 51). With estimated parameters, the log marginal likelihood decomposes prequentially, (Eqs. 52-53) — a sum of one-step-ahead out-of-sample log scores, i.e. a rolling-origin backtest — and is asymptotically equivalent to BIC (Dawid 1984). For unordered data the authors propose random-fold cross-validation (Eq. 55) and conjecture the equivalences survive replacing the log score by CRPS. This ties forecast scoring directly to Overfitting and Information Criteria and Cross Validation Checking.

Skill scores are generally improper

The skill score (Eq. 8) is “generally improper, even if the underlying scoring rule is proper” (Sec. 2.3, p. 362), though hedging benefits vanish as the number of forecasts grows. Scores are only directly comparable over exactly the same set of forecast situations.

Examples

Why propriety matters — the Pacific Northwest ensemble (Sec. 8.2, Table 3). A five-member weather ensemble gives mean and spread for sea-level pressure at 16,015 station-times. The forecast density is and the question is which inflation factor is best; the ensemble is known to be under-dispersed (RMSE/spread ratio ).

ScoreProper?Optimal
Quadraticyes2.18
Sphericalyes1.84
Logarithmicyes2.41
CRPSyes1.62
Linear no0.05
Probability score no0.02

The improper scores recommend shrinking the spread to almost nothing — “essentially deterministic forecasts.” All proper scores correctly demand inflation. The log score picks the largest because it “involves a harsh penalty for low probability events and thus is highly sensitive to extreme cases”; the authors find CRPS “less sensitive to extreme cases or outliers” (p. 374).

Interval score beats coverage + width (Sec. 6.3, Table 2). For a bilinear process, three 95% one-step intervals all achieve ≈95% coverage: the true conditional interval (width 4.00), the unconditional interval (5.45) and a width-minimising interval (3.79) that perversely collapses when variance is highest. Average interval scores: , , . Coverage alone cannot separate them; width alone prefers the wrong one; the proper score ranks them correctly.

import numpy as np
from scipy.stats import norm
def crps_gaussian(mu, sigma, x):
    z = (x - mu) / sigma
    return sigma * (z * (2 * norm.cdf(z) - 1) + 2 * norm.pdf(z) - 1 / np.sqrt(np.pi))
def pinball(q, x, alpha):
    return np.where(x > q, alpha * (x - q), (1 - alpha) * (q - x))
def interval_score(l, u, x, alpha):
    return (u - l) + 2 / alpha * np.maximum(l - x, 0) + 2 / alpha * np.maximum(x - u, 0)

Connections

See Also