bvs

0th

Percentile

Bayesian Variable Selection

bvs employs Bayesian variable selection as proposed by Korobilis (2013) to produce a vector of inclusion parameters for the coefficient matrix of a VAR model.

Usage
bvs(y, z, a, lambda, sigma_i, prob_prior, include = NULL)
Arguments
y

a \(K \times T\) matrix of the endogenous variables.

z

a \(KT \times M\) matrix of explanatory variables.

a

an M-dimensional vector of parameter draws. If time varying parameters are used, an \(M \times T\) coefficient matrix can be provided.

lambda

an \(M \times M\) inclusion matrix that should be updated.

sigma_i

the inverse variance-covariance matrix. If the variance-covariance matrix is time varying, a \(KT \times K\) matrix can be provided.

prob_prior

an M-dimensional vector of prior inclusion probabilities.

include

an integer vector specifying the positions of variables, which should be included in the BVS algorithm. If NULL (default), BVS will be applied to all variables.

Details

The function employs Bayesian variable selection as proposed by Korobilis (2013) to produce a vector of inclusion parameters, which are the diagonal elements of the inclusion matrix \(\Lambda\) for the VAR model $$y_t = Z_t \Lambda a_t + u_t,$$ where \(u_t \sim N(0, \Sigma_{t})\). \(y_t\) is a K-dimensional vector of endogenous variables and \(Z_t = x_t^{\prime} \otimes I_K\) is a \(K \times M\) matrix of regressors with \(x_t\) as a vector of regressors.

Value

A matrix of inclusion parameters on its diagonal.

References

Korobilis, D. (2013). VAR forecasting using Bayesian variable selection. Journal of Applied Econometrics, 28(2), 204--230. https://doi.org/10.1002/jae.1271

Aliases
  • bvs
Examples
# NOT RUN {
# Prepare data
data("e1")
data <- diff(log(e1))
temp <- gen_var(data, p = 2, deterministic = "const")
y <- temp$Y
x <- temp$Z
z <- kronecker(t(x), diag(1, nrow(y)))
t <- ncol(y)
m <- nrow(y) * nrow(x)

# Priors
a_mu_prior <- matrix(0, m)
a_v_i_prior <- diag(0.1, m)

# Prior for inclusion parameter
prob_prior <- matrix(0.5, m)

# Initial value of Sigma
sigma <- tcrossprod(y) / t
sigma_i <- solve(sigma)

lambda <- diag(1, m)

z_bvs <- z %*% lambda

a <- post_normal_sur(y = y, z = z_bvs, sigma_i = sigma_i,
                     a_prior = a_mu_prior, v_i_prior = a_v_i_prior)

lambda <- bvs(y = y, z = z, a = a, lambda = lambda,
              sigma_i = sigma_i, prob_prior = prob_prior)

# }
Documentation reproduced from package bvartools, version 0.0.1, License: GPL (>= 2)

Community examples

Looks like there are no examples yet.