多步提前时间序列预测(使用直接方法)

Multi-Step Ahead Time Series Forecasting (Using Direct Approach)

所以我是 R 的新手,我想知道我的循环预测多步时间序列有什么问题。

我首先使用此循环来模拟时间 τ 处的信息集,并根据 1000 次观察的滚动 window 来估计模型,并使用 726 进行一步超前的样本外预测样本外观察。

require(highfrequency)
require(quantmod)
require(xts)

getSymbols("^VIX")

VIX_fcst <- VIX[, "VIX.Close"]
VIX_fcst$pred <- NA

for (i in 2000:2726) {
  HAREstimated <- HARmodel(data = VIX_fcst[i: (i+ 999), "VIX.Close"], periods = c(1, 5 , 22), type = "HAR", inputType = "RM")
  VIX_fcst$pred[i + 1000] <- predict(HAREstimated)
}

基本上,我对 1000 个观测值进行回归并将预测 t+1 存储在单独的列中,效果很好。

现在我想通过集成一个内部循环来使用预测值而不是 t+1、t+2 的价格来找到 t+5 预测,从而进一步进行 5 提前多步预测...时间+5。这是726 obs的第一个T + 5预测的示例:

for (i in 2000:2004) {
  HAREstimated2 <- HARmodel(data = VIX_fcst[i: (i+ 999), "VIX.Close"], periods = c(1, 5 , 22), type = "HAR", inputType = "RM")
  VIX_fcst$VIX.Close[i + 1000] <- predict(HAREstimated2)
}

我认为将值存储在 VIX.Close 列中可以解决问题,但循环似乎没有考虑使我回到领先一步循环结果的预测。

有什么想法吗?

我终于自己找到了解决方案,这里是给那些会遇到这个问题的人:

for (i in 2000:2722) {

  for (j in i:(i+4)) {
    if (j < (i+4)) {
      HAREstimated <- HARmodel(data = VIX_fcst[j: (j + 999), "VIX.Close"], periods = c(1, 5 , 22), type = "HAR", inputType = "RM")
      VIX_fcst$VIX.Close[j + 1000] <- predict(HAREstimated)
    }
    else {
      HAREstimated <- HARmodel(data = VIX_fcst[j: (j + 999), "VIX.Close"], periods = c(1, 5 , 22), type = "HAR", inputType = "RM")
      VIX_fcst$pred[j + 1000] <- predict(HAREstimated3)
      VIX_fcst <- VIX[, "VIX.Close"]
    }
  }
}

请注意,您需要在要预测的样本中删除 4 个观测值。