循环tsCV中的预测功能

时间:2019-08-23 15:16:51

标签: r loops time-series forecast

下面有一个循环,循环了tsCV中的4种时间序列预测方法(滚动预测原点)。列表y中的第三个方法不会中断循环。但是,结果表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

谢谢。

1 个答案:

答案 0 :(得分:3)

根据tsCV的文档,提供的函数需要有一个实际名为“ h”的参数。因此,只需将功能更改为

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

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