Learn R Programming

MSBVAR (version 0.9-2)

forecast: Generate forecasts for fitted VAR objects

Description

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

Usage

forecast(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)), N1, N2)

Arguments

varobj
Fitted VAR model of the class VAR, BVAR, BSVAR, or MSBVAR produced by reduced.form.var, szbvar, szbsvar or gibbs.msbvar.
nsteps
Number of periods in the forecast horizon
A0
$m x m$ matrix of the decomposition of the contemporaneous endogenous forecast innovations for BSVAR models.
shocks
Structural shocks to the VAR, BVAR, or BSVAR models. These must be scaled consistent with the structural identification in $A(0)$.
exog.fut
nsteps x number of exogenous variables matrix of the future values of exogenous variable shocks. Only implemented for VAR, BVAR, and BSVAR models at present.
N1
integer, number of burnin draws for the MSBVAR forecasts.
N2
integer, number of final posterior draws for MSBVAR forecasts.

Value

For VAR, BVAR, and BSVAR models:A matrix time series object, $(T + nsteps) x m$ of the original series and forecasts.For MSBVAR models, a list of 4 elements:
forecasts
$N2 x nsteps x m$ array of the posterior forecasts.
ss.sample
bit compressed version of the MS state space. (can be summarized with plot.SS or mean.SS.)
k
number of forecast steps, nsteps
h
integer, number of MS regimes used in the forecasts.

Details

VAR / BVAR / BSVAR models:

This function computes forecasts for the classical and Bayesian VAR models that are estimated in the MSBVAR package. Users can specify shocks to the system over the forecast horizon (both structural and exogenous shocks) for VAR, BVAR, and BSVAR models. The forecasting model is that described by Waggoner and Zha (1999) and can be used to construct unconditional forecasts based on the structural shocks and the contemporaneous decomposition of the innovation variance, A0.

MSBVAR:

Generates a set of N2 draws from the posterior forecast density. Forecasts are constructed using data augmentation, so the forecasts account for both forecast and parameter uncertainty. The function for the MSBVAR model takes as arguments varobj, which is the posterior parameters from a call to gibbs.msbvar, and N1 and N2 to set the burnin and number of draws from the posterior. The posterior forecasts are based on the mixture over the $h$ regimes for the specified model.

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"))


## Not run: 
# # MSBVAR forecasts
# 
# # Fit model
# m1 <- msbvar(Y.sample1, p=1, h=2, lambda0=0.8, lambda1=0.2,
#              lambda3=1, lambda4=0.2, lambda5=0, mu5=0, mu6=0,
#              qm=12, prior=0)
# 
# # Gibbs sampling
# m1id <- gibbs.msbvar(m1, N1=1000, N2=10000, permute=FALSE, Sigma.idx=1)
# 
# # Forecast density estimation
# msforc <- forecast(m1id, nsteps=nrow(Y.sample2), N1=1000, N2=10000)
# 
# # Summarize forecasts
# apply(msforc$forecasts, c(2,3), mean)
# 
# ## End(Not run)

Run the code above in your browser using DataLab