BH_SBVAR | R Documentation |
Estimates the parameters of a Structural Bayesian Vector Autoregression model with the method developed by Baumeister and Hamilton (2015/2017/2018).
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, cri = 0.95 )
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, 2 - inverted beta distribution, 3 - beta distribution), sign restrictions (NA - no restriction, 1 - positive restriction, -1 - negative restriction), distribution position parameters, distribution scale or shape1 parameters for t-distributions or inverted beta and beta distributions, distribution degrees of freedom or shape2 parameters for t-distributions or inverted beta and beta distributions, distribution skew parameters for t-distributions, 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, 2 - inverted beta distribution, 3 - beta distribution), sign restrictions (NA - no restriction, 1 - positive restriction, -1 - negative restriction), distribution position parameters, distribution scale or shape1 parameters for t-distributions or inverted beta and beta distributions, distribution degrees of freedom or shape2 parameters for t-distributions or inverted beta and beta distributions, and distribution skew parameters for t-distributions 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, 2 - inverted beta distribution, 3 - beta distribution), sign restrictions (NA - no restriction, 1 - positive restriction, -1 - negative restriction), distribution position parameters, distribution scale or shape1 parameters for t-distributions or inverted beta and beta distributions, distribution degrees of freedom or shape2 parameters for t-distributions or inverted beta and beta distributions, and distribution skew parameters for t-distributions 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 lagged structural coefficient matrix B (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. |
cri |
credibility intervals for the estimates to be returned (default = 0.95). A value of 0.95 will return 95% credibility intervals. A value of 0.90 will return 90% credibility intervals. |
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.
A list containing the following:
accept_rate: Acceptance rate of the algorithm.
y and x: Matrices containing the endogenous variables and their lags.
nlags: Numeric value indicating the number of lags included in the model.
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, Phi, and D: 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.
A_den, detA_den, and H_den: Lists containing the horizontal and vertical axis coordinates of posterior densities of A, det(A), and H.
A_chain, B_chain, D_chain, detA_chain, H_chain: Arrays containing the raw results for A, B, D, detA, H.
Line and ACF plots of the estimates for A, det(A), and H.
Paul Richardson
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.
Dr. Christiane Baumeister's website https://sites.google.com/site/cjsbaumeister/.
Dr. James D. Hamilton's website https://econweb.ucsd.edu/~jhamilton/.
# Import data library(BHSBVAR) set.seed(123) data(USLMData) y0 <- matrix(data = c(USLMData$Wage, USLMData$Employment), ncol = 2) y <- y0 - (matrix(data = 1, nrow = nrow(y0), ncol = ncol(y0)) %*% diag(x = colMeans(x = y0, na.rm = FALSE, dims = 1))) colnames(y) <- c("Wage", "Employment") # Set function arguments nlags <- 8 itr <- 5000 burn <- 0 thin <- 1 cri <- 0.95 # 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, NA, 2, 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, cri = cri)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.