在 tsCV 中循环预测函数

Looping over forecast functions in tsCV

我在下面有一个循环,循环遍历 tsCV 中的 4 种时间序列预测方法(滚动预测来源)。列表中的第三个方法 y 不会中断循环。然而,结果table,z,其目的是存储MAE(平均绝对误差)记录NaN,用于此用户定义的函数。

此预测函数是用户定义的,因为我需要指定 damped=T

library(forecast)
x <- 8  # t +
y <- list(ses
          , holt
          , function(j, k){forecast(holt(j, h=k, damped=T))}, hw
          )
z <- list()

for (i in seq_along(y))
{
  a <- data.frame(tsCV(AirPassengers, y[[i]], h=x))
  a[1:12, ] <- NA  # 1st 12 months' forecast likely to be meaningless
  b <- colMeans(abs(a), na.rm=T)
  c <- data.frame(model = i
                  ,h = 1:x
                  ,mae = b
                  )
  z[[i]] <- c
}

z <- do.call(rbind, z)
z$model <- as.factor(z$model)

我在这里得到了用户定义函数的想法: http://pkg.robjhyndman.com/forecast/reference/tsCV.html#see-also

谢谢。

根据 tsCV 的文档,提供的函数需要有一个实际名为 "h" 的参数。所以只需将您的功能更改为

y <- list(ses, holt, function(j, h){forecast(holt(j, h=h, damped=T))}, hw)

执行此操作时,不会返回任何 NaN 值。