Octave supports the following functions for calculating forecasting metrics.
E = mape (F, A) ¶E = mape (F, A, dim) ¶E = mape (F, A, vecdim) ¶E = mape (F, A, "all") ¶E = mape (…, nanflag) ¶E = mape (…, zeroflag) ¶E = mape (…, 'Weights', W) ¶Compute the mean absolute percentage error between arrays.
The mean absolute percentage error is defined as
mape (F, A) = SUM_i (abs ((A(i) - F(i)) / A(i))) * 100 / N
where N is the number of elements in F and A after broadcasting is applied to the subtraction operation.
The weighted mean absolute percentage error is defined as
weighted_mape (F, A) = SUM_i (W(i) * (abs ((A(i) - F(i)) / A(i)))) * 100 / SUM_i (W(i)
where N is the number of elements in F and A after broadcasting is applied to the subtraction operation.
F and A must either be the same size or have compatible sizes.
If F and A are vectors of the same size, then
mape (F, A) returns a scalar with the MAPE between the
elements of F and A.
If A - F is a matrix, then mape (F, A)
returns a row vector with each element containing the MAPE between the
corresponding columns of A - F.
If A - F is an array, then mape (F, A)
computes the MAPE along the first non-singleton dimension of the difference
between the input arrays F and A. The size of E along the
operating dimension is 1, while all other dimensions are the same as in
A - F.
The optional input dim specifies the dimension to operate on and must
be a positive integer. Specifying any singleton dimension, including any
dimension exceeding ndims (A - F), will return
abs ((A - F) ./ A).
Specifying the dimensions as vecdim, a vector of non-repeating
dimensions, will return the mape over the array slice defined by
vecdim. If vecdim indexes all dimensions in
A - F, then it is equivalent to the option "all".
Any dimension in vecdim greater than ndims (A - F)
is ignored.
Specifying the dimension as "all" will cause mape to operate
on all elements of A - F, and is equivalent to
mape ((A - F)(:)).
The optional variable nanflag specifies whether to include or exclude
NaN values from the calculation using any of the previously specified input
argument combinations. The default value for nanflag is
"includenan" which keeps NaN values in the calculation. To exclude
NaN values set the value of nanflag to "omitnan". The output
will still contain NaN values if A - F consists of all
NaN values in the operating dimension.
The optional variable zeroflag specifies whether to include or omit
zero values from the calculation using any of the previously specified input
argument combinations. The default value for zeroflag is
"includezero", in which case the calculated MAPE is Inf, if A
contains one or more zeros. To ignore any zero values in A, set the
value of zeroflag to "omitzero". If A consists of all
zero values in the operating dimension, then MAPE is NaN.
The optional paired argument …, "Weights", W specifies a
weighting scheme W, which is applied on the difference of the input
arrays F and A, so that mape computes the weighted MAPE.
When operating along a single dimension, W must be a vector of the
same length as the operating dimension or it must have the same size as
x. When operating over an array slice defined by vecdim,
W must have the same size as the operating array slice, i.e.
size (A - F)(vecdim), or the same size as
A - F.
E = rmse (F, A) ¶E = rmse (F, A, dim) ¶E = rmse (F, A, vecdim) ¶E = rmse (F, A, "all") ¶E = rmse (…, nanflag) ¶E = rmse (…, 'Weights', W) ¶Compute the root mean squared error between arrays.
The root mean squared error is defined as
rmse (F, A) = sqrt (SUM_i ((A(i) - F(i)) ^ 2) / N)
where N is the number of elements in F and A after broadcasting is applied to the subtraction operation.
The weighted root mean squared error is defined as
weighted_rmse (F, A) = sqrt (SUM_i (W(i) * ((A(i) - F(i)) ^ 2)) / SUM_i (W(i)))
where N is the number of elements in F and A after broadcasting is applied to the subtraction operation.
F and A must either be the same size or have compatible sizes.
If F and A are vectors of the same size, then
rmse (F, A) returns a scalar with the RMSE between the
elements of F and A.
If A - F is a matrix, then rmse (F, A)
returns a row vector with each element containing the RMSE between the
corresponding columns of A - F.
If A - F is an array, then rmse (F, A)
computes the RMSE along the first non-singleton dimension of the difference
between the input arrays F and A. The size of E along the
operating dimension is 1, while all other dimensions are the same as in
A - F.
The optional input dim specifies the dimension to operate on and must
be a positive integer. Specifying any singleton dimension, including any
dimension exceeding ndims (A - F), will return
abs ((A - F) ./ A).
Specifying the dimensions as vecdim, a vector of non-repeating
dimensions, will return the rmse over the array slice defined by
vecdim. If vecdim indexes all dimensions in
A - F, then it is equivalent to the option "all".
Any dimension in vecdim greater than ndims (A - F)
is ignored.
Specifying the dimension as "all" will cause rmse to operate
on all elements of A - F, and is equivalent to
rmse ((A - F)(:)).
The optional variable nanflag specifies whether to include or exclude
NaN values from the calculation using any of the previously specified input
argument combinations. The default value for nanflag is
"includenan" which keeps NaN values in the calculation. To exclude
NaN values set the value of nanflag to "omitnan". The output
will still contain NaN values if A - F consists of all
NaN values in the operating dimension.
The optional paired argument …, "Weights", W specifies a
weighting scheme W, which is applied on the difference of the input
arrays F and A, so that rmse computes the weighted RMSE.
When operating along a single dimension, W must be a vector of the
same length as the operating dimension or it must have the same size as
x. When operating over an array slice defined by vecdim,
W must have the same size as the operating array slice, i.e.
size (A - F)(vecdim), or the same size as
A - F.