【发布时间】: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