Mean absolute percentage error between arrays
Since R2022b
collapse all in page
Syntax
E = mape(F,A)
E = mape(F,A,"all")
E = mape(F,A,dim)
E = mape(F,A,vecdim)
E = mape(___,nanflag)
E = mape(___,zeroflag)
E = mape(___,Weights=W)
Description
example
returns the mean absolute percentage error (MAPE) between the forecast (predicted) array E
= mape(F,A)F
and the actual (observed) array A
.
F
andA
must either be the same size or have sizes that are compatible.If
F
andA
are vectors of the same size, thenE
is a scalar.If
F-A
is a matrix, thenE
is a row vector containing the MAPE for each column.If
F
andA
are multidimensional arrays, thenE
contains the MAPE computed along the first array dimension of size greater than 1, with elements treated as vectors. The size ofE
in this dimension is 1, while the sizes of all other dimensions are the same as inF-A
.
returns the MAPE of all elements in E
= mape(F,A,"all")F
and A
.
example
operates along dimension E
= mape(F,A,dim)dim
. For example, if F
and A
are matrices, then mape(F,A,2)
operates on the elements in each row and returns a column vector containing the MAPE of each row.
example
operates along the dimensions specified in the vector E
= mape(F,A,vecdim)vecdim
. For example, if F
and A
are matrices, then mape(F,A,[1 2])
operates on all the elements in F
and A
because every element of a matrix is contained in the array slice defined by dimensions 1 and 2.
example
specifies whether to include or omit E
= mape(___,nanflag)NaN
values in F
and A
for any of the previous syntaxes. For example, mape(F,A,"omitnan")
ignores NaN
values when computing the MAPE. By default, mape
includes NaN
values.
example
specifies whether to include or omit zero values in E
= mape(___,zeroflag)A
. For example, mape(F,A,"includezero")
includes the zeros in the calculation, while mape(F,A,"omitzero")
ignores them.
example
specifies a weighting scheme E
= mape(___,Weights=W)W
and returns the weighted MAPE.
Examples
collapse all
MAPE of Two Forecasts
Open Live Script
Create two column vectors of forecast (predicted) data and one column vector of actual (observed) data.
F1 = [1; 10; 9];F2 = [2; 5; 10];A = [1; 9; 10];
Compute the MAPE between each forecast and the actual data.
E1 = mape(F1,A)
E1 = 7.0370
E2 = mape(F2,A)
E2 = 48.1481
Alternatively, create a matrix containing both forecasts and compute the MAPE between each forecast and the actual data in one command.
F = [F1 F2]
F = 3×2 1 2 10 5 9 10
E = mape(F,A)
E = 1×2 7.0370 48.1481
The first element of E
is the MAPE between the first forecast column and the actual data. The second element of E
is the MAPE between the second forecast column and the actual data.
MAPE of Matrix Rows
Open Live Script
Create a matrix of forecast data and a matrix of actual data.
F = [17 19; 1 6; 16 15];A = [17 25; 3 4; 16 13];
Compute the MAPE between the forecast and the actual data across each row by specifying the operating dimension as 2. The smallest MAPE corresponds to the MAPE between the third rows of the forecast data and actual data.
E = mape(F,A,2)
E = 3×1 12.0000 58.3333 7.6923
MAPE of Array Pages
Open Live Script
Create a 3-D array with pages containing forecast data and a matrix of actual data.
F(:,:,1) = [2 4; -2 1];F(:,:,2) = [4 4; 8 -3];A = [6 7; 1 4];
Compute the MAPE between the predicted data in each page of the forecast array and the actual data matrix by specifying a vector of operating dimensions 1 and 2.
E = mape(F,A,[1 2])
E = E(:,:,1) = 121.1310E(:,:,2) = 237.7976
The first page of E
contains the MAPE between the first page of F
and the matrix A
. The second page of E
contains the MAPE between the second page of F
and the matrix A
.
MAPE Excluding Missing Values
Open Live Script
Create a matrix of forecast data and a matrix of actual data containing NaN
values.
F = [17 19 3; 6 16 NaN];A = [17 25 NaN; 4 16 NaN];
Compute the MAPE between the forecast and the actual data, ignoring NaN
values. For columns that contain all NaN
values in F
or A
, the MAPE is NaN
.
E = mape(F,A,"omitnan")
E = 1×3 25 12 NaN
MAPE Excluding Zeros
Open Live Script
Create a row vector of forecast data and a row vector of actual data containing a zero.
F = [1 6 10 5];A = [2 6 0 3];
Compute the MAPE between the forecast and the actual data.
E = mape(F,A)
E = Inf
Because zero values in A
are included in the MAPE calculation by default, the result is Inf
. Ignore the zero in the actual data by specifying "omitzero"
. Now, the function computes the MAPE for only the first, second, and fourth columns of the input data.
Eomit = mape(F,A,"omitzero")
Eomit = 38.8889
Specify MAPE Weight Vector
Open Live Script
Create a forecast column vector and an actual column vector.
F = [2; 10; 13];A = [1; 9; 10];
Compute the MAPE between the forecast and actual data according to a weighting scheme specified by W
.
W = [0.5; 0.25; 0.25];E = mape(F,A,Weights=W)
E = 60.2778
Input Arguments
collapse all
F
— Forecast array
vector | matrix | multidimensional array
Forecast or predicted array, specified as a vector, matrix, or multidimensional array.
Inputs F
and A
must either be the same size or have sizes that are compatible. For example, F
is an m
-by-n
matrix and A
is a 1-by-n
row vector. For more information, see Compatible Array Sizes for Basic Operations.
Data Types: single
| double
Complex Number Support: Yes
A
— Actual array
vector | matrix | multidimensional array
Actual or observed array, specified as a vector, matrix, or multidimensional array.
Inputs F
and A
must either be the same size or have sizes that are compatible. For example, F
is an m
-by-n
matrix and A
is a 1-by-n
row vector. For more information, see Compatible Array Sizes for Basic Operations.
Data Types: single
| double
Complex Number Support: Yes
dim
— Dimension to operate along
positive integer scalar
Dimension to operate along, specified as a positive integer scalar. If you do not specify the dimension, then the default is the first array dimension of size greater than 1.
The size of E
in the operating dimension is 1. All other dimensions of E
have the same size as the result of F-A
.
For example, consider four forecasts in a 3-by-4 matrix, F
, and actual data in a 3-by-1 column vector, A
:
mape(F,A,1)
computes the MAPE of the elements in each column and returns a 1-by-4 row vector.The size of
E
in the operating dimension is 1. The difference ofF
andA
is a 3-by-4 matrix. The size ofE
in the nonoperating dimension is the same as the second dimension ofF-A
, which is 4. The overall size ofE
becomes 1-by-4.mape(F,A,2)
computes the MAPE of the elements in each row and returns a 3-by-1 column vector.The size of
E
in the operating dimension is 1. The difference ofF
andA
is a 3-by-4 matrix. The size ofE
in the nonoperating dimension is the same as the first dimension ofF-A
, which is 3. The overall size ofE
becomes 3-by-1.
vecdim
— Vector of dimensions to operate along
vector of positive integers
Vector of dimensions to operate along, specified as a vector of positive integers. Each element represents a dimension of the input arrays. The size of E
in the operating dimensions is 1. All other dimensions of E
have the same size as the result of F-A
.
For example, consider forecasts in a 2-by-3-by-3 array, F
, and actual data in a 1-by-3 row vector, A
. mape(F,A,[1 2])
computes the MAPE over each page of F
and returns a 1-by-1-by-3 array. The size of E
in the operating dimensions is 1. The difference of F
and A
is a 2-by-3-by-3 array. The size of E
in the nonoperating dimension is the same as the third dimension of F-A
, which is 3.
nanflag
— Missing value condition
"includemissing"
(default) | "includenan"
| "omitmissing"
| "omitnan"
Missing value condition, specified as one of these values:
"includemissing"
or"includenan"
— IncludeNaN
values in the input arrays when computing the MAPE. If any element in the operating dimension isNaN
, then the corresponding element inE
isNaN
."includemissing"
and"includenan"
have the same behavior."omitmissing"
or"omitnan"
— IgnoreNaN
values in the input arrays when computing the MAPE. If all elements in the operating dimension areNaN
inF
,A
, orW
, then the corresponding elements inE
areNaN
."omitmissing"
and"omitnan"
have the same behavior.
zeroflag
— Zero condition
"includezero"
(default) | "omitzero"
Zero condition, specified as one of these values:
"includezero"
— Include zeros inA
when computing the MAPE. IfA
contains one or more zeros, thenE
isInf
."omitzero"
— Ignore zeros inA
when computing the MAPE. Small nonzero values ofA
that would result in a MAPE ofInf
are also ignored. If all elements ofA
are ignored, thenE
isNaN
.
W
— Weighting scheme
vector | matrix | multidimensional array
Weighting scheme, specified as a vector, matrix, or multidimensional array. The elements of W
must be nonnegative.
If W
is a vector, it must have the same length as the operating dimension or must have the same size as F-A
. If W
is a matrix or multidimensional array, it must have the same size as F
, A
, or F-A
.
You cannot specify this argument if you specify vecdim
or "all"
.
Data Types: double
| single
More About
collapse all
Mean Absolute Percentage Error
For a forecast array F and actual array A made up of n scalar observations, the mean absolute percentage error is defined as
with the summation performed along the specified dimension. When F
or A
is complex, mape
computes the mean absolute percentage error using the complex magnitude of (F-A)./A
.
Weighted Mean Absolute Percentage Error
For a forecast array F and actual array A made up of n scalar observations and weighting scheme W, the weighted mean absolute percentage error is defined as
with the summation performed along the specified dimension.
Tips
Zeros or small nonzero values in the actual data
A
might indicate that MAPE is not the appropriate metric to measure error forF
andA
.
Extended Capabilities
Tall Arrays
Calculate with arrays that have more rows than fit in memory.
This function fully supports tall arrays. Formore information, see Tall Arrays.
C/C++ Code Generation
Generate C and C++ code using MATLAB® Coder™.
GPU Arrays
Accelerate code by running on a graphics processing unit (GPU) using Parallel Computing Toolbox™.
This function fully supports GPU arrays. For more information, see Run MATLAB Functions on a GPU (Parallel Computing Toolbox).
Distributed Arrays
Partition large arrays across the combined memory of your cluster using Parallel Computing Toolbox™.
This function fully supports distributed arrays. For more information, see Run MATLAB Functions with Distributed Arrays (Parallel Computing Toolbox).
Version History
Introduced in R2022b
expand all
R2023a: Specify missing value condition
Include or omit missing values in the input arrays when computing the MAPE by using the "includemissing"
or "omitmissing"
options. These options have the same behavior as the "includenan"
and "omitnan"
options, respectively.
R2023a: Code generation support
Generate C or C++ code for the mape
function.
See Also
rmse | mean | abs
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- Deutsch
- English
- Français
- United Kingdom (English)
Contact your local office