为什么tsCV适合与ets / auto.arima等模型选择算法一起使用?

时间:2018-12-07 13:07:58

标签: r cross-validation arima forecast

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
        }
    }

因此,这意味着对于预测交叉验证中的每个迭代,将估计一个新的ets / auto.arima。在我看来,我看不到它如何评估特定ARIMA或平滑模型的预测准确性,因为在时间(t-1)估算的模型将不同于在时间t选择的最终模型。有人可以解释为什么可以吗?

1 个答案:

答案 0 :(得分:0)

当尝试使用tsCV评估Arima(2,1,0)时,我面临类似的问题。 在我的用例中,我有一些每日数据,并且在每个星期四我都希望预测下一周的数据。 这意味着我只想每周训练一次Arima模型,这是不可能的(默认情况下,tsCV行为是不可能的(afaik,我在R中还是很新的...)。

幸运的是,tsCV允许您传递自定义函数。在其中,只有在星期四时,我才会训练新模型。如果是第二天,那么我将重用上一个星期四计算的模型。

也许您可以做一些类似于“修复”模型的事情?