Title: | Bayesian Analysis of a FAVAR Model |
Version: | 0.1.3 |
Description: | Estimate a FAVAR model by a Bayesian method, based on Bernanke et al. (2005) <doi:10.1162/0033553053327452>. |
License: | GPL-3 |
Encoding: | UTF-8 |
LazyData: | true |
RoxygenNote: | 7.1.2 |
Imports: | ggplot2, bvartools, foreach, magrittr, MCMCpack, coda, dplyr, doParallel, Matrix |
Depends: | R (≥ 3.5.0) |
Suggests: | testthat, vars, patchwork |
NeedsCompilation: | no |
Packaged: | 2022-05-26 02:32:20 UTC; yangnay |
Author: | Pu Chen |
Maintainer: | Pu Chen <shengnehs@qq.com> |
Repository: | CRAN |
Date/Publication: | 2022-05-26 13:30:12 UTC |
Separate R
From X
Description
X
may include some information related with R
. The function
extract factors from X
which is not related with R
by iteration
based on Boivin et al. (2009).
Usage
BGM(X, R, K = 2, tolerance = 0.001, nmax = 100)
Arguments
X |
a large matrix from which principle components are extracted. |
R |
a numeric vector which we are interesting in, for example interest rates. |
K |
the number of extracted principle components. |
tolerance |
the difference between factors when iterating. |
nmax |
the max iterations, see details. |
Details
The algorithm is as follows:
Extract the first K principal components noted
F_t^{(0)}
fromX
.Regress
X
onF_t^{(0)}
andR_t
, and get regression coefficients\beta_R^{(0)}
ofR_t
.compute
X_0^{(0)} = X_t- R_t \beta_R
.Extract the first K principal components noted
F_t^{(1)}
fromX_t^{(0)}
.repeat step 2 - step 4 until precision you want.
Value
the first K principle components, i.e. F_t^{(n)}
, not containing the information R
.
References
Boivin, J., M.P. Giannoni and I. Mihov, Sticky Prices and Monetary Policy: Evidence from Disaggregated US Data. American Economic Review, 2009. 99(1): p. 350-384.
Examples
data('regdata')
BGM(X = regdata[,1:115],R = regdata[,ncol(regdata)], K = 2)
Bayesian Estimation of VAR
Description
Estimate a VAR base on Bayesian method
Usage
BVAR(
data,
plag = 2,
iter = 10000,
burnin = 5000,
prior = list(b0 = 0, vb0 = 0, nu0 = 0, s0 = 0, mn = list(kappa0 = NULL, kappa1 =
NULL)),
ncores = 1
)
Arguments
data |
a |
plag |
a lag order in VAR |
iter |
iterations of the MCMC |
burnin |
the first random draws discarded in MCMC |
prior |
a list whose elements is named. |
ncores |
the number of CPU cores in parallel computations. |
Value
a list:
-
A
, the samples drawn for the coefficients of VAR -
sigma
, the samples drawn for the variance-covariance of the coefficients of VAR -
sumrlt
, a list includevarcoef, varse, q25, q975
which are means, standard errors, 0.25 quantiles and 0.975 quantiles ofA
.
FAVAR
Description
Estimate a FAVAR model by Bernanke et al. (2005).
Usage
FAVAR(
Y,
X,
fctmethod = "BBE",
slowcode,
K = 2,
plag = 2,
factorprior = list(b0 = 0, vb0 = NULL, c0 = 0.01, d0 = 0.01),
varprior = list(b0 = 0, vb0 = 0, nu0 = 0, s0 = 0, mn = list(kappa0 = NULL, kappa1 =
NULL)),
nburn = 5000,
nrep = 15000,
standardize = TRUE,
ncores = 1
)
Arguments
Y |
a matrix. Observable economic variables assumed to drive the dynamics of the economy. |
X |
a matrix. A large macro data set. The meanings of |
fctmethod |
|
slowcode |
a logical vector that identifies which columns of X are slow
moving. Only when |
K |
the number of factors extracted from |
plag |
the lag order in the VAR equation. |
factorprior |
A list whose elements is named sets the prior for the factor equation.
|
varprior |
A list whose elements is named sets the prior of VAR equations.
|
nburn |
the number of the first random draws discarded in MCMC. |
nrep |
the number of the saved draws in MCMC. |
standardize |
Whether standardize? We suggest it does, because in the function VAR equation and factor equation both don't include intercept. |
ncores |
the number of CPU cores in parallel computations. |
Details
Here we simply state the prior distribution setting of VAR. VAR could be written by (Koop and Korobilis, 2010),
y_t= Z_t\beta + \varepsilon_t, \varepsilon_t\sim N(0,\Sigma)
You can write down it according to data matrix,
Y= Z\beta + \varepsilon, \varepsilon\sim N(0,I\otimes \Sigma)
where Y = (y_1,y_2,\cdots, y_T)',Z=(Z_,Z_2,\cdots,Z_T)',\varepsilon=(\varepsilon_1,\varepsilon_2,\cdots,\varepsilon_T)
. We assume that prior distribution of \beta
and \Sigma^{-1}
is,
\beta\sim N(b0,V_{b0}), \Sigma^{-1}\sim W(S_0^{-1},\nu_0)
Or you can set the Minnesota prior for variance of \beta
, for example,
for the m
th equation in y_t= Z_t\beta + \varepsilon_t
,
-
\frac{\kappa_0}{l^2},l
is lag order, for won lags of endogenous variables -
\frac{\kappa_0\kappa_1}{l^2}\frac{\sigma_m^2}{\sigma_n^2}, m\ne n
,for lags of other endogenous variables in the mth equation, where\sigma_m
is the standard error for residuals of the mth equation.
Based on the priors, you could get corresponding post distribution for the parameters by Markov Chain Monte Carlo (MCMC) algorithm. More details, see Koop and Korobilis (2010).
Value
An object of class "favar" containing the following components:
- varrlt
A list. The estimation results of VAR including estimated coefficients
A
, their variance-covariance matrixsigma
, and other statistical summary forA
.- Lamb
A array with 3 dimension. and
Lamb[i,,]
is factor loading matrix for factor equations in thei
th sample of MCMC.- factorx
Extracted factors from
X
.
- model_info
Model information containing
nburn,nrep,X,Y
andp
, the number of endogenous variables in the VAR.
References
Bernanke, B.S., J. Boivin and P. Eliasz, Measuring the Effects of Monetary Policy: A Factor-Augmented Vector Autoregressive (FAVAR) Approach. Quarterly Journal of Economics, 2005. 120(1): p. 387-422.
Boivin, J., M.P. Giannoni and I. Mihov, Sticky Prices and Monetary Policy: Evidence from Disaggregated US Data. American Economic Review, 2009. 99(1): p. 350-384.
Koop, G. and D. Korobilis, Bayesian Multivariate Time Series Methods for Empirical Macroeconomics. 2010: Now Publishers.
See Also
summary.favar
, coef.favar
and irf
. All of them are
S3 methods of the "favar" object, and
summary.favar
that prints the estimation results of a FAVAR model, and
coef.favar
that extracts the coefficients in a FAVAR model, and
irf
that computes the impulse response in a FAVAR model.
Examples
# data('regdata')
# fit <- FAVAR(Y = regdata[,c("Inflation","Unemployment","Fed_funds")],
# X = regdata[,1:115], slowcode = slowcode,fctmethod = 'BBE',
# factorprior = list(b0 = 0, vb0 = NULL, c0 = 0.01, d0 = 0.01),
# varprior = list(b0 = 0,vb0 = 10, nu0 = 0, s0 = 0),
# nrep = 15000, nburn = 5000, K = 2, plag = 2)
##---- print FAVAR estimation results------
# summary(fit,xvar = c(3,5))
##---- or extract coefficients------
# coef(fit)
##---- plot impulse response figure------
# library(patchwork)
# dt_irf <- irf(fit,resvar = c(2,9,10))
Generalized Impulse Response Function (GIRF)
Description
Compute GIRF of linear VAR by Koop et al. (1996)
Usage
GI(ma, sig_u, imp_var = 1, unit = "sd")
Arguments
ma |
a list, it's MA coefficients from |
sig_u |
a covariance matrix from VAR models. Note the order of variables in |
imp_var |
a numerical scalar which specifies the impulse variable. |
unit |
|
Value
a data frame, its row is variables and its column is horizons.
References
Koop, G., M.H. Pesaran and S. Potter, Impulse Response Analysis in Nonlinear Multivariate Models. Journal of Econometrics, 1996. 74: p. 119-147.
ar2ma
Description
Convert auto regression (AR) coefficients to moving average (MA) coefficients
Usage
ar2ma(ar, p, n = 11, CharValue = TRUE)
Arguments
ar |
AR coefficients matrix which is k x kp dimension, k is numbers of variables, and no constant. |
p |
lags orders of AR. |
n |
lags orders of MA generated. |
CharValue |
logical value, whether compute character value. |
Details
the formula is,
A_s = F_1 * A_{s-1} + F_2 * A_{s-2} + ... + F_p * A_{s-p}
where A is MA coefficients, F is AR coefficients.
Value
a matrix which is MA coefficients.
Examples
require(vars)
data(Canada)
ar <- Bcoef(VAR(Canada, p = 2, type = "none"))
ar
ar2ma(ar, p = 2)
Extract Coefficients of a FAVAR Model
Description
Extract Coefficients of a FAVAR Model
Usage
## S3 method for class 'favar'
coef(object, ...)
Arguments
object |
a class 'favar'. |
... |
additional arguments affecting the coefficients produced. |
Value
A list
- fct_loading
Factor loading matrix in a factor equation.
- varcoef
regression coefficients in VAR equations.
Impulse Response Function for FAVAR
Description
Based on a shock to one standard deviation, compute the IRF.
Usage
irf(
fit,
irftype = "orth",
tcode = "level",
resvar = 1,
impvar = NULL,
nhor = 10,
ci = 0.8,
showplot = TRUE
)
Arguments
fit |
a "favar" object. |
irftype |
|
tcode |
a scalar |
resvar |
It's column indexes in |
impvar |
Specify a impulse variable. A numeric scalar which is position of variables in VAR equation.
If it's |
nhor |
IRF horizon, default is |
ci |
confidence interval, default is 0.8. |
showplot |
whether show figure. |
Value
A list containing 2 elements. The first element is a object from ggplot2::ggplot
, the
second element is raw data for IRF.
Examples
# see FAVAR function
Compute Impulse Response for Every Sample of MCMC
Description
Compute Impulse Response for Every Sample of MCMC
Usage
irf_single(i, varrlt, Lamb, Ynum, type = "orth", impvar = 1, nhor)
Arguments
i |
the |
varrlt |
estimation results for VAR equations, and it's got by |
Lamb |
a array with 3 dimension. and |
Ynum |
the |
type |
|
impvar |
a numeric scalar which is position of variables in VAR equation.
If it's |
nhor |
IRF horizon, default is |
Value
IRF matrix, the dimension is ncol(Xmatrix) + ncol(Y)
xnhor
.
Sample Data
Description
A matrix containing a large macro data set regdata
.
Usage
regdata
Format
A matrix regdata
with 190 rows and 118 variables,
- X
X
is the first column through the 115th column inregdata
, a large macro data set- Y
Y
is the 116th column through the 118th column inregdata
, driving the dynamics of the economy
Source
https://sites.google.com/site/garykoop/home/computer-code-2
Slow-moving or Not
Description
A logic vector, record the variables that are the 1st column through the 115th column
in regdata
is slow-moving or not.
Usage
slowcode
Format
An object of class logical
of length 115.
Source
https://sites.google.com/site/garykoop/home/computer-code-2
Print Results of FAVAR
Description
S3 method for class "favar".
Usage
## S3 method for class 'favar'
summary(object, xvar = NULL, ...)
Arguments
object |
a "favar" object from function |
xvar |
a numeric vector, which variables in |
... |
additional arguments affecting the summary produced. |
Value
No return value, called for side effects
Examples
# see FAVAR function
Transformation Form for X
Description
Record the transformation form for the 1st column through the 115th column
in regdata
, and 'level' is Level, 'ln' is logarithm, 'Dln' is first difference of logarithm.
Usage
tcode
Format
An object of class character
of length 118.