xskillscore.smape

xskillscore.smape(a, b, dim=None, weights=None, skipna=False, keep_attrs=False)

Symmetric Mean Absolute Percentage Error.

\[\mathrm{SMAPE} = \frac{1}{n} \sum_{i=1}^{n} \frac{ \vert a_{i} - b_{i} \vert } { \vert a_{i} \vert + \vert b_{i} \vert }\]

Note

Percent error is reported as decimal percent. I.e., a value of 1 is 100%.

Parameters
  • a (xarray.Dataset or xarray.DataArray) – Labeled array(s) over which to apply the function. (Truth which will be divided by)

  • b (xarray.Dataset or xarray.DataArray) – Labeled array(s) over which to apply the function.

  • dim (str, list) – The dimension(s) to apply the smape along. Note that this dimension will be reduced as a result. Defaults to None reducing all dimensions.

  • weights (xarray.Dataset or xarray.DataArray or None) – Weights matching dimensions of dim to apply during the function.

  • skipna (bool) – If True, skip NaNs when computing function.

  • 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

Symmetric Mean Absolute Percentage Error.

Return type

xarray.Dataset or xarray.DataArray

References

https://en.wikipedia.org/wiki/Symmetric_mean_absolute_percentage_error

Examples

>>> import numpy as np
>>> import xarray as xr
>>> from xskillscore import smape
>>> a = xr.DataArray(np.random.rand(5, 3, 3),
                    dims=['time', 'x', 'y'])
>>> b = xr.DataArray(np.random.rand(5, 3, 3),
                    dims=['time', 'x', 'y'])
>>> smape(a, b, dim='time')