bvartools (version 0.0.1)

bvec: Bayesian Vector Error Correction Objects

Description

`bvec` is used to create objects of class "bvec".

Usage

bvec(data = NULL, exogen = NULL, y = NULL, w = NULL, x = NULL,
  alpha = NULL, beta = NULL, Pi = NULL, Pi_x = NULL, Pi_d = NULL,
  A0 = NULL, Gamma = NULL, Upsilon = NULL, C = NULL,
  Sigma = NULL)

Arguments

data

the original time-series object of endogenous variables.

exogen

the original time-series object of unmodelled variables.

y

a \(K \times T\) matrix of differenced endogenous variables, usually, a result of a call to gen_vec.

w

a \((K + M + N^{R}) \times T\) matrix of variables in the cointegration term, usually, a result of a call to gen_vec.

x

a \((K(p - 1) + Ms + N^{UR}) \times T\) matrix of differenced regressors of \(y\) and \(x\), and unrestricted deterministic terms, usually, a result of a call to gen_vec.

alpha

a \(Kr \times S\) matrix of MCMC coefficient draws of the loading matrix \(\alpha\).

beta

a \(((K + M + N^{R})r) \times S\) matrix of MCMC coefficient draws of cointegration matrix \(\beta\).

Pi

a \(K^2 \times S\) matrix of MCMC coefficient draws of endogenous varaibles in the cointegration matrix.

Pi_x

a \(KM \times S\) matrix of MCMC coefficient draws of unmodelled, non-deterministic variables in the cointegration matrix.

Pi_d

a \(KN^{R} \times S\) matrix of MCMC coefficient draws of restricted deterministic terms.

A0

a \(K^2 \times S\) matrix of MCMC coefficient draws of structural parameters.

Gamma

a \((p-1)K^2 \times S\) matrix of MCMC coefficient draws of differenced lagged endogenous variables.

Upsilon

an \(sMK \times S\) matrix of MCMC coefficient draws of differenced unmodelled variables.

C

an \(KN^{UR} \times S\) matrix of MCMC coefficient draws of unrestricted deterministic terms.

Sigma

a \(K^2 \times S\) matrix of variance-covariance MCMC draws.

Value

An object of class "gvec" containing the following components, if specified:

data

the original time-series object of endogenous variables.

exogen

the original time-series object of unmodelled variables.

y

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

w

a \((K + M + N^{R}) \times T\) matrix of variables in the cointegration term.

x

a \(((p - 1)K + sM + N^{UR}) \times T\) matrix of differenced regressor variables and unrestricted deterministic terms.

A0

an \(S \times K^2\) "mcmc" object of coefficient draws of structural parameters.

alpha

an \(S \times Kr\) "mcmc" object of coefficient draws of loading parameters.

beta

an \(S \times ((K + M + N^{R})r)\) "mcmc" object of coefficient draws of cointegration parameters.

Pi

an \(S \times K^2\) "mcmc" object of coefficient draws of endogenous variables in the cointegration matrix.

Pi_x

an \(S \times KM\) "mcmc" object of coefficient draws of unmodelled, non-deterministic variables in the cointegration matrix.

Pi_d

an \(S \times KN^{R}\) "mcmc" object of coefficient draws of unrestricted deterministic variables in the cointegration matrix.

Gamma

an \(S \times (p-1)K^2\) "mcmc" object of coefficient draws of differenced lagged endogenous variables.

Upsilon

an \(S \times sMK\) "mcmc" object of coefficient draws of differenced unmodelled variables.

C

an \(S \times KN^{UR}\) "mcmc" object of coefficient draws of deterministic terms.

Sigma

an \(S \times K^2\) "mcmc" object of variance-covariance draws.

specifications

a list containing information on the model specification.

Details

For the VECX model $$\Delta y_t = \Pi^{+} \begin{pmatrix} y_{t-1} \\ x_{t-1} \\ d^{R}_{t-1} \end{pmatrix} + \sum_{i = 1}^{p-1} \Gamma_i \Delta y_{t-i} + \sum_{i = 0}^{s-1} \Upsilon_i \Delta x_{t-i} + C^{UR} d^{UR}_t + A_0^{-1} u_t$$ the function collects the S draws of a Gibbs sampler (after the burn-in phase) in a standardised object, where \(\Delta y_t\) is a K-dimensional vector of differenced endogenous variables and \(A_0\) is a \(K \times K\) matrix of structural coefficients. \(\Pi^{+} = \left[ \Pi, \Pi^{x}, \Pi^{d} \right]\) is the coefficient matrix of the error correction term, where \(y_{t-1}\), \(x_{t-1}\) and \(d^{R}_{t-1}\) are the first lags of endogenous, exogenous variables in levels and restricted deterministic terms, respectively. \(\Pi\), \(\Pi^{x}\), and \(\Pi^{d}\) are the corresponding coefficient matrices, respectively. \(\Gamma_i\) is a coefficient matrix of lagged differenced endogenous variabels. \(\Delta x_t\) is an M-dimensional vector of unmodelled, non-deterministic variables and \(\Upsilon_i\) its corresponding coefficient matrix. \(d_t\) is an \(N^{UR}\)-dimensional vector of unrestricted deterministics and \(C^{UR}\) the corresponding coefficient matrix. \(u_t\) is an error term with \(u_t \sim N(0, \Sigma_u)\).

