Forecasting a Bayesian VAR object of class "bvar" with credible bands.
bvar( data =NULL, exogen =NULL, y, x =NULL, A0 =NULL, A =NULL, B =NULL, C =NULL, Sigma =NULL)## S3 method for class 'bvar'plot(x, ci =0.95, type ="hist",...)## S3 method for class 'bvar'predict(object,..., n.ahead =10, new_x =NULL, new_d =NULL, ci =0.95)
Arguments
data: the original time-series object of endogenous variables.
exogen: the original time-series object of unmodelled variables.
y: a time-series object of endogenous variables with T observations, usually, a result of a call to gen_var.
x: an object of class "bvar", usually, a result of a call to draw_posterior.
A0: either a K2×S matrix of MCMC coefficient draws of structural parameters or a named list, where element coeffs contains a K2×S matrix of MCMC coefficient draws of structural parameters and element lambda contains the corresponding draws of inclusion parameters in case variable selection algorithms were employed. For time varying parameter models the coefficient matrix must be TK2×S. Draws of the error covariance matrix of the state equation can be provided as a K2×S matrix in an additional list element.
A: either a pK2×S matrix of MCMC coefficient draws of lagged endogenous variables or a named list, where element coeffs contains a pK2×S matrix of MCMC coefficient draws of lagged endogenous variables and element lambda contains the corresponding draws of inclusion parameters in case variable selection algorithms were employed. For time varying parameter models the coefficient matrix must be pTK2×S. Draws of the error covariance matrix of the state equation can be provided as a pK2×S matrix in an additional list element.
B: either a ((1+s)MK)×S matrix of MCMC coefficient draws of unmodelled, non-deterministic variables or a named list, where element coeffs contains a ((1+s)MK)×S matrix of MCMC coefficient draws of unmodelled, non-deterministic variables and element lambda contains the corresponding draws of inclusion parameters in case variable selection algorithms were employed. For time varying parameter models the coefficient matrix must be (1+s)TMK×S. Draws of the error covariance matrix of the state equation can be provided as a (1+s)MK×S matrix in an additional list element.
C: either a KN×S matrix of MCMC coefficient draws of deterministic terms or a named list, where element coeffs contains a KN×S matrix of MCMC coefficient draws of deterministic terms and element lambda contains the corresponding draws of inclusion parameters in case variable selection algorithms were employed. For time varying parameter models the coefficient matrix must be TKN×S. Draws of the error covariance matrix of the state equation can be provided as a KN×S matrix in an additional list element.
Sigma: a K2×S matrix of MCMC draws for the error variance-covariance matrix or a named list, where element coeffs contains a K2×S matrix of MCMC draws for the error variance-covariance matrix and element lambda contains the corresponding draws of inclusion parameters in case variable selection algorithms were employed to the covariances. For time varying parameter models the coefficient matrix must be TK2×S. Draws of the error covariance matrix of the state equation can be provided as a K2×S matrix in an additional list element.
ci: a numeric between 0 and 1 specifying the probability mass covered by the credible intervals. Defaults to 0.95.
type: either "hist" (default) for histograms, "trace" for a trace plot or "boxplot" for a boxplot. Only used for parameter draws of constant coefficients.
...: additional arguments.
object: an object of class "bvar", usually, a result of a call to bvar or bvec_to_bvar.
n.ahead: number of steps ahead at which to predict.
new_x: an object of class ts of new non-deterministic, exogenous variables. The object must have the same frequency as the time series in object[["x"]] and must contain at least all necessary observations for the predicted period.
new_d: a matrix of new deterministic variables. Must have n.ahead rows.
Returns
An object of class "bvar" containing the following components, if specified: - data: the original time-series object of endogenous variables.
exogen: the original time-series object of unmodelled variables.
y: a K×T matrix of endogenous variables.
x: a (pK+(1+s)M+N)×T matrix of regressor variables.
A0: an S×K2 "mcmc" object of coefficient draws of structural parameters. In case of time varying parameters a list of such objects.
A0_lambda: an S×K2 "mcmc" object of inclusion parameters for structural parameters.
A0_sigma: an S×K2 "mcmc" object of the error covariance matrices of the structural parameters in a model with time varying parameters.
A: an S×pK2 "mcmc" object of coefficient draws of lagged endogenous variables. In case of time varying parameters a list of such objects.
A_lambda: an S×pK2 "mcmc" object of inclusion parameters for lagged endogenous variables.
A_sigma: an S×pK2 "mcmc" object of the error covariance matrices of coefficients of lagged endogenous variables in a model with time varying parameters.
B: an S×((1+s)MK) "mcmc" object of coefficient draws of unmodelled, non-deterministic variables. In case of time varying parameters a list of such objects.
B_lambda: an S×((1+s)MK) "mcmc" object of inclusion parameters for unmodelled, non-deterministic variables.
B_sigma: an S×((1+s)MK) "mcmc" object of the error covariance matrices of coefficients of unmodelled, non-deterministic variables in a model with time varying parameters.
C: an S×NK "mcmc" object of coefficient draws of deterministic terms. In case of time varying parameters a list of such objects.
C_lambda: an S×NK "mcmc" object of inclusion parameters for deterministic terms.
C_sigma: an S×NK "mcmc" object of the error covariance matrices of coefficients of deterministic terms in a model with time varying parameters.
Sigma: an S×K2 "mcmc" object of variance-covariance draws. In case of time varying parameters a list of such objects.
Sigma_lambda: an S×K2 "mcmc" object of inclusion parameters for error covariances.
Sigma_sigma: an S×K2 "mcmc" object of the error covariance matrices of the coefficients of the error covariance matrix of the measurement equation of a model with time varying parameters.
specifications: a list containing information on the model specification.
A time-series object of class "bvarprd".
Details
For the VARX model
A0yt=i=1∑pAiyt−i+i=0∑sBixt−i+Cdt+ut
the function collects the S draws of a Gibbs sampler (after the burn-in phase) in a standardised object, where yt is a K-dimensional vector of endogenous variables, A0 is a K×K matrix of structural coefficients. Ai is a K×K coefficient matrix of lagged endogenous variabels. xt is an M-dimensional vector of unmodelled, non-deterministic variables and Bi its corresponding coefficient matrix. dt is an N-dimensional vector of deterministic terms and C its corresponding coefficient matrix. ut is an error term with ut∼N(0,Σu).
For time varying parameter and stochastic volatility models the respective coefficients and error covariance matrix of the above model are assumed to be time varying, respectively.
The draws of the different coefficient matrices provided in A0, A, B, C and Sigma have to correspond to the same MCMC iterations.
For the VAR model
A0yt=i=1∑pAiyt−i+i=0∑sBixt−i+CDt+ut,
with ut∼N(0,Σ) the function produces n.ahead forecasts.
Examples
# Get datadata("e1")e1 <- diff(log(e1))e1 <- window(e1, end = c(1978,4))# Generate model datadata <- gen_var(e1, p =2, deterministic ="const")# Add priorsmodel <- add_priors(data, coef = list(v_i =0, v_i_det =0), sigma = list(df =0, scale =.00001))# Set RNG seed for reproducibility set.seed(1234567)iterations <-400# Number of iterations of the Gibbs sampler# Chosen number of iterations and burnin should be much higher.burnin <-100# Number of burn-in drawsdraws <- iterations + burnin # Total number of MCMC drawsy <- t(model$data$Y)x <- t(model$data$Z)tt <- ncol(y)# Number of observationsk <- nrow(y)# Number of endogenous variablesm <- k * nrow(x)# Number of estimated coefficients# Priorsa_mu_prior <- model$priors$coefficients$mu # Vector of prior parameter meansa_v_i_prior <- model$priors$coefficients$v_i # Inverse of the prior covariance matrixu_sigma_df_prior <- model$priors$sigma$df # Prior degrees of freedomu_sigma_scale_prior <- model$priors$sigma$scale # Prior covariance matrixu_sigma_df_post <- tt + u_sigma_df_prior # Posterior degrees of freedom# Initial valuesu_sigma_i <- diag(1/.00001, k)# Data containers for posterior drawsdraws_a <- matrix(NA, m, iterations)draws_sigma <- matrix(NA, k^2, iterations)# Start Gibbs samplerfor(draw in1:draws){# Draw conditional mean parameters a <- post_normal(y, x, u_sigma_i, a_mu_prior, a_v_i_prior)# Draw variance-covariance matrix u <- y - matrix(a, k)%*% x # Obtain residuals u_sigma_scale_post <- solve(u_sigma_scale_prior + tcrossprod(u)) u_sigma_i <- matrix(rWishart(1, u_sigma_df_post, u_sigma_scale_post)[,,1], k)# Store drawsif(draw > burnin){ draws_a[, draw - burnin]<- a
draws_sigma[, draw - burnin]<- solve(u_sigma_i)}}# Generate bvar objectbvar_est <- bvar(y = model$data$Y, x = model$data$Z, A = draws_a[1:18,], C = draws_a[19:21,], Sigma = draws_sigma)# Load data data("e1")e1 <- diff(log(e1))*100# Generate modelmodel <- gen_var(e1, p =1, deterministic =2, iterations =100, burnin =10)# Chosen number of iterations and burn-in should be much higher.# Add priorsmodel <- add_priors(model)# Obtain posterior drawsobject <- draw_posterior(model)# Plot drawsplot(object)# Load datadata("e1")e1 <- diff(log(e1))*100e1 <- window(e1, end = c(1978,4))# Generate model datamodel <- gen_var(e1, p =0, deterministic ="const", iterations =100, burnin =10)# Chosen number of iterations and burnin should be much higher.# Add prior specificationsmodel <- add_priors(model)# Obtain posterior drawsobject <- draw_posterior(model)# Generate forecastsbvar_pred <- predict(object, n.ahead =10, new_d = rep(1,10))# Plot forecastsplot(bvar_pred)
References
Lütkepohl, H. (2006). New introduction to multiple time series analysis (2nd ed.). Berlin: Springer.