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.
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 datalibrary(BGVAR)data(testdata)# US monetary policy shockmodel.eer<-bgvar(Data=testdata, W=W.test, draws=50, burnin=50, plag=1, prior="SSVS", eigen=TRUE)# generalized impulse responsesshockinfo<-get_shockinfo("girf")shockinfo$shock<-"US.stir"; shockinfo$scale<--100irf.girf.us.mp<-irf(model.eer, n.ahead=24, shockinfo=shockinfo)# cholesky identificationshockinfo<-get_shockinfo("chol")shockinfo$shock<-"US.stir"; shockinfo$scale<--100irf.chol.us.mp<-irf(model.eer, n.ahead=24, shockinfo=shockinfo)# sign restrictionsshockinfo <- 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 restrictionsshockinfo <- 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 restrictionsshockinfo <- 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