bsvars bsvars website

An R package for Bayesian Estimation of Structural Vector Autoregressive Models

CRAN version R-CMD-check

Provides fast and efficient procedures for Bayesian analysis of Structural Vector Autoregressions. This package estimates a wide range of models, including homo-, heteroskedastic, and non-normal specifications. Structural models can be identified by adjustable exclusion restrictions, time-varying volatility, or non-normality. They all include a flexible three-level equation-specific local-global hierarchical prior distribution for the estimated level of shrinkage for autoregressive and structural parameters. Additionally, the package facilitates predictive and structural analyses such as impulse responses, forecast error variance and historical decompositions, forecasting, verification of heteroskedasticity, non-normality, and hypotheses on autoregressive parameters, as well as analyses of structural shocks, volatilities, and fitted values. Beautiful plots, informative summary functions, and extensive documentation including the vignette by Woźniak (2024) complement all this. The implemented techniques align closely with those presented in Lütkepohl, Shang, Uzeda, & Woźniak (2024), Lütkepohl & Woźniak (2020), and Song & Woźniak (2021). The bsvars package is aligned regarding objects, workflows, and code structure with the R package bsvarSIGNs by Wang & Woźniak (2024), and they constitute an integrated toolset.

bsvars.org website bsvars website bsvarSIGNs website

Features

Structural Vector Autoregressions

    Y = AX + E           (VAR equation)
   BE = U                (structural equation)

Simple workflows

Fast and efficient computations

**************************************************|
bsvars: Bayesian Structural Vector Autoregressions|
**************************************************|
 Gibbs sampler for the SVAR-SV model              |
   Non-centred SV model is estimated              |
**************************************************|
 Progress of the MCMC simulation for 1000 draws
    Every 10th draw is saved via MCMC thinning
 Press Esc to interrupt the computations
**************************************************|
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
*************************************

This beautiful logo can be reproduced in R using this file.

bsvars website

Resources

Start your Bayesian analysis of data

The beginnings are as easy as ABC:

library(bsvars)                               # upload the package
data(us_fiscal_lsuw)                          # upload data
spec      = specify_bsvar_sv$new(us_fiscal_lsuw, p = 4)   # specify the model
burn_in   = estimate(spec, 1000)              # run the burn-in
out       = estimate(burn_in, 50000)          # estimate the model

fore      = forecast(out, horizon = 8)        # forecast 2 years ahead
plot(fore)                                    # plot the forecast

irfs      = compute_impulse_responses(out, 8) # compute impulse responses  
plot(irfs)                                    # plot the impulse responses

The bsvars package supports a simplified workflow using the |> pipe:

library(bsvars)                               # upload the package
data(us_fiscal_lsuw)                          # upload data
us_fiscal_lsuw |>
  specify_bsvar_sv$new(p = 4) |>              # specify the model
  estimate(S = 1000) |>                       # run the burn-in
  estimate(S = 50000) -> out                  # estimate the model

out |> forecast(horizon = 8) |> plot()        # compute and plot forecasts
out |> compute_impulse_responses(8) |> plot() # compute and plot impulse responses

Now, you’re ready to analyse your model!

Installation

The first time you install the package

You must have a cpp compiler. Follow the instructions from Section 1.3. by Eddelbuettel & François (2023). In short, for Windows: install RTools, for macOS: install Xcode Command Line Tools, and for Linux: install the standard development packages.

Once that’s done:

Just open your R and type:

install.packages("bsvars")

The developer’s version of the package with the newest features can be installed by typing:

devtools::install_github("bsvars/bsvars")

Development

The package is under intensive development. Your help is most welcome! Please, have a look at the roadmap, discuss package features and applications, or report a bug. Thank you!

About the author

Tomasz is a Bayesian econometrician and a Senior Lecturer at the University of Melbourne. He develops methodology for empirical macroeconomic analyses and programs in R and cpp using Rcpp.