SkillAgentSearch skills...

Bsvars

Bayesian Estimation of Structural Vector Autoregressive Models

Install / Use

/learn @bsvars/Bsvars
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

<!-- README.md is generated from README.Rmd. Please edit that file -->

bsvars <img src="man/figures/logo.svg" align="right" padding-left="3px" alt="bsvars website" />

An R package for Bayesian Estimation of Structural Vector Autoregressive Models

<!-- badges: start -->

CRAN
version R-CMD-check

<!-- badges: end -->

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, and include exclusion restrictions on autoregressive parameters. 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 (2025), 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.

<a href="https://bsvars.org"> <img src="https://raw.githubusercontent.com/FortAwesome/Font-Awesome/6.x/svgs/solid/house.svg" width="40" height="40"/> </a> <a href="mailto:contact@bsvars.org"> <img src="https://raw.githubusercontent.com/FortAwesome/Font-Awesome/6.x/svgs/solid/envelope.svg" width="40" height="40"/> </a> <a href="https://github.com/bsvars/bsvars"> <img src="https://raw.githubusercontent.com/FortAwesome/Font-Awesome/6.x/svgs/brands/github.svg" width="40" height="40"/> </a> <a href="https://bsky.app/profile/bsvars.org"> <img src="https://upload.wikimedia.org/wikipedia/commons/7/7a/Bluesky_Logo.svg" width="40" height="40"/> </a> <a href="https://fosstodon.org/@bsvars"> <img src="https://raw.githubusercontent.com/FortAwesome/Font-Awesome/6.x/svgs/brands/mastodon.svg" width="40" height="40"/> </a>

<a href="https://bsvars.org/"><img src="https://raw.githubusercontent.com/bsvars/hex/refs/heads/main/bsvars.org/bsvars.org.png" width="120" alt="bsvars.org website" /></a> <a href="https://bsvars.org/bsvars/"><img src="https://raw.githubusercontent.com/bsvars/hex/refs/heads/main/bsvars/bsvars.png" width="120" alt="bsvars website" /></a> <a href="https://bsvars.org/bsvarSIGNs/"><img src="https://raw.githubusercontent.com/bsvars/hex/refs/heads/main/bsvarSIGNs/bsvarSIGNs.png" width="120" alt="bsvarSIGNs website" /></a>

Features

Structural Vector Autoregressions

  • All the models in the bsvars package consist of the Vector Autoregressive equation, with autoregressive parameters A and error terms E, and the structural equation with a structural matrix B and shocks U
<!-- -->
    Y = AX + E           (VAR equation)
   BE = U                (structural equation)
  • The models are identified via exclusion restrictions, heteroskedasticity, or non-normality
  • The autoregressive parameters A and the structural matrix B may include exclusion restrictions and feature a three-level local-global hierarchical prior that estimates the equation-specific level of shrinkage
  • In five models the structural shocks are conditionally normal with zero mean and diagonal covariance matrix with variances that are:
    • equal to one, that is, time invariant
    • time-varying following non-centred Stochastic Volatility
    • time-varying following centred Stochastic Volatility
    • time-varying with stationary Markov Switching
    • time-varying with sparse Markov Switching where the number of volatility regimes is estimated
  • In three more models non-normal structural shocks follow
    • a joint Student-t distribution with estimated equation-specific degrees-of-freedom parameter
    • a finite mixture of normal components and component-specific variances
    • a sparse mixture of normal components and component-specific variances where the number of states is estimated

Simple workflows

  • Specify the models using specify_bsvar_* functions, for instance, specify_bsvar_sv$new()
  • Estimate the models using the estimate() method
  • Predict the future using the forecast() method
  • Provide structural analyses using impulse responses, forecast error variance decompositions, historical decompositions, and structural shocks using functions compute_impulse_responses(), compute_variance_decompositions(), compute_historical_decompositions(), and compute_structural_shocks() respectively
  • Analyse the fitted values, time-varying volatility, and volatility regimes using functions compute_fitted_values(), compute_conditional_sd(), and compute_regime_probabilities() respectively
  • Use plot() and summary() methods to gain the insights into the core of the empirical problem.
  • Verify identification through heteroskedasticity, non-normality, and hypotheses on autoregressive parameters using functions verify_identification() and verify_autoregression()

Fast and efficient computations

  • Extraordinary computational speed is obtained by combining
    • the application of frontier econometric and numerical techniques, and
    • the implementation using compiled code written in cpp
  • It combines the best of two worlds: the ease of data analysis with R and fast cpp algorithms
  • The algorithms used here are very fast. But still, Bayesian estimation might take a little time. Look at our beautiful progress bar in the meantime:
<!-- -->
**************************************************|
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%
[----|----|----|----|----|----|----|----|----|----|
*************************************

The hexagonal logo

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

<p> </p>

<a href="https://bsvars.org/bsvars/"><img src="man/figures/logo.png" height="400" alt="bsvars website" /></a>

<p> </p>

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(fo
View on GitHub
GitHub Stars60
CategoryDevelopment
Updated6d ago
Forks13

Languages

R

Security Score

85/100

Audited on Mar 27, 2026

No findings