
Bayesian estimation of a Structural Vector Autoregression with shocks following a finite mixture of normal components via Gibbs sampler
Source:R/estimate.BSVARMIX.R
estimate.PosteriorBSVARMIX.RdEstimates the SVAR with non-normal residuals following a finite M mixture of normal distributions proposed by Woźniak & Droumaguet (2022).
Implements the Gibbs sampler proposed by Waggoner & Zha (2003)
for the structural matrix \(B\) and the equation-by-equation sampler by Chan, Koop, & Yu (2024)
for the autoregressive slope parameters \(A\). Additionally, the parameter matrices \(A\) and \(B\)
follow a Minnesota prior and generalised-normal prior distributions respectively with the matrix-specific
overall shrinkage parameters estimated thanks to a hierarchical prior distribution. The finite mixture of normals
model is estimated using the prior distributions and algorithms proposed by Woźniak & Droumaguet (2024),
Lütkepohl & Woźniak (2020), and Song & Woźniak (2021). See section Details for the model equations.
Usage
# S3 method for class 'PosteriorBSVARMIX'
estimate(specification, S, thin = 1, show_progress = TRUE)Arguments
- specification
an object of class PosteriorBSVARMIX generated using the
estimate.BSVAR()function. This setup facilitates the continuation of the MCMC sampling starting from the last draw of the previous run.- S
a positive integer, the number of posterior draws to be generated
- thin
a positive integer, specifying the frequency of MCMC output thinning
- show_progress
a logical value, if
TRUEthe estimation progress bar is visible
Value
An object of class PosteriorBSVARMIX containing the Bayesian estimation output and containing two elements:
posterior a list with a collection of S draws from the posterior distribution generated via Gibbs sampler containing:
- A
an
NxKxSarray with the posterior draws for matrix \(A\)- B
an
NxNxSarray with the posterior draws for matrix \(B\)- hyper
a
5xSmatrix with the posterior draws for the hyper-parameters of the hierarchical prior distribution- sigma2
an
NxMxSarray with the posterior draws for the structural shocks conditional variances- PR_TR
an
MxMxSarray with the posterior draws for the transition matrix.- xi
an
MxTxSarray with the posterior draws for the regime allocation matrix.- pi_0
an
MxSmatrix with the posterior draws for the ergodic probabilities- sigma
an
NxTxSarray with the posterior draws for the structural shocks conditional standard deviations' series over the sample period
last_draw an object of class BSVARMIX with the last draw of the current MCMC run as the starting value to be passed to the continuation of the MCMC estimation using estimate().
Details
The heteroskedastic SVAR model is given by the reduced form equation:
$$Y = AX + E$$
where \(Y\) is an NxT matrix of dependent variables, \(X\) is a KxT matrix of explanatory variables,
\(E\) is an NxT matrix of reduced form error terms, and \(A\) is an NxK matrix of autoregressive slope coefficients and parameters on deterministic terms in \(X\).
The structural equation is given by
$$BE = U$$
where \(U\) is an NxT matrix of structural form error terms, and
\(B\) is an NxN matrix of contemporaneous relationships.
Finally, the structural shocks, \(U\), are temporally and contemporaneously independent and finite-mixture of normals distributed with zero mean.
The conditional variance of the nth shock at time t is given by:
$$Var_{t-1}[u_{n.t}] = s^2_{n.s_t}$$
where \(s_t\) is a the regime indicator of
the regime-specific conditional variances of structural shocks \(s^2_{n.s_t}\).
In this model, the variances of each of the structural shocks sum to M.
The regime indicator \(s_t\) is either such that:
the regime probabilities are non-zero which requires all regimes to have a positive number occurrences over the sample period, or
sparse with potentially many regimes with zero occurrences over the sample period and in which the number of regimes is estimated.
These model selection also with this respect is made using function specify_bsvar_mix.
References
Chan, J.C.C., Koop, G, and Yu, X. (2024) Large Order-Invariant Bayesian VARs with Stochastic Volatility. Journal of Business & Economic Statistics, 42, doi:10.1080/07350015.2023.2252039 .
Lütkepohl, H., and Woźniak, T., (2020) Bayesian Inference for Structural Vector Autoregressions Identified by Markov-Switching Heteroskedasticity. Journal of Economic Dynamics and Control 113, 103862, doi:10.1016/j.jedc.2020.103862 .
Song, Y., and Woźniak, T., (2021) Markov Switching. Oxford Research Encyclopedia of Economics and Finance, Oxford University Press, doi:10.1093/acrefore/9780190625979.013.174 .
Waggoner, D.F., and Zha, T., (2003) A Gibbs sampler for structural vector autoregressions. Journal of Economic Dynamics and Control, 28, 349–366, doi:10.1016/S0165-1889(02)00168-9 .
Woźniak, T., and Droumaguet, M., (2024) Bayesian Assessment of Identifying Restrictions for Heteroskedastic Structural VARs
Author
Tomasz Woźniak wozniak.tom@pm.me
Examples
# simple workflow
############################################################
# upload data
data(us_fiscal_lsuw)
# specify the model and set seed
specification = specify_bsvar_mix$new(us_fiscal_lsuw, p = 1, M = 2)
#> The identification is set to the default option of lower-triangular structural matrix.
set.seed(123)
# run the burn-in
burn_in = estimate(specification, 10)
#> **************************************************|
#> bsvars: Bayesian Structural Vector Autoregressions|
#> **************************************************|
#> Gibbs sampler for the SVAR-finiteMIX model |
#> **************************************************|
#> Progress of the MCMC simulation for 10 draws
#> Every draw is saved via MCMC thinning
#> Press Esc to interrupt the computations
#> **************************************************|
# estimate the model
posterior = estimate(burn_in, 20, thin = 2)
#> **************************************************|
#> bsvars: Bayesian Structural Vector Autoregressions|
#> **************************************************|
#> Gibbs sampler for the SVAR-finiteMIX model |
#> **************************************************|
#> Progress of the MCMC simulation for 20 draws
#> Every 2nd draw is saved via MCMC thinning
#> Press Esc to interrupt the computations
#> **************************************************|
# workflow with the pipe |>
############################################################
set.seed(123)
us_fiscal_lsuw |>
specify_bsvar_mix$new(p = 1, M = 2) |>
estimate(S = 10) |>
estimate(S = 20, thin = 2) |>
compute_impulse_responses(horizon = 4) -> irf
#> The identification is set to the default option of lower-triangular structural matrix.
#> **************************************************|
#> bsvars: Bayesian Structural Vector Autoregressions|
#> **************************************************|
#> Gibbs sampler for the SVAR-finiteMIX model |
#> **************************************************|
#> Progress of the MCMC simulation for 10 draws
#> Every draw is saved via MCMC thinning
#> Press Esc to interrupt the computations
#> **************************************************|
#> **************************************************|
#> bsvars: Bayesian Structural Vector Autoregressions|
#> **************************************************|
#> Gibbs sampler for the SVAR-finiteMIX model |
#> **************************************************|
#> Progress of the MCMC simulation for 20 draws
#> Every 2nd draw is saved via MCMC thinning
#> Press Esc to interrupt the computations
#> **************************************************|