BH_SBVAR {BHSBVAR}R Documentation

Structural Bayesian Vector Autoregression

Description

Estimates the parameters of a Structural Bayesian Vector Autoregression model with the method developed by Baumeister and Hamilton (2015/2017/2018).

Usage

BH_SBVAR(y, nlags, pA, pdetA = NULL, pH = NULL, pP = NULL,
  pP_sig = NULL, pR_sig = NULL, kappa1 = NULL, itr = 5000,
  burn = 0, thin = 1, acc_irf = TRUE, h1_irf = 12, ci = 0.975)

Arguments

y

(T x n) matrix containing the endogenous variables. T is the number of observations and n is the number of endogenous variables.

nlags

Integer specifying the lag order.

pA

(n x n x 8) array where n is the number of endogenous variables and each slice of the third dimension contains the prior distributions (NA - no prior, 0 - symmetric t-distribution, 1 - non-central t-distribution), sign restrictions (NA - no restriction, 1 - positive restriction, -1 - negative restriction), distribution position parameters, distribution scale parameters, distribution degrees of freedom parameters, distribution skew parameters, indication for long-run restrictions (NA - no long-run restriction, 1 - long-run restriction), and random-walk proposal scale parameters for A, respectively.

pdetA

(1 x 1 x 6) array where each slice of the third dimension contains the prior distributions (NA - no prior, 0 - symmetric t-distribution, 1 - non-central t-distribution), sign restrictions (NA - no restriction, 1 - positive restriction, -1 - negative restriction), distribution position parameters, distribution scale parameters, distribution degrees of freedom parameters, and distribution skew parameters for the determinant of A, respectively (default = NULL). NULL indicates no priors for the determinant of A.

pH

(n x n x 6) array where n is the number of endogenous variables and each slice of the third dimension contains the prior distributions (NA - no prior, 0 - symmetric t-distribution, 1 - non-central t-distribution), sign restrictions (NA - no restriction, 1 - positive restriction, -1 - negative restriction), distribution position parameters, distribution scale parameters, distribution degrees of freedom parameters, and distribution skew parameters for H, the inverse of A, respectively (default = NULL). NULL indicates no priors for the inverse of A.

pP

(k x n) matrix containing the prior position parameters for the reduced form lagged coefficient matrix Φ (default = NULL). k = n L + 1, n is the number of endogenous variables, and L is the lag length. NULL indicates no priors for Φ.

pP_sig

(k x k) matrix containing values indicating confidence in the priors for Φ (default = NULL). k = n L + 1, n is the number of endogenous variables, and L is the lag length. NULL indicates no priors for Φ.

pR_sig

(k x k x n) array containing values indicating confidence in long-run restrictions on the reduced form lagged coefficient matrix Φ (default = NULL). k = n L + 1, n is the number of endogenous variables, and L is the lag length. NULL indicates no long-run restrictions.

kappa1

(1 x n) matrix containing values indicating confidence in priors for the structural variances (default = NULL). n is the number of endogenous variables. NULL indicates no priors for structural variances.

itr

Integer specifying the total number of iterations for the algorithm (default = 5000).

burn

Integer specifying the number of draws to throw out at the beginning of the algorithm (default = 0).

thin

Integer specifying the thinning parameter (default = 1). All draws beyond burn are kept when thin = 1. Draw 1, draw 3, etc. beyond burn are kept when thin = 2.

acc_irf

Boolean indicating whether accumulated impulse responses are to be returned (default = TRUE).

h1_irf

Integer specifying the time horizon for computing impulse responses (default = 12).

ci

Numeric value used to determine the upper and lower bound of credibility intervals for the estimates to be returned (default = 0.975). A value of 0.975 will return 95% credibility intervals. A value of 0.95 will return 90% credibility intervals.

Details

Estimates the parameters of a Structural Bayesian Vector Autoregression model with the method developed in Baumeister and Hamilton (2015/2017/2018). The function returns a list containing the results.

Value

A list containing the following:

accept_rate: Acceptance rate of the algorithm.

y and x: Matrices containing the endogenous variables and their lags.

pA, pdetA, pH, pP, pP_sig, pR, pR_sig, tau1, and kappa1: Matrices and arrays containing prior information.

A_start: Matrix containing estimates of the parameters in A from the optimization routine.

A, detA, H, B, and Phi: Arrays containing estimates of the model parameters. The first, second, and third slices of the third dimension are lower, median, and upper bounds of the estimates.

HD and IRF: Arrays containing historical decompositions and impulse response functions. The first, second, and third slices of the third dimension are lower, median, and upper bounds of the estimates.

A_den, detA_den, and H_den: Lists containing the horizontal and vertical axis coordinates of posterior densities of A, det(A), and H.

Line and ACF plots of the estimates for A, det(A), and H.

Author(s)

Paul Richardson

References

Baumeister, C., & Hamilton, J.D. (2015). Sign restrictions, structural vector autoregressions, and useful prior information. Econometrica, 83(5), 1963-1999.

