我有同样的问题(我认为),所以我编写了这个函数来计算提前 n 步预测。它虽然没有给出误差带或 CI。
VAR.pred <- function(x, varest, n.ahead = 10)
{
k <- ncol(varest$y)
p <- varest$p
Atemp <- matrix(NA, k, k*p + 1)
for(i in 1:k) Atemp[i, ] <- (coef(varest)[[i]])[, 1]
Const <- as.matrix(Atemp[, ncol(Atemp)])
A <- Atemp[, -ncol(Atemp)]
fcast <- matrix(NA, n.ahead, k)
spoint <- as.matrix(x[nrow(x):(nrow(x)- p + 1), ])
for(l in 1:n.ahead)
{
ftemp <- A[, 1:k]%*%t(spoint)[, 1]
for(j in 2:p) ftemp <- ftemp + A[, (1 + k*(j-1)):(k*j)]%*%t(spoint)[, j]
ftemp <- ftemp + Const
fcast[l, ] <- t(ftemp)
spoint <- rbind(t(ftemp), spoint)[1:p, ]
}
fframe <- data.frame(fcast)
names(fframe) <- dimnames(x)[[2]]
return(fframe)
}
给 pr1
VAR.pred(x = model$y, varest = model)
给 pr2
VAR.pred(x = newFrame, varest = model)
希望我有所帮助。