Forecasting using Structural Vector Autoregression
Forecasting using Structural Vector Autoregression
Samples from the joint predictive density of all of the dependent variables for models from packages bsvars, bsvarSIGNs or bvarPANELs at forecast horizons from 1 to horizon specified as an argument of the function.
## S3 method for class 'PosteriorBSVARMIX'forecast( posterior, horizon =1, exogenous_forecast =NULL, conditional_forecast =NULL)
Arguments
posterior: posterior estimation outcome - an object of class PosteriorBSVARMIX obtained by running the estimate function.
horizon: a positive integer, specifying the forecasting horizon.
exogenous_forecast: a matrix of dimension horizon x d containing forecasted values of the exogenous variables.
conditional_forecast: a horizon x N matrix with forecasted values for selected variables. It should only contain numeric or NA
values. The entries with NA values correspond to the values that are forecasted conditionally on the realisations provided as numeric values.
Returns
A list of class Forecasts containing the draws from the predictive density and for heteroskedastic models the draws from the predictive density of structural shocks conditional standard deviations and data. The output elements include:
forecasts: an NxTxS array with the draws from predictive density
forecasts_sigma: provided only for heteroskedastic models, an NxTxS array with the draws from the predictive density of structural shocks conditional standard deviations
Y: an NxT matrix with the data on dependent variables
Examples
# upload datadata(us_fiscal_lsuw)# specify the model and set seedset.seed(123)specification = specify_bsvar_mix$new(us_fiscal_lsuw, p =1, M =2)# run the burn-inburn_in = estimate(specification,5)# estimate the modelposterior = estimate(burn_in,10)# sample from predictive density 1 year aheadpredictive = forecast(posterior,4)# workflow with the pipe |>############################################################set.seed(123)us_fiscal_lsuw |> specify_bsvar_mix$new(p =1, M =2)|> estimate(S =5)|> estimate(S =10)|> forecast(horizon =4)-> predictive
# conditional forecasting using a model with exogenous variables############################################################data(us_fiscal_ex_forecasts)# upload exogenous variables future valuesdata(us_fiscal_cond_forecasts)# upload a matrix with projected ttr#' set.seed(123)specification = specify_bsvar_mix$new(us_fiscal_lsuw, M =2, exogenous = us_fiscal_ex)burn_in = estimate(specification,5)posterior = estimate(burn_in,10)# forecast 2 years aheadpredictive = forecast( posterior, horizon =8, exogenous_forecast = us_fiscal_ex_forecasts, conditional_forecast = us_fiscal_cond_forecasts
)summary(predictive)# workflow with the pipe |>############################################################set.seed(123)us_fiscal_lsuw |> specify_bsvar_mix$new(M =2, exogenous = us_fiscal_ex)|> estimate(S =5)|> estimate(S =10)|> forecast( horizon =8, exogenous_forecast = us_fiscal_ex_forecasts, conditional_forecast = us_fiscal_cond_forecasts
)|> plot()