def _nmse(ds, control, comparison, running=None, reference_period=None): """ Normalized MSE (NMSE) = Normalized Ensemble Variance (NEV) metric. .. math:: NMSE = NEV = frac{MSE}{\sigma^2_{control} \cdot fac} Perfect forecast: 0 Climatology forecast: 1 Reference: * Griffies, S. M., and K. Bryan. “A Predictability Study of Simulated North Atlantic Multidecadal Variability.” Climate Dynamics 13, no. 7–8 (August 1, 1997): 459–87. https://doi.org/10/ch4kc4. Args: ds (xarray object): xr.Dataset/xr.DataArray with member dimension. control (xarray object): xr.Dataset/xr.DataArray of control simulation. comparison (function): comparison function. running (int): smoothing of control. Default: None (no smoothing). reference_period (str): see _control_for_reference_period. Returns: nmse_skill (xarray object): skill of NMSE. """ supervector_dim = 'svd' forecast, reference = comparison(ds, supervector_dim) mse_skill = _mse(forecast, reference, dim=supervector_dim) var = _get_variance(control, time_length=running, reference_period=reference_period) fac = _get_norm_factor(comparison) nmse_skill = 1 - mse_skill / var / fac return nmse_skill
def _nmae(ds, control, comparison, running=None, reference_period=None): """ Normalized Ensemble Mean Absolute Error metric. Formula ------- NMAE-SS = 1 - mse / var Reference --------- - Griffies, S. M., and K. Bryan. “A Predictability Study of Simulated North Atlantic Multidecadal Variability.” Climate Dynamics 13, no. 7–8 (August 1, 1997): 459–87. https://doi.org/10/ch4kc4. NOTE: NMSE = - 1 - NEV """ supervector_dim = 'svd' fct, truth = comparison(ds, supervector_dim) mse_skill = _mse(fct, truth, dim=supervector_dim) var = _get_variance(control, time_length=running, reference_period=reference_period) fac = _get_norm_factor(comparison) nmse_skill = 1 - mse_skill / var / fac return nmse_skill
def _ppp(ds, control, comparison, running=None, reference_period=None): """Prognostic Potential Predictability (PPP) metric. .. math:: PPP = 1 - \frac{MSE}{ \sigma_{control} \cdot fac} Perfect forecast: 1 Climatology forecast: 0 References: * Griffies, S. M., and K. Bryan. “A Predictability Study of Simulated North Atlantic Multidecadal Variability.” Climate Dynamics 13, no. 7–8 (August 1, 1997): 459–87. https://doi.org/10/ch4kc4. * Pohlmann, Holger, Michael Botzet, Mojib Latif, Andreas Roesch, Martin Wild, and Peter Tschuck. “Estimating the Decadal Predictability of a Coupled AOGCM.” Journal of Climate 17, no. 22 (November 1, 2004): 4463–72. https://doi.org/10/d2qf62. * Bushuk, Mitchell, Rym Msadek, Michael Winton, Gabriel Vecchi, Xiaosong Yang, Anthony Rosati, and Rich Gudgel. “Regional Arctic Sea–Ice Prediction: Potential versus Operational Seasonal Forecast Skill. Climate Dynamics, June 9, 2018. https://doi.org/10/gd7hfq. Args: ds (xarray object): xr.Dataset/xr.DataArray with member dimension. control (xarray object): xr.Dataset/xr.DataArray of control simulation. comparison (function): comparison function. running (int): smoothing of control. Default: None (no smoothing). reference_period (str): see _control_for_reference_period. Returns: ppp_skill (xarray object): skill of PPP. """ supervector_dim = 'svd' forecast, reference = comparison(ds, supervector_dim) mse_skill = _mse(forecast, reference, dim=supervector_dim) var = _get_variance(control, time_length=running, reference_period=reference_period) fac = _get_norm_factor(comparison) ppp_skill = 1 - mse_skill / var / fac return ppp_skill