【问题标题】:Recursive prediction using vector autoregression使用向量自回归的递归预测
【发布时间】:2018-01-19 21:42:36
【问题描述】:

我以 vars 包中的加拿大数据为例。我想使用前 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 时停止。不确定问题出在哪里。

【问题讨论】:

    标签: r


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2018-12-23
      • 1970-01-01
      • 1970-01-01
      • 2013-03-24
      • 1970-01-01
      • 1970-01-01
      • 2014-08-22
      • 1970-01-01
      • 2017-04-06
      相关资源
      最近更新 更多