MeanSquaredPercentageError
Mean squared percentage error (MSPE), or RMSPE, or symmetric MSPE, RMSPE.
Quickstart
from sktime.performance_metrics.forecasting import MeanSquaredPercentageError
estimator = MeanSquaredPercentageError(multioutput='uniform_average', multilevel='uniform_average', symmetric=False, square_root=False, by_index=False, relative_to='y_true', eps=None)Parameters(7)
- symmetricbool, default = False
- Whether to calculate the symmetric version of the percentage metric
- relative_to{“y_true”, “y_pred”}, default=”y_true”
Determines the denominator of the percentage error.
If
"y_true", the denominator is the true values,If
"y_pred", the denominator is the predicted values.
- square_rootbool, default = False
- Whether to take the square root of the metric
- epsfloat, default=None
- Numerical epsilon used in denominator to avoid division by zero. Absolute values smaller than eps are replaced by eps. If None, defaults to np.finfo(np.float64).eps
- 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 theevaluatemethod.If
True, direct call to the metric object evaluates the metric at each time point, equivalent to a call of theevaluate_by_indexmethod.
Examples
>>> import numpy as np
>>> from sktime.performance_metrics.forecasting import MeanSquaredPercentageError
>>> y_true = np. array ([3, - 0.5, 2, 7, 2 ])
>>> y_pred = np. array ([2.5, 0.0, 2, 8, 1.25 ])
>>> mspe = MeanSquaredPercentageError (symmetric = False)
>>> mspe (y_true, y_pred) np.float64(0.23776218820861678)
>>> smspe = MeanSquaredPercentageError (square_root = True, symmetric = False)
>>> smspe (y_true, y_pred) np.float64(0.48760864246710883)
>>> y_true = np. array ([[0.5, 1 ], [- 1, 1 ], [7, - 6 ]])
>>> y_pred = np. array ([[0, 2 ], [- 1, 2 ], [8, - 5 ]])
>>> mspe (y_true, y_pred) np.float64(0.5080309901738473)
>>> smspe (y_true, y_pred) np.float64(0.7026794936195895)
>>> mspe = MeanSquaredPercentageError (multioutput = 'raw_values', symmetric = False)
>>> mspe (y_true, y_pred) array([0.34013605, 0.67592593])
>>> smspe = MeanSquaredPercentageError (multioutput = 'raw_values', symmetric = False, square_root = True)
>>> smspe (y_true, y_pred) array([0.58321184, 0.82214714])
>>> mspe = MeanSquaredPercentageError (multioutput = [0.3, 0.7 ], symmetric = False)
>>> mspe (y_true, y_pred) np.float64(0.5751889644746787)
>>> smspe = MeanSquaredPercentageError (multioutput = [0.3, 0.7 ], symmetric = False, square_root = True)
>>> smspe (y_true, y_pred) np.float64(0.7504665536595034)References
- Hyndman, R. J and Koehler, A. B. (2006). “Another look at measures of forecast accuracy”, International Journal of Forecasting, Volume 22, Issue 4.