View source: R/counterFactuals.R
cfact_girf | R Documentation |
cfact_girf
simulates counterfactual generalized impulse response functions for structural STVAR models.
cfact_girf(
stvar,
which_shocks,
shock_size = 1,
N = 30,
R1 = 200,
R2 = 250,
init_regime = 1,
init_values = NULL,
which_cumulative = numeric(0),
scale = NULL,
scale_type = c("instant", "peak"),
scale_horizon = N,
ci = c(0.95, 0.8),
use_data_shocks = FALSE,
data_girf_pars = c(0, 0.75, 0, 0, 1.5),
ncores = 2,
burn_in = 1000,
exo_weights = NULL,
seeds = NULL,
use_parallel = TRUE,
cfact_type = c("fixed_path", "muted_response"),
policy_var = 1,
mute_var = NULL,
cfact_start = 1,
cfact_end = 1,
cfact_path = NULL
)
## S3 method for class 'cfactgirf'
plot(x, ...)
## S3 method for class 'cfactgirf'
print(x, ..., digits = 3)
stvar |
an object of class |
which_shocks |
a numeric vector of length at most |
shock_size |
a non-zero scalar value specifying the common size for all scalar components of the structural shock. Note that the conditional covariance matrix of the structural shock is normalized to an identity matrix and that the (generalized) impulse responses may not be symmetric with respect to the sign and size of the shock. |
N |
a positive integer specifying the horizon how far ahead should the generalized impulse responses be calculated. |
R1 |
the number of repetitions used to estimate GIRF for each initial value. |
R2 |
the number of initial values to use, i.e., to draw from |
init_regime |
an integer in |
init_values |
a size |
which_cumulative |
a numeric vector with values in |
scale |
should the GIRFs to some of the shocks be scaled so that they
correspond to a specific magnitude of instantaneous or peak response
of some specific variable (see the argument |
scale_type |
If argument |
scale_horizon |
If |
ci |
a numeric vector with elements in |
use_data_shocks |
set |
data_girf_pars |
a length five numeric vector with the following elements determining settings for
|
ncores |
the number CPU cores to be used in parallel computing. Only single core computing is supported if an initial value is specified (and the GIRF won't thus be estimated multiple times). |
burn_in |
Burn-in period for simulating initial values from a regime. |
exo_weights |
if |
seeds |
A numeric vector initializing the seeds for the random number generator for estimation of each GIRF. Should have the length of at least (extra seeds are removed from the end of the vector)...
Set |
use_parallel |
employ parallel computing? If |
cfact_type |
a character string indicating the type of counterfactual to be computed: should the path of the policy
variable be fixed to some hypothetical path ( |
policy_var |
a positive integer between |
mute_var |
a positive integer between |
cfact_start |
a positive integer between |
cfact_end |
a positive integer between |
cfact_path |
a numeric vector of length |
x |
object of class |
... |
parameters passed to |
digits |
how many significant digits to print? |
Two types of counterfactual generalized impulse response functions (GIRFs) are accommodated where in given impulse response
horizons either (1) the policy variable of interest takes some hypothetical path (cfact_type="fixed_path"
), or (2)
its responses to lagged and contemporaneous movements of some given variable are shut off (cfact_type="muted_response"
).
In both cases, the counterfactual scenarios are simulated by creating hypothetical shocks to the policy variable of interest
that yield the counterfactual outcome. This approach has the appealing feature that the counterfactual deviations from the
policy reaction function are treated as policy surprises, allowing them to propagate normally, so that the dynamics of the model
are not, per se, tampered but just the policy surprises are.
Important: This function assumes that when the policy variable of interest is the i_1
th variable, the shock
to it that is manipulated is the i_1
th shock. This should be automatically satisfied for recursively identified models,
whereas for model identified by heteroskedasticity or non-Gaussianity, the ordering of the shocks can be generally changed
without loss of generality with the function reorder_B_columns
. In Type (2) counterfactuals it is additionally assumed
that, if the variable to whose movements the policy variable should not react to is the i_2
th variable, the shock to it
is the i_2
th shock. If it is not clear whether the i_2
th shock can be interpreted as a shock to a variable
(but has a broader definition such as "a demand shock"), the Type (2) counterfactual scenario is interpreted as follows: the i_1
th
variable does not react to lagged movements of the i_2
th variable nor to the i_2
th shock.
See the seminal paper of Bernanke et al (1997) for discussing about the "Type (1)" counterfactuals and Kilian and Lewis (2011) for discussion about the "Type (2)" counterfactuals. See Kilian and Lütkepohl (2017), Section 4.5 for further discussion about counterfactuals. The literature cited about considers linear models, but it is explained in the vignette of this package how this function computes the historical counterfactuals for the STVAR models in a way that accommodates nonlinear time-varying dynamics.
Returns a class 'cfactgirf'
list with the following elements:
$girf
An object of class 'girf'
containing the counterfactual GIRFs (see ?GIRF
).
$stvar
The original STVAR model object.
$input
A list containing the arguments used to calculate the counterfactual.
Returns the input object x
invisibly.
plot(cfactgirf)
: plot method
print(cfactgirf)
: print method
Bernanke B., Gertler M., Watson M. 1997. Systematic monetary policy and the effects of oilprice shocks. Brookings Papers on Economic Activity, 1, 91—142.
Kilian L., Lewis L. 2011. Does the fed respond to oil price shocks? The Economic Journal, 121:555.
Kilian L., Lütkepohl H. 2017. Structural Vector Autoregressive Analysis. 1st edition. Cambridge University Press, Cambridge.
GIRF
, GFEVD
, linear_IRF
, hist_decomp
, cfact_hist
,
cfact_fore
, fitSSTVAR
# Recursively identified logistic Student's t STVAR(p=3, M=2) model with the first
# lag of the second variable as the switching variable:
params32logt <- c(0.5959, 0.0447, 2.6279, 0.2897, 0.2837, 0.0504, -0.2188, 0.4008,
0.3128, 0.0271, -0.1194, 0.1559, -0.0972, 0.0082, -0.1118, 0.2391, 0.164, -0.0363,
-1.073, 0.6759, 3e-04, 0.0069, 0.4271, 0.0533, -0.0498, 0.0355, -0.4686, 0.0812,
0.3368, 0.0035, 0.0325, 1.2289, -0.047, 0.1666, 1.2067, 7.2392, 11.6091)
mod32logt <- STVAR(gdpdef, p=3, M=2, params=params32logt, weight_function="logistic",
weightfun_pars=c(2, 1), cond_dist="Student", identification="recursive")
# Counterfactual GIRFs for Shock 2 with horizon N=5 (using only R1=R2=10 Monte Carlo repetitions
# to save computation time), where the first variable takes values 1, -2, and 3 in the
# horizons 1, 2, and 3, respectively:
cfact1 <- cfact_girf(mod32logt, which_shocks=2, N=5, R1=10, R2=10, init_regime=1, seeds=1:10,
cfact_type="fixed_path", policy_var=1, cfact_start=1, cfact_end=3, cfact_path=c(1, -2, 3))
cfact1 # Print the results
plot(cfact1) # Plot the counterfactual GIRF
# Counterfactual GIRFs for Shock 2 with horizon N=5 (using only R1=R2=10 Monte Carlo repetitions
# to save computation time), where the first variable does not respond to lagged movements
# of the second variable nor to the second shock in time periods from 1 to 3:
cfact2 <- cfact_girf(mod32logt, which_shocks=2, N=5, R1=10, R2=10, init_regime=1, seeds=1:20,
cfact_type="muted_response", policy_var=1, mute_var=2, cfact_start=1, cfact_end=3)
cfact2 # Print the results
plot(cfact2) # Plot the counterfactual GIRF
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.