计算 MAPE

机器算法验证 r 预测 交叉验证 准确性 马佩
2022-03-23 20:44:52

以下平均绝对百分比误差 MAPE 的计算是否正确?

我已经包含了一个可行的示例,但真正有问题的行是这些:

result      <- (((actual-predicted)/actual)-1)*100
result.mean <- rowMeans(result, na.rm = TRUE)

我知道这是一个简单的问题,但我很想把它做好,任何见解都将不胜感激。

library(forecast)
library(vars)

x <- rnorm(70)
y <- rnorm(70)

dx <- cbind(x,y)
dx <- as.ts(dx)


# Forecast Accuracy
j = 12          # Forecast horizon
k = nrow(dx)-j  # length of minimum training set

predicted <- do.call(rbind, lapply(1:j, function(i){
  trainingset <- window(dx, end = k+i-1)
  fit         <- VAR(trainingset, p = 2)                       
  fcast       <- forecast(fit, h = j-i+1)
  `length<-`(fcast$mean$x, j)
}))

actual <- do.call(rbind, lapply(1:j, function(i){
  actual      <- window(dx[,1], start = k+i, end = k+j)
  `length<-`(actual, j)
}))

result <- (((actual-predicted)/actual)-1)*100
result.mean <- rowMeans(result, na.rm = TRUE)

plot(result.mean, type = "l")

MAPE <- mean(result.mean)
MAPE
1个回答

从 Mean Absolute Percentage Error 这个名字看,MAPE 的计算中需要有一个绝对值:

rowMeans(abs((actual-predicted)/actual) * 100)

这与 MAPE 的公式相匹配,例如https://en.wikipedia.org/wiki/Mean_absolute_percentage_error