
An R package for Forecasting with Bayesian Panel Vector Autoregressions
Provides Bayesian estimation and forecasting of dynamic panel data using Bayesian Panel Vector Autoregressions with hierarchical prior distributions. The model includes country-specific VARs that share a global prior distribution. Under this prior expected value, each country’s system follows a global VAR with country-invariant parameters. Further flexibility is provided by the hierarchical prior structure that retains the Minnesota prior interpretation for the global VAR and features estimated prior covariance matrices, shrinkage, and persistence levels. Bayesian forecasting is developed for models including exogenous variables, allowing conditional forecasts given the future trajectories of some variables and restricted forecasts assuring that rates are forecasted to stay positive and less than 100. The package implements the model specification, estimation, and forecasting routines, facilitating coherent workflows and reproducibility. Beautiful plots, informative summary functions, and extensive documentation complement all this. An extraordinary computational speed is achieved thanks to employing frontier econometric and numerical techniques and algorithms written in C++. The bpvars package is aligned regarding objects, workflows, and code structure with the R packages bsvars by Woźniak (2024) and bsvarSIGNs by Wang & Woźniak (2024), and they constitute an integrated toolset.
Yc,Xc,Ec,Ac, andSc. Yc = Xc Ac + Ec (VAR equation)
Ec | Xc ~ MN(0, I, Sc) (error term normality)Sc and
column-specific covariance equal to the identity matrix of order
T, denoted by I.A and a global error term
covariance matrix S: Yc = Xc A + Ec (VAR equation)
Ec | Xc ~ MN(0, I, S) (error term normality)
specify_bvarPANEL$new()
functionestimate() methodforecast() methodcompute_variance_decompositions()plot() and summary() methods to gain
the insights into the core of the empirical problem.**************************************************|
bpvars: Forecasting with Bayesian Hierarchical |
Panel Vector Autoregressions |
**************************************************|
Progress of the MCMC simulation for 10000 draws
Every 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.
The beginnings are as easy as ABC:
library(bpvars) # load the package
spec = specify_bvarPANEL$new( # specify the model
ilo_dynamic_panel # data
)
burn = estimate(spec, S = 10000) # run the burn-in
post = estimate(burn, S = 10000) # estimate the model
fore = forecast( # forecast the model
post, # estimation output
horizon = 6 # forecast horizon
)
plot(fore, "COL", main = "Forecasts for Colombia")
summary(fore, "COL")$variable2
post |> # estimation output
compute_variance_decompositions(horizon = 6) |> # compute variance decompositions
plot(which_c = "COL") # plot variance decompositionsThe bpvars package supports a simplified workflow
using the |> pipe:
ilo_dynamic_panel |> # data
specify_bvarPANEL$new() |> # specify the model
estimate(S = 10000) |> # run the burn-in
estimate(S = 10000) -> post # estimate the model
post |> forecast( # forecast the model
horizon = 6 # forecast horizon
) |> plot("COL", main = "Forecasts for Colombia")Now, you’re ready to analyse your model and forecasts!
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.
Just open your R and install the package by running:
instal.packages("bpvars")
To install the package from its developer’s repository just type:
devtools::install_github("bsvars/bpvars")
The package is under intensive development. Your help is most welcome! Please, have a look at our issues to learn what we’re working on. Thank you!
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 C++ using Rcpp.