Back to models
Metric

MeanRelativeAbsoluteError

Mean relative absolute error (MRAE).

In relative error metrics, relative errors are first calculated by scaling (dividing) the individual forecast errors by the error calculated using a benchmark method at the same index position. If the error of the benchmark method is zero then a large value is returned.

MRAE applies mean absolute error (MAE) to the resulting relative errors.

Quickstart

python
from sktime.performance_metrics.forecasting import MeanRelativeAbsoluteError

estimator = MeanRelativeAbsoluteError(multioutput='uniform_average', multilevel='uniform_average', by_index=False)

Parameters(3)

multioutput‘uniform_average’ (default), 1D array-like, or ‘raw_values’

Whether and how to aggregate metric for multivariate (multioutput) data.

  • If 'uniform_average' (default), errors of all outputs are averaged with uniform weight.

  • If 1D array-like, errors are averaged across variables, with values used as averaging weights (same order).

  • If 'raw_values', does not average across variables (outputs), per-variable errors are returned.

multilevel{‘raw_values’, ‘uniform_average’, ‘uniform_average_time’}

How to aggregate the metric for hierarchical data (with levels).

  • If 'uniform_average' (default), errors are mean-averaged across levels.

  • If 'uniform_average_time', metric is applied to all data, ignoring level index.

  • If 'raw_values', does not average errors across levels, hierarchy is retained.

by_indexbool, default=False

Controls averaging over time points in direct call to metric object.

  • If False (default), direct call to the metric object averages over time points, equivalent to a call of the evaluate method.

  • If True, direct call to the metric object evaluates the metric at each time point, equivalent to a call of the evaluate_by_index method.

Examples

>>> import numpy as np
>>> from sktime.performance_metrics.forecasting import MeanRelativeAbsoluteError
>>> y_true = np. array ([3, - 0.5, 2, 7, 2 ])
>>> y_pred = np. array ([2.5, 0.0, 2, 8, 1.25 ])
>>> y_pred_benchmark = y_pred * 1.1
>>> mrae = MeanRelativeAbsoluteError ()
>>> mrae (y_true, y_pred, y_pred_benchmark = y_pred_benchmark) np.float64(0.9511111111111111)
>>> y_true = np. array ([[0.5, 1 ], [- 1, 1 ], [7, - 6 ]])
>>> y_pred = np. array ([[0, 2 ], [- 1, 2 ], [8, - 5 ]])
>>> y_pred_benchmark = y_pred * 1.1
>>> mrae (y_true, y_pred, y_pred_benchmark = y_pred_benchmark) np.float64(0.8703703703703702)
>>> mrae = MeanRelativeAbsoluteError (multioutput = 'raw_values')
>>> mrae (y_true, y_pred, y_pred_benchmark = y_pred_benchmark) array([0.51851852, 1.22222222])
>>> mrae = MeanRelativeAbsoluteError (multioutput = [0.3, 0.7 ])
>>> mrae (y_true, y_pred, y_pred_benchmark = y_pred_benchmark) np.float64(1.0111111111111108)

References

  1. Hyndman, R. J and Koehler, A. B. (2006). “Another look at measures of forecast accuracy”, International Journal of Forecasting, Volume 22, Issue 4.