Hello,
First, thanks a lot for developing the package! I am relying on it heavily in my daily work.
However, only recently I started to doubt if I understand the details of how the BVAR unconditional forecasts are generated. In predict method there is a line made to add noise to a forecast generated with compute_fcast method.
fcast_store[["fcast"]][i, , ] <- fcast_base + t(crossprod(sigma[j, , ], matrix(rnorm(M * fcast[["horizon"]]), nrow = M)))
I have a two questions on that:
- It looks like we want to augment fcast_base with a set of shocks drawn from $N(0, \Sigma)$. But to get that, shouldn't we multiply a sample drawn form $N(0,1)$ by $L$ defined so $\Sigma=LL^T$ (e.g. obtained with Cholesky decomp), instead of multiplying that sample by the covariance matrix itself?
- More generally, wouldn't it be more appropriate to add the noise within
compute_fcast in a period-by-period manner? I mean doing that within a core loop in compute_fcast, so that Y_f[i+1,] is calculated based Y_f[i, ] that is consistent with added period i noise/shock. Adding all the shocks as a batch after the full path of base forecast was calculated seems inconsistent. The loop that I refer to:
for(i in seq.int(2, 1 + horizon)) {
Y_f[i, ] <- tcrossprod(Y_f[i - 1, ], beta_comp) +
c(beta_const, rep(0, M * (lags - 1))) # Maybe go back to normal beta
}
Thanks,
Pawel
Hello,
First, thanks a lot for developing the package! I am relying on it heavily in my daily work.
However, only recently I started to doubt if I understand the details of how the BVAR unconditional forecasts are generated. In
predictmethod there is a line made to add noise to a forecast generated withcompute_fcastmethod.fcast_store[["fcast"]][i, , ] <- fcast_base + t(crossprod(sigma[j, , ], matrix(rnorm(M * fcast[["horizon"]]), nrow = M)))I have a two questions on that:
compute_fcastin a period-by-period manner? I mean doing that within a core loop incompute_fcast, so that Y_f[i+1,] is calculated based Y_f[i, ] that is consistent with added period i noise/shock. Adding all the shocks as a batch after the full path of base forecast was calculated seems inconsistent. The loop that I refer to:Thanks,
Pawel