rotation.matrix: If NULL and the x has been fitted via sign restrictions, the rotation matrix is used that minimizes the distance to the median impulse responses at the posterior median.
var.slct: character vector that contains the variables for which forecast error variance decomposition should be performed. If NULL the FEVD is computed for the whole system, which is very time consuming.
verbose: If set to FALSE it suppresses printing messages to the console.
Returns
Returns a list with two elements
FEVD: an array of size (K times horizon times N), where K are all variables in the system, horizon is the specified impulse response horizon and N is the size of the decomposed structural variables (if var.slct=NULL then K=N).
xglobal: used data of the model.
Details
Since the calculations are very time consuming, the FEVDs are based on the posterior median only (as opposed to calculating FEVDs for each MCMC sweep). In case the underlying shock has been identified via sign restrictions, the rotation matrix corresponds to the one that fulfills the sign restrictions at the posterior median of the estimated coefficients. More precisely, the algorithm searches for 50 rotation matrices that fulfill the sign restrictions at the posterior median of the coefficients and then singles out the rotation matrix that minimizes the distance to the median of the impulse responses as suggested in Fry and Pagan (2011).
Examples
set.seed(123)library(BGVAR)data(testdata)model.eer<-bgvar(Data=testdata,W=W.test,prior="MN", draws=50,burnin=50,plag=1,eigen=TRUE)# US monetary policy shockshockinfo <- get_shockinfo("chol")shockinfo$shock <-"US.stir"; shockinfo$scale <--100irf.chol.us.mp<-irf(model.eer,n.ahead=48,shockinfo=shockinfo)# calculates FEVD for variables US.Dp and EA.yfevd.us.mp=fevd(irf.chol.us.mp,var.slct=c("US.Dp","EA.y"))# US monetary policy shock with sign restrictionsshockinfo <- get_shockinfo("sign")shockinfo <- add_shockinfo(shockinfo, shock="US.stir", restriction=c("US.y","US.Dp"), sign=c("<","<"), horizon=c(1,1),1,100)irf.sign.us.mp<-irf(model.eer,n.ahead=24,shockinfo=shockinfo)# calculates FEVD for variables US.Dp and EA.yfevd.us.mp=fevd(irf.sign.us.mp,var.slct=c("US.Dp","EA.y"))
See Also
bgvar, irf
Author(s)
Maximilian Boeck, Martin Feldkircher, Florian Huber