normalise.PosteriorBSVAREXH: Waggoner & Zha (2003) row signs normalisation of the...

View source: R/normalise.R

normalise.PosteriorBSVAREXHR Documentation

Waggoner & Zha (2003) row signs normalisation of the posterior draws for the structural matrix B

Description

Normalises the sign of rows of matrix B MCMC draws, relative to matrix B_benchmark, provided as the second argument. The implemented procedure proposed by Waggoner, Zha (2003) normalises the MCMC output in an optimal way leading to the unimodal posterior. Only normalised MCMC output is suitable for the computations of the posterior characteristics of the B matrix elements and their functions such as the impulse response functions and other economically interpretable values.

Usage

## S3 method for class 'PosteriorBSVAREXH'
normalise(posterior, B_benchmark = NULL)

Arguments

posterior

posterior estimation outcome of class PosteriorBSVAREXH generated using the estimate() function, amongst other draws, the S draws from the posterior distribution of the NxN structural matrix of contemporaneous relationships B. These draws are to be normalised with respect to the matrix B_benchmark.

B_benchmark

the benchmark NxN structural matrix specified by the user to have the desired row signs

Value

An object of the same class as that provided as the input argument posterior containing the posterior draws including the draws of the normalised structural matrix.

Author(s)

Tomasz Woźniak wozniak.tom@pm.me

References

Waggoner, D.F., and Zha, T., (2003) Likelihood Preserving Normalization in Multiple Equation Models. Journal of Econometrics, 114(2), 329–47, \Sexpr[results=rd]{tools:::Rd_expr_doi("10.1016/S0304-4076(03)00087-3")}.

See Also

estimate

Examples

specification  = specify_bsvar_exh$new(us_fiscal_lsuw)    # specify the model
burn_in        = estimate(specification, 5)               # run the burn-in
posterior      = estimate(burn_in, 5)                     # estimate the model

# normalise the posterior
BB             = posterior$last_draw$starting_values$B    # get the last draw of B
B_benchmark          = diag((-1) * sign(diag(BB))) %*% BB       # set negative diagonal elements
posterior      = normalise(posterior, B_benchmark)              # draws in posterior are normalised


bsvars documentation built on Aug. 22, 2026, 5:09 p.m.