The draws of the different coefficient matrices provided in alpha, beta, Pi, Pi_x, Pi_d, A0, Gamma, Ypsilon, C and Sigma have to correspond to the same MCMC iteration.

Examples

Run this code
# NOT RUN {
data("e6")
data <- gen_vec(e6, p = 4, const = "unrestricted", season = "unrestricted")

y <- data$Y
w <- data$W
x <- data$X

# Reset random number generator for reproducibility
set.seed(1234567)

iter <- 500 # Number of iterations of the Gibbs sampler
# Chosen number of iterations should be much higher, e.g. 30000.

burnin <- 100 # Number of burn-in draws
store <- iter - burnin

r <- 1 # Set rank

t <- ncol(y) # Number of observations
k <- nrow(y) # Number of endogenous variables
k_w <- nrow(w) # Number of regressors in error correction term
k_x <- nrow(x) # Number of differenced regressors and unrestrictec deterministic terms

k_alpha <- k * r # Number of elements in alpha
k_beta <- k_w * r # Number of elements in beta
k_gamma <- k * k_x

# Set uninformative priors
a_mu_prior <- matrix(0, k_x * k) # Vector of prior parameter means
a_v_i_prior <- diag(0, k_x * k) # Inverse of the prior covariance matrix

v_i <- 0
p_tau_i <- diag(1, k_w)

u_sigma_df_prior <- r # Prior degrees of freedom
u_sigma_scale_prior <- diag(0, k) # Prior covariance matrix
u_sigma_df_post <- t + u_sigma_df_prior # Posterior degrees of freedom

# Initial values
beta <- matrix(c(1, -4), k_w, r)

u_sigma_i <- diag(.0001, k)
u_sigma <- solve(u_sigma_i)

g_i <- u_sigma_i

# Data containers
draws_alpha <- matrix(NA, k_alpha, store)
draws_beta <- matrix(NA, k_beta, store)
draws_pi <- matrix(NA, k * k_w, store)
draws_gamma <- matrix(NA, k_gamma, store)
draws_sigma <- matrix(NA, k^2, store)

# Start Gibbs sampler
for (draw in 1:iter) {
  # Draw conditional mean parameters
  temp <- post_coint_kls(y = y, beta = beta, w = w, x = x, sigma_i = u_sigma_i,
                         v_i = v_i, p_tau_i = p_tau_i, g_i = g_i,
                         gamma_mu_prior = a_mu_prior,
                         gamma_V_i_prior = a_v_i_prior)
  alpha <- temp$alpha
  beta <- temp$beta
  Pi <- temp$Pi
  gamma <- temp$Gamma
  
  # Draw variance-covariance matrix
  u <- y - Pi %*% w - matrix(gamma, k) %*% x
  u_sigma_scale_post <- solve(tcrossprod(u) +
     v_i * alpha %*% tcrossprod(crossprod(beta, p_tau_i) %*% beta, alpha))
  u_sigma_i <- matrix(rWishart(1, u_sigma_df_post, u_sigma_scale_post)[,, 1], k)
  u_sigma <- solve(u_sigma_i)
  
  # Update g_i
  g_i <- u_sigma_i
  
  # Store draws
  if (draw > burnin) {
    draws_alpha[, draw - burnin] <- alpha
    draws_beta[, draw - burnin] <- beta
    draws_pi[, draw - burnin] <- Pi
    draws_gamma[, draw - burnin] <- gamma
    draws_sigma[, draw - burnin] <- u_sigma
  }
}

# Number of non-deterministic coefficients
k_nondet <- (k_x - 4) * k

# Generate bvec object
bvec_est <- bvec(y = y, w = w, x = x,
                 Pi = draws_pi,
                 Gamma = draws_gamma[1:k_nondet,],
                 C = draws_gamma[(k_nondet + 1):nrow(draws_gamma),],
                 Sigma = draws_sigma)

# }

Run the code above in your browser using DataLab