mape {ie2misc} | R Documentation |
Mean absolute percent error (MAPE)
Description
This function computes the mean absolute percent error (MAPE).
Usage
mape(predicted, observed, na.rm = FALSE)
Arguments
predicted |
numeric vector that contains the predicted data points (1st parameter) |
observed |
numeric vector that contains the observed data points (2nd parameter) |
na.rm |
logical vector that determines whether the missing values should be removed or not. |
Details
MAPE is expressed as
- n
the number of observations
- X
the observations
- Y
the predictions
Below are some points to remember about MAPE from the Ji reference:
MAPE is "a measure to validate forecast models",
MAPE is "a standardized value and is independent of the unit of the measurement",
MAPE is "meaningful only if all
values are positive",
MAPE is "unstable when
values are near zero", and
"If X and Y are interchanged, the MAPE will result in a different value."
Value
mean absolute percent error (MAPE) as a numeric vector. The default
choice is that any NA values will be kept (na.rm = FALSE
). This can be
changed by specifying na.rm = TRUE
, such as mape(pre, obs, na.rm = TRUE)
.
References
Lei Ji and Kevin Gallo, "An Agreement Coefficient for Image Comparison", Photogrammetric Engineering & Remote Sensing, Vol. 72, No. 7, July 2006, p. 823-8335, https://www.ingentaconnect.com/content/asprs/pers/2006/00000072/00000007/art00006.
See Also
mae
for mean-absolute error (MAE), madstat
for
mean-absolute deviation (MAD), dr
for "index of agreement (dr)", vnse
for Nash-Sutcliffe model efficiency (NSE), and rmse
for
root mean square error (RMSE).
Examples
library("ie2misc")
obs <- 1:10 # observed
pre <- 2:11 # predicted
mape(pre, obs)
library("rando")
set_n(100) # makes the example reproducible
obs1 <- r_norm(.seed = 109) # observed
pre1 <- r_norm(.seed = 124) # predicted
# using the vectors pre1 and obs1
mape(pre1, obs1)
# using a matrix of the numeric vectors pre1 and obs1
mat1 <- matrix(data = c(obs1, pre1), nrow = length(pre1), ncol = 2,
byrow = FALSE, dimnames = list(c(rep("", length(pre1))),
c("Predicted", "Observed")))
mape(mat1[, 2], mat1[, 1])
# mat1[, 1] # observed values from column 1 of mat1
# mat1[, 2] # predicted values from column 2 of mat1
# using a data.frame of the numeric vectors pre1 and obs1
df1 <- data.frame(obs1, pre1)
mape(df1[, 2], df1[, 1])
# df1[, 1] # observed values from column 1 of df1
# df1[, 2] # predicted values from column 2 of df1
library("data.table")
# using a data.table of the numeric vectors pre1 and obs1
df2 <- data.table(obs1, pre1)
mape(df2[, 2, with = FALSE][[1]], df2[, 1, with = FALSE][[1]])
# df2[, 1, with = FALSE][[1]] # observed values from column 1 of df2
# df2[, 2, with = FALSE][[1]] # predicted values from column 2 of df2