在Rob Hyndman的书中,Rob描述了使用tsCV来评估auto.arima和ets返回的模型的预测准确性。
这更多的是一个概念性的问题,但我查看了tsCV的底层代码,看到了这个。
for (i in seq_len(n - 1)) {
fc <- try(suppressWarnings(forecastfunction(subset(y,
start = ifelse(is.null(window), 1L, ifelse(i - window >=
0L, i - window + 1L, stop("small window"))),
end = i), h = h, ...)), silent = TRUE)
if (!is.element("try-error", class(fc))) {
e[i, ] <- y[i + (1:h)] - fc$mean
}
}
所以这意味着在预测交叉验证的每一次迭代中 都会有一个新的etsauto. arima被估计出来。在我看来,我看不出这是在评估特定ARIMA或平滑模型的预测精度,因为在时间(t-1)估计的模型将与时间t的最终模型选择不同,谁能解释一下为什么这样可以?
在我的使用案例中,我有一些日常数据,并且在每个周四我想预测下一周的数据,这意味着我想每周只训练一次我的Arima模型,这在默认的tsCV行为下是不可能的(faik,我在R中还很陌生...)。
幸运的是,tsCV允许你传递一个自定义函数。在这个函数中,我只在周四的时候训练一个新的模型。如果是另一天,那么我就重新使用上个周四计算的模型。
也许你可以做一些类似的事情来拥有一个 "修复 "模型?