irf.bvar: Impulse Response Function

View source: R/irf.bvar.R

irf.bvarR Documentation

Impulse Response Function

Description

Computes the impulse response coefficients of an object of class "bvar" for n.ahead steps.

Usage

## S3 method for class 'bvar'
irf(
  x,
  impulse = NULL,
  response = NULL,
  n.ahead = 5,
  ci = 0.95,
  shock = 1,
  type = "feir",
  cumulative = FALSE,
  keep_draws = FALSE,
  period = NULL,
  ...
)

Arguments

x

an object of class "bvar", usually, a result of a call to bvar or bvec_to_bvar.

impulse

name of the impulse variable.

response

name of the response variable.

n.ahead

number of steps ahead.

ci

a numeric between 0 and 1 specifying the probability mass covered by the credible intervals. Defaults to 0.95.

shock

size of the shock.

type

type of the impulse response. Possible choices are forecast error "feir" (default), orthogonalised "oir", structural "sir", generalised "gir", and structural generalised "sgir" impulse responses.

cumulative

logical specifying whether a cumulative IRF should be calculated.

keep_draws

logical specifying whether the function should return all draws of the posterior impulse response function. Defaults to FALSE so that the median and the credible intervals of the posterior draws are returned.

period

integer. Index of the period, for which the IR should be generated. Only used for TVP or SV models. Default is NULL, so that the posterior draws of the last time period are used.

...

further arguments passed to or from other methods.

Details

The function produces different types of impulse responses for the VAR model

A_0 y_t = \sum_{i = 1}^{p} A_{i} y_{t-i} + u_t,

with u_t \sim N(0, \Sigma).

Forecast error impulse responses \Phi_i are obtained by recursions

\Phi_i = \sum_{j = 1}^{i} \Phi_{i-j} A_j, i = 1, 2,...,h

with \Phi_0 = I_K.

Orthogonalised impulse responses \Theta^o_i are calculated as \Theta^o_i = \Phi_i P, where P is the lower triangular Choleski decomposition of \Sigma.

Structural impulse responses \Theta^s_i are calculated as \Theta^s_i = \Phi_i A_0^{-1}.

(Structural) Generalised impulse responses for variable j, i.e. \Theta^g_ji are calculated as \Theta^g_{ji} = \sigma_{jj}^{-1/2} \Phi_i A_0^{-1} \Sigma e_j, where \sigma_{jj} is the variance of the j^{th} diagonal element of \Sigma and e_i is a selection vector containing one in its j^{th} element and zero otherwise. If the "bvar" object does not contain draws of A_0, it is assumed to be an identity matrix.

Value

A time-series object of class "bvarirf" and if keep_draws = TRUE a simple matrix.

References

Lütkepohl, H. (2006). New introduction to multiple time series analysis (2nd ed.). Berlin: Springer.

Pesaran, H. H., Shin, Y. (1998). Generalized impulse response analysis in linear multivariate models. Economics Letters, 58, 17-29.

Examples


# Load data
data("e1")
e1 <- diff(log(e1)) * 100

# Generate model data
model <- gen_var(e1, p = 2, deterministic = 2,
                 iterations = 100, burnin = 10)
# Chosen number of iterations and burnin should be much higher.

# Add prior specifications
model <- add_priors(model)

# Obtain posterior draws
object <- draw_posterior(model)

# Obtain IR
ir <- irf(object, impulse = "invest", response = "cons")

# Plot IR
plot(ir)



bvartools documentation built on Aug. 31, 2023, 1:09 a.m.