climpred.metrics._get_norm_factor(comparison: Any) int[source]#

Get normalization factor for normalizing distance metrics.

A distance metric is normalized by the standard deviation or variance of the verification product. The goal of a normalized distance metric is to get a constant and comparable value of typically 1 (or 0 for metrics defined as 1 - metric), when the metric saturates and the predictability horizon is reached.

To directly compare skill between different comparisons used, a factor is added in the normalized metric formula, see Seferian et al. 2018. For example, NRMSE gets smaller in comparison m2e than m2m by design, because the ensemble mean is always closer to individual ensemble members than ensemble members to each other.


This is used for NMSE, NRMSE, MSSS, NMAE.


comparison – comparison class.


fac – normalization factor.


KeyError – if comparison is not matching.


>>> # check skill saturation value of roughly 1 for different comparisons
>>> for c in ["m2m", "m2e", "m2c", "e2c"]:  
...     s = PerfectModelEnsemble.verify(metric="nrmse", dim=None, comparison=c)
...     s.tos.plot(label="nrmse {c}")


  • Griffies and Bryan [1997]

  • Collins [2002]

  • Séférian et al. [2018]