mape | R Documentation |
This function computes the mean absolute percent error (MAPE).
mape(predicted, observed, na.rm = FALSE)
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. |
MAPE is expressed as
\frac{1}{n} ∑ \limits_{i=1}^n{ 100 \frac{≤ft| X_i - Y_i \right|} {X_i}}
the number of observations
the observations
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 X_i values are positive",
MAPE is "unstable when X_i values are near zero", and
"If X and Y are interchanged, the MAPE will result in a different 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)
.
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.
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).
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
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.