Baumeister, C., & Hamilton, J.D. (2017). Structural interpretation of vector autoregressions with incomplete identification: Revisiting the role of oil supply and demand shocks (No. w24167). National Bureau of Economic Research.

Baumeister, C., & Hamilton, J.D. (2018). Inference in structural vector autoregressions when the identifying assumptions are not fully believed: Re-evaluating the role of monetary policy in economic fluctuations. Journal of Monetary Economics, 100, 48-65.

See Also

Professor Christiane Baumeister's website.

Professor James D. Hamilton's website.

Examples

# Import data
library(BHSBVAR)
set.seed(123)
data(USLMData)
y <- matrix(data = c(USLMData$Wage, USLMData$Employment), ncol = 2)
colnames(y) <- c("Wage", "Employment")

# Set function arguments
nlags <- 8
itr <- 5000
burn <- 0
thin <- 1
acc_irf <- TRUE
h1_irf <- 20
ci <- 0.975

# Priors for A
pA <- array(data = NA, dim = c(2, 2, 8))
pA[, , 1] <- c(0, NA, 0, NA)
pA[, , 2] <- c(1, NA, -1, NA)
pA[, , 3] <- c(0.6, 1, -0.6, 1)
pA[, , 4] <- c(0.6, NA, 0.6, NA)
pA[, , 5] <- c(3, NA, 3, NA)
pA[, , 6] <- c(NA, NA, NA, NA)
pA[, , 7] <- c(NA, NA, 1, NA)
pA[, , 8] <- c(2.4, NA, 2.4, NA)

# Position priors for Phi
pP <- matrix(data = 0, nrow = ((nlags * ncol(pA)) + 1), ncol = ncol(pA))
pP[1:nrow(pA), 1:ncol(pA)] <-
  diag(x = 1, nrow = nrow(pA), ncol = ncol(pA))

# Confidence in the priors for Phi
x1 <- 
  matrix(data = NA, nrow = (nrow(y) - nlags), 
         ncol = (ncol(y) * nlags))
for (k in 1:nlags) {
  x1[, (ncol(y) * (k - 1) + 1):(ncol(y) * k)] <-
    y[(nlags - k + 1):(nrow(y) - k),]
}
x1 <- cbind(x1, 1)
colnames(x1) <- 
  c(paste(rep(colnames(y), nlags),
          ".L",
          sort(rep(seq(from = 1, to = nlags, by = 1), times = ncol(y)),
               decreasing = FALSE),
          sep = ""),
    "cons")
y1 <- y[(nlags + 1):nrow(y),]
ee <- matrix(data = NA, nrow = nrow(y1), ncol = ncol(y1))
for (i in 1:ncol(y1)) {
  xx <- cbind(x1[, seq(from = i, to = (ncol(x1) - 1), by = ncol(y1))], 1)
  yy <- matrix(data = y1[, i], ncol = 1)
  phi <- solve(t(xx) %*% xx, t(xx) %*% yy)
  ee[, i] <- yy - (xx %*% phi)
}
somega <- (t(ee) %*% ee) / nrow(ee)
lambda0 <- 0.2
lambda1 <- 1
lambda3 <- 100
v1 <- matrix(data = (1:nlags), nrow = nlags, ncol = 1)
v1 <- v1^((-2) * lambda1)
v2 <- matrix(data = diag(solve(diag(diag(somega)))), ncol = 1)
v3 <- kronecker(v1, v2)
v3 <- (lambda0^2) * rbind(v3, (lambda3^2))
v3 <- 1 / v3
pP_sig <- diag(x = 1, nrow = nrow(v3), ncol = nrow(v3))
diag(pP_sig) <- v3

# Confidence in long-run restriction priors
pR_sig <-
  array(data = 0,
        dim = c(((nlags * ncol(y)) + 1),
                ((nlags * ncol(y)) + 1),
                ncol(y)))
Ri <-
  cbind(kronecker(matrix(data = 1, nrow = 1, ncol = nlags),
                  matrix(data = c(1, 0), nrow = 1)),
        0)
pR_sig[, , 2] <- (t(Ri) %*% Ri) / 0.1

# Confidence in priors for D
kappa1 <- matrix(data = 2, nrow = 1, ncol = ncol(y))

# Set graphical parameters
par(cex.axis = 0.8, cex.main = 1, font.main = 1, family = "serif",
    mfrow = c(2, 2), mar = c(2, 2.2, 2, 1), las = 1)

# Estimate the parameters of the model
results1 <- 
  BH_SBVAR(y = y, nlags = nlags, pA = pA, pP = pP, pP_sig = pP_sig,
           pR_sig = pR_sig, kappa1 = kappa1, itr = itr, burn = burn,
           thin = thin, acc_irf = acc_irf,
           h1_irf = h1_irf, ci = ci)

[Package BHSBVAR version 1.0.4 Index]