R:tsCV函数返回NA

时间:2018-04-01 17:24:52

标签: r na

我正在使用套餐“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)

提前致谢。

2 个答案:

答案 0 :(得分:2)

关键词是“function”:对于它的第二个参数,tsCV期望一个返回预测的函数,而不是实际的预测函数。试试这个:

f  <- function(y, h) forecast(ets(y), h = h)
e2 <- tsCV(tvis, f, h)

答案 1 :(得分:0)

我意识到这个问题有点老了,但我想我会在调试类似问题时放入发现的内容。我不确定ets是否有类似的注释。根据功能文档,将auto.arimaxreg一起使用时,无论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)
}