climpred.metrics._rps#
- climpred.metrics._rps(forecast: Dataset, verif: Dataset, dim: str | List[str] | None = None, **metric_kwargs: Any) Dataset | DataArray[source]#
Ranked Probability Score.
\[RPS(p, k) = \sum_{m=1}^{M} [(\sum_{k=1}^{m} p_k) - (\sum_{k=1}^{m} \ o_k)]^{2}\]- Parameters:
forecast – Forecasts.
verif – Verification.
dim – Dimensions to aggregate.
**metric_kwargs, see :py:func:`.xskillscore.rps`
Note
If
category_edgesis xr.Dataset or tuple of xr.Datasets, climpred will broadcast the grouped dimensionsseason,month,weekofyear,dayfofyearonto the dimensionsinitfor forecast andtimefor observations. seeclimpred.utils.broadcast_time_grouped_to_time.Notes
minimum
0.0
maximum
∞
perfect
0.0
orientation
negative
See also
Example
>>> category_edges = np.array([-0.5, 0.0, 0.5, 1.0]) >>> HindcastEnsemble.verify( ... metric="rps", ... comparison="m2o", ... dim=["member", "init"], ... alignment="same_verifs", ... category_edges=category_edges, ... ) <xarray.Dataset> Size: 700B Dimensions: (lead: 10) Coordinates: * lead (lead) int32 40B 1 2 3 4 5 6 7 8 9 10 observations_category_edge <U67 268B '[-np.inf, -0.5), [-0.5, 0.0), [0.0... forecasts_category_edge <U67 268B '[-np.inf, -0.5), [-0.5, 0.0), [0.0... skill <U11 44B 'initialized' Data variables: SST (lead) float64 80B 0.115 0.1123 ... 0.1875 Attributes: prediction_skill_software: climpred https://climpred.readthedocs.io/ skill_calculated_by_function: HindcastEnsemble.verify() number_of_initializations: 64 number_of_members: 10 alignment: same_verifs metric: rps comparison: m2o dim: ['member', 'init'] reference: [] category_edges: [-0.5 0. 0.5 1. ]
Provide
category_edgesasxarray.Datasetfor category edges varying along dimensions.>>> category_edges = ( ... xr.DataArray([9.5, 10.0, 10.5, 11.0], dims="category_edge") ... .assign_coords(category_edge=[9.5, 10.0, 10.5, 11.0]) ... .to_dataset(name="tos") ... ) >>> # category_edges = np.array([9.5, 10., 10.5, 11.]) # identical >>> PerfectModelEnsemble.verify( ... metric="rps", ... comparison="m2c", ... dim=["member", "init"], ... category_edges=category_edges, ... ) <xarray.Dataset> Size: 888B Dimensions: (lead: 20) Coordinates: * lead (lead) int64 160B 1 2 3 4 5 6 ... 16 17 18 19 20 observations_category_edge <U71 284B '[-np.inf, 9.5), [9.5, 10.0), [10.0... forecasts_category_edge <U71 284B '[-np.inf, 9.5), [9.5, 10.0), [10.0... Data variables: tos (lead) float64 160B 0.08951 0.1615 ... 0.2274 Attributes: prediction_skill_software: climpred https://climpred.readthedocs.io/ skill_calculated_by_function: PerfectModelEnsemble.verify() number_of_initializations: 12 number_of_members: 10 metric: rps comparison: m2c dim: ['member', 'init'] reference: [] category_edges: <xarray.Dataset> Size: 64B\nDimensions: ...
Provide
category_edgesas tuple for different category edges to categorize forecasts and observations.>>> q = [1 / 3, 2 / 3] # terciles by month >>> forecast_edges = ( ... HindcastEnsemble.get_initialized() ... .groupby("init.month") ... .quantile(q=q, dim=["init", "member"]) ... .rename({"quantile": "category_edge"}) ... ) >>> obs_edges = ( ... HindcastEnsemble.get_observations() ... .groupby("time.month") ... .quantile(q=q, dim="time") ... .rename({"quantile": "category_edge"}) ... ) >>> category_edges = (obs_edges, forecast_edges) >>> HindcastEnsemble.verify( ... metric="rps", ... comparison="m2o", ... dim=["member", "init"], ... alignment="same_verifs", ... category_edges=category_edges, ... ) <xarray.Dataset> Size: 972B Dimensions: (lead: 10) Coordinates: * lead (lead) int32 40B 1 2 3 4 5 6 7 8 9 10 observations_category_edge <U101 404B '[-np.inf, 0.3333333333333333), [0... forecasts_category_edge <U101 404B '[-np.inf, 0.3333333333333333), [0... skill <U11 44B 'initialized' Data variables: SST (lead) float64 80B 0.1248 0.1756 ... 0.3413 Attributes: prediction_skill_software: climpred https://climpred.readthedocs.io/ skill_calculated_by_function: HindcastEnsemble.verify() number_of_initializations: 64 number_of_members: 10 alignment: same_verifs metric: rps comparison: m2o dim: ['member', 'init'] reference: [] category_edges: (<xarray.Dataset> Size: 40B\nDimensions: ...