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

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)>
array([[0.6268041 , 9.45134297, 3.28717608],
[0.27099746, 1.58105176, 1.48258713],
[6.55806162, 0.22271096, 0.39302745]])
Dimensions without coordinates: x, y