Learn R Programming

MSBVAR (version 0.3.2)

forecast: Generate forecasts for fitted VAR objects

Description

Forecasting for VAR/BVAR/BSVAR objects with structural (endogenous) and exogenous shocks.

Usage

forecast.VAR(varobj, nsteps, A0 = t(chol(varobj$mean.S)),
         shocks = matrix(0, nrow = nsteps, ncol = dim(varobj$ar.coefs)[1]),
         exog.fut = matrix(0, nrow = nsteps, ncol = nrow(varobj$exog.coefs)))
forecast.BVAR(varobj, nsteps, A0 = t(chol(varobj$mean.S)),
         shocks = matrix(0, nrow = nsteps, ncol = dim(varobj$ar.coefs)[1]),
         exog.fut = matrix(0, nrow = nsteps, ncol = nrow(varobj$exog.coefs)))
forecast.BSVAR(varobj, nsteps, A0 = solve(varobj$A0.mode),
         shocks = matrix(0, nrow = nsteps, ncol = dim(varobj$ar.coefs)[1]),
         exog.fut = matrix(0, nrow = nsteps, ncol = nrow(varobj$exog.coefs)))

Arguments

Value

A matrix time series object, $((T + nsteps) \times m)$ of the original series and forecasts.

Details

This function computes forecasts for both classical and Bayesian VARs. Users can specify shocks to the system over the forecast horizon (both structural and exogenous shocks). The forecasting model is that described by Waggoner and Zha (1999) and can be used to construct conditional and unconditional forecasts based on thes structural shocks and the contemporaneous decomposition of the innovation variance, A0.

References

Waggoner, Daniel F. and Tao Zha. 1999. "Conditional Forecasts in Dynamic Multivariate Models" Review of Economics and Statistics, 81(4):639-651.

See Also

reduced.form.var, szbvar and szbsvar for estimation methods that create the elements needed to forecast

Examples

Run this code
data(IsraelPalestineConflict)
Y.sample1 <- window(IsraelPalestineConflict, end=c(2002, 52))
Y.sample2 <- window(IsraelPalestineConflict, start=c(2003,1))

# Fit a BVAR model
fit.bvar <- szbvar(Y.sample1, p=6, lambda0=0.6, lambda1=0.1, lambda3=2,
                   lambda4=0.25, lambda5=0, mu5=0, mu6=0, prior=0)

# Forecast -- this gives back the sample PLUS the forecasts!

forecasts <- forecast(fit.bvar, nsteps=nrow(Y.sample2))
forecasts.only <- forecasts[(nrow(Y.sample1)+1):nrow(forecasts),]

# Plot forecasts and actual data
i2p <- ts(cbind(Y.sample2[,1], forecasts.only[,1]), start=c(2003,1), freq=52)
p2i <- ts(cbind(Y.sample2[,2], forecasts.only[,2]), start=c(2003,1), freq=52)

par(mfrow=c(2,1))
plot(i2p, plot.type=c("single"))
plot(p2i, plot.type=c("single"))

Run the code above in your browser using DataLab