我正在使用套餐“fpp”和“fpp2”。
家庭作业问题(问题11(f))位于https://otexts.org/fpp2/expsmooth-exercises.html
我试图在ETS模型上为tsCV运行以下代码(对于11(d)中所述的其他模型也会出现相同的结果):
将访客转换为时间序列
"SELECT * from hotel where standard='Y' OR standard='N' group by hotel_code";
在tvis上运行tsCV
tvis <- ts(visitors)
然而,当我运行 e2 时,我得到的只是NA值。
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12 ] [,13]
[1,] NA NA NA NA NA NA NA NA NA NA NA NA
[2,] NA NA NA NA NA NA NA NA NA NA NA NA
[3,] NA NA NA NA NA NA NA NA NA NA NA NA
为什么会这样?
如果我使用另一个预测函数(例如rwf),它会起作用:
e2 <- tsCV(tvis, forecast(ets(tvis),h=24), h=24)
提前致谢。
答案 0 :(得分:2)
关键词是“function”:对于它的第二个参数,tsCV
期望一个返回预测的函数,而不是实际的预测函数。试试这个:
f <- function(y, h) forecast(ets(y), h = h)
e2 <- tsCV(tvis, f, h)
答案 1 :(得分:0)
我意识到这个问题有点老了,但我想我会在调试类似问题时放入发现的内容。我不确定ets是否有类似的注释。根据功能文档,将auto.arima
与xreg
一起使用时,无论h规范如何,响应将为length(xreg)
。我的解决方案是将平均输出切成薄片进行测量。另请注意,如果为函数输入指定了(...)以外的任何内容,则可能会遇到错误。希望这会有所帮助
forecast_fun <- function(...) {
x <- auto.arima(y,
lambda = 0,
xreg=xreg) %>%
forecast(xreg=xreg,
h=h)
x$mean <- x$mean[1:h]
return(x)
}