使用向量自回归的递归预测

时间:2018-01-19 01:15:25

标签: r

我使用vars包中的Canada数据作为示例。我想使用前48个观测值来运行var,预测下一个季度,将预测数据添加到原始的48个观测值,使用49个观测值运行var,预测下一个季度,将新预测添加到49个观测值,重新运行var,重复该过程,直到使用所有观察结果。最后,我希望生成一个包含预测值的数据帧,我可以使用它来计算RMSE。以下是我的代码:

library(dplyr)
library(stats)
library(vars)
data(Canada)
Canada_df <- as.data.frame(Canada)
prefit2 <- Canada_df[1:48,]
locs <- data.frame()
while (i <= nrow(Canada_df) & i >=48){

  varfit <- VAR(y = prefit2, p = 6, type = 'const')
  pred <- predict(varfit, n.ahead =1)
  locs <- sapply(pred$fcst[1:3], function (k) k[ , 1]) %>% matrix(nrow = 1) %>% data.frame()
  colnames(locs) <- colnames(prefit)
  prefit2 <- bind_rows(prefit2, locs)
  i = i + 1
}

当我运行代码时,没有生成错误。然而,在prefit2中仍然有48个观察值,这意味着在while循环期间没有附加预测。另外,我原来是5,所以看起来循环在它变为5时停止。不确定问题出在哪里。

1 个答案:

答案 0 :(得分:1)

我尝试了你的代码,它实际上按照你的预期运行。唯一值得提醒的是在while循环之前声明我。在这种情况下,例如,您要声明i <- 48