Back to models
Metric

MeanAsymmetricError

Calculate mean of asymmetric loss function.

Quickstart

python
from sktime.performance_metrics.forecasting import MeanAsymmetricError

estimator = MeanAsymmetricError(multioutput='uniform_average', multilevel='uniform_average', asymmetric_threshold=0, left_error_function='squared', right_error_function='absolute', left_error_penalty=1.0, right_error_penalty=1.0, by_index=False)

Parameters(8)

asymmetric_thresholdfloat, default = 0.0

The value used to threshold the asymmetric loss function. Error values that are less than the asymmetric threshold have left_error_function applied. Error values greater than or equal to asymmetric threshold have right_error_function applied.

left_error_function{‘squared’, ‘absolute’}, default=’squared’
Loss penalty to apply to error values less than the asymmetric threshold.
right_error_function{‘squared’, ‘absolute’}, default=’absolute’
Loss penalty to apply to error values greater than or equal to the asymmetric threshold.
left_error_penaltyint or float, default=1.0
An additional multiplicative penalty to apply to error values less than the asymmetric threshold.
right_error_penaltyint or float, default=1.0
An additional multiplicative penalty to apply to error values greater than the asymmetric threshold.
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 MeanAsymmetricError
>>> y_true = np. array ([3, - 0.5, 2, 7, 2 ])
>>> y_pred = np. array ([2.5, 0.0, 2, 8, 1.25 ])
>>> asymmetric_error = MeanAsymmetricError ()
>>> asymmetric_error (y_true, y_pred) np.float64(0.5)
>>> asymmetric_error = MeanAsymmetricError (left_error_function = 'absolute', right_error_function = 'squared')
>>> asymmetric_error (y_true, y_pred) np.float64(0.4625)
>>> y_true = np. array ([[0.5, 1 ], [- 1, 1 ], [7, - 6 ]])
>>> y_pred = np. array ([[0, 2 ], [- 1, 2 ], [8, - 5 ]])
>>> asymmetric_error = MeanAsymmetricError ()
>>> asymmetric_error (y_true, y_pred) np.float64(0.75)
>>> asymmetric_error = MeanAsymmetricError (left_error_function = 'absolute', right_error_function = 'squared')
>>> asymmetric_error (y_true, y_pred) np.float64(0.7083333333333334)
>>> asymmetric_error = MeanAsymmetricError (multioutput = 'raw_values')
>>> asymmetric_error (y_true, y_pred) array([0.5, 1. ])
>>> asymmetric_error = MeanAsymmetricError (multioutput = [0.3, 0.7 ])
>>> asymmetric_error (y_true, y_pred) np.float64(0.85)

References

  1. [1 ] Hyndman, R. J and Koehler, A. B. (2006). “Another look at measures of forecast accuracy”, International Journal of Forecasting, Volume 22, Issue 4. [2 ] Diebold, Francis X. (2007). “Elements of Forecasting (4th ed.)”, Thomson, South-Western: Ohio, US.