irf function

Impulse Response Function

Impulse Response Function

This function calculates three alternative ways of dynamic responses, namely generalized impulse response functions (GIRFs) as in Pesaran and Shin (1998), orthogonalized impulse response functions using a Cholesky decomposition and finally impulse response functions given a set of user-specified sign restrictions.

irf(x, n.ahead=24, shockinfo=NULL, quantiles=NULL, expert=NULL, verbose=TRUE)

Arguments

  • x: Object of class bgvar.

  • n.ahead: Forecasting horizon.

  • shockinfo: Dataframe with additional information about the nature of shocks. Depending on the ident argument, the dataframe has to be specified differently. In order to get a dummy version for each identification scheme use get_shockinfo.

  • quantiles: Numeric vector with posterior quantiles. Default is set to compute median along with 68%/80%/90% confidence intervals.

  • expert: Expert settings, must be provided as list. Default is set to NULL.

    • MaxTries: Numeric specifying maximal number of tries for finding a rotation matrix with sign-restrictions. Attention: setting this number very large may results in very long computational times. Default is set to MaxTries=100.
    • save.store: If set to TRUE the full posterior of both, impulses responses and rotation matrices, are returned. Default is set to FALSE in order to save storage.
    • use_R: Boolean whether IRF computation should fall back on R version, otherwise Rcpp version is used.
    • applyfun: In case use_R=TRUE, this allows for user-specific apply function, which has to have the same interface than lapply. If cores=NULL then lapply is used, if set to a numeric either parallel::parLapply() is used on Windows platforms and parallel::mclapply() on non-Windows platforms.
    • cores: Numeric specifying the number of cores which should be used, also all and half is possible. By default only one core is used.
  • verbose: If set to FALSE it suppresses printing messages to the console.

Returns

Returns a list of class bgvar.irf with the following elements:

  • posterior: Four-dimensional array (K times n.ahead times number of shocks times Q) that contains Q quantiles of the posterior distribution of the impulse response functions.

  • shockinfo: Dataframe with details on identification specification.

  • rot.nr: In case identification is based on sign restrictions (i.e., ident="sign"), this provides the number of rotation matrices found for the number of posterior draws (save*save_thin).

  • struc.obj: List object that contains posterior quantitites needed when calculating historical decomposition and structural errors via hd.decomp.

     - **`A`**: Median posterior of global coefficient matrix.
     - **`Ginv`**: Median posterior of matrix `Ginv`, which describes contemporaneous relationships between countries.
     - **`S`**: Posterior median of matrix with country variance-covariance matrices on the main diagonal.
     - **`Rmed`**: Posterior rotation matrix if `ident="sign"`.
    
  • model.obj: List object that contains model-specific information, in particular

     - **`xglobal`**: Data of the model.
     - **`lags`**: Lag specification of the model.
    
  • IRF_store: Four-dimensional array (K times n.ahead times number of shock times draws) which stores the whole posterior distribution. Exists only if save.store=TRUE.

  • R_store: Three-dimensional array (K times K times draws) which stores all rotation matrices. Exists only if save.store=TRUE.

Examples

oldpar <- par(no.readonly = TRUE) # First example, a US monetary policy shock, quarterly data library(BGVAR) data(testdata) # US monetary policy shock model.eer<-bgvar(Data=testdata, W=W.test, draws=50, burnin=50, plag=1, prior="SSVS", eigen=TRUE) # generalized impulse responses shockinfo<-get_shockinfo("girf") shockinfo$shock<-"US.stir"; shockinfo$scale<--100 irf.girf.us.mp<-irf(model.eer, n.ahead=24, shockinfo=shockinfo) # cholesky identification shockinfo<-get_shockinfo("chol") shockinfo$shock<-"US.stir"; shockinfo$scale<--100 irf.chol.us.mp<-irf(model.eer, n.ahead=24, shockinfo=shockinfo) # sign restrictions shockinfo <- get_shockinfo("sign") shockinfo <- add_shockinfo(shockinfo, shock="US.stir", restriction=c("US.y","US.Dp"), sign=c("<","<"), horizon=c(1,1), scale=1, prob=1) irf.sign.us.mp<-irf(model.eer, n.ahead=24, shockinfo=shockinfo) # sign restrictions shockinfo <- get_shockinfo("sign") shockinfo <- add_shockinfo(shockinfo, shock="US.stir", restriction=c("US.y","US.Dp"), sign=c("<","<"), horizon=c(1,1), scale=1, prob=1) irf.sign.us.mp<-irf(model.eer, n.ahead=24, shockinfo=shockinfo) #' # sign restrictions with relaxed cross-country restrictions shockinfo <- get_shockinfo("sign") # restriction for other countries holds to 75\% shockinfo <- add_shockinfo(shockinfo, shock="US.stir", restriction=c("US.y","EA.y","UK.y"), sign=c("<","<","<"), horizon=1, scale=1, prob=c(1,0.75,0.75)) shockinfo <- add_shockinfo(shockinfo, shock="US.stir", restriction=c("US.Dp","EA.Dp","UK.Dp"), sign=c("<","<","<"), horizon=1, scale=1, prob=c(1,0.75,0.75)) irf.sign.us.mp<-irf(model.eer, n.ahead=20, shockinfo=shockinfo)

References

Arias, J.E., Rubio-Ramirez, J.F, and D.F. Waggoner (2018) Inference Based on SVARs Identified with Sign and Zero Restrictions: Theory and Applications. Econometrica Vol. 86(2), pp. 685-720.

D'Amico, S. and T. B. King (2017) What Does Anticipated Monetary Policy Do? Federal Reserve Bank of Chicago Working paper series, Nr. 2015-10.

Pesaran, H.M. and Y. Shin (1998) Generalized impulse response analysis in linear multivariate models. Economics Letters, Volume 58, Issue 1, p. 17-29.

See Also

bgvar, get_shockinfo, add_shockinfo

Author(s)

Maximilian Boeck, Martin Feldkircher, Florian Huber

  • Maintainer: Maximilian Boeck
  • License: GPL-3
  • Last published: 2024-09-30