xskillscore.brier_score

xskillscore.brier_score(observations, forecasts, member_dim='member', fair=False, dim=None, weights=None, keep_attrs=False)

Calculate Brier score (BS).

Parameters
  • observations (xarray.Dataset or xarray.DataArray) – The observations or set of observations of the event. Data should be boolean or logical (True or 1 for event occurance, False or 0 for non-occurance).

  • forecasts (xarray.Dataset or xarray.DataArray) – The forecast likelihoods of the event. If fair==False, forecasts should be between 0 and 1 without a dimension member_dim or should be boolean (True,False) or binary (0, 1) containing a member dimension (probabilities will be internally calculated by .mean(member_dim)). If fair==True, forecasts must be boolean (True,False) or binary (0, 1) containing dimension member_dim.

  • member_dim (str, optional) – Name of ensemble member dimension. By default, ‘member’.

  • fair (boolean) – Apply ensemble member-size adjustment for unbiased, fair metric; see Ferro (2013). Defaults to False.

  • dim (str or list of str, optional) – Dimension over which to compute mean after computing brier_score. Defaults to None implying averaging over all dimensions.

  • weights (xr.DataArray with dimensions from dim, optional) – Weights for weighted.mean(dim). Defaults to None, such that no weighting is applied.

  • keep_attrs (bool) – If True, the attributes (attrs) will be copied from the first input to the new one. If False (default), the new object will be returned without attributes.

Returns

Return type

xarray.Dataset or xarray.DataArray

Examples

>>> observations = xr.DataArray(np.random.normal(size=(3, 3)),
...                             coords=[('x', np.arange(3)),
...                                     ('y', np.arange(3))])
>>> forecasts = xr.DataArray(np.random.normal(size=(3, 3, 3)),
...                          coords=[('x', np.arange(3)),
...                                  ('y', np.arange(3)),
...                                  ('member', np.arange(3))])
>>> xs.brier_score(observations > .5,
...                (forecasts > .5).mean('member'),
...                dim="y")
<xarray.DataArray (x: 3)>
array([0.37037037, 0.14814815, 0.51851852])
Coordinates:
  * x        (x) int64 0 1 2

See also

properscoring.brier_score

References