xskillscore.mape

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

Mean Absolute Percentage Error.

\[\mathrm{MAPE} = \frac{1}{n} \sum_{i=1}^{n} \frac{\vert a_{i} - b_{i} \vert} {max(\epsilon, \vert a_{i} \vert)}\]

Note

The percent error is calculated in reference to a. Percent error is reported as decimal percent. I.e., a value of 1 is 100%. \(\epsilon\) is an arbitrary small yet strictly positive number to avoid undefined results when a is zero.

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 mape 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:

Mean Absolute Percentage Error.

Return type:

xarray.Dataset or xarray.DataArray

References

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

Examples

>>> 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"])
>>> xs.mape(a, b, dim="time")
<xarray.DataArray (x: 3, y: 3)> Size: 72B
array([[0.6268041 , 9.45134297, 3.28717608],
       [0.27099746, 1.58105176, 1.48258713],
       [6.55806162, 0.22271096, 0.39302745]])
Dimensions without coordinates: x, y