在 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 值。
我在下面有一个循环,循环遍历 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 值。