GFEVD {sstvars} | R Documentation |
Estimate generalized forecast error variance decomposition for structural STVAR models.
Description
GFEVD
estimates generalized forecast error variance decomposition
for structural STVAR models.
Usage
GFEVD(
stvar,
shock_size = 1,
N = 30,
initval_type = c("data", "random", "fixed"),
use_data_shocks = FALSE,
R1 = 250,
R2 = 250,
init_regime = 1,
init_values = NULL,
which_cumulative = numeric(0),
ncores = 2,
burn_in = 1000,
exo_weights = NULL,
seeds = NULL,
use_parallel = TRUE
)
## S3 method for class 'gfevd'
plot(x, ..., data_shock_pars = NULL)
## S3 method for class 'gfevd'
print(x, ..., digits = 2, N_to_print)
Arguments
stvar |
an object of class |
shock_size |
What sign and size should be used for all shocks? By the normalization, the conditional covariance matrix of the structural error is an identity matrix. |
N |
a positive integer specifying the horizon how far ahead should the GFEVD be calculated. |
initval_type |
What type initial values are used for estimating the GIRFs that the GFEVD is based on?
|
use_data_shocks |
|
R1 |
the number of repetitions used to estimate GIRF for each initial value. |
R2 |
the number of initial values to be drawn/used if |
init_regime |
an integer in |
init_values |
a size |
which_cumulative |
a numeric vector with values in |
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 when |
exo_weights |
if |
seeds |
a numeric vector containing the random number generator seed for estimation of each GIRF. Should have the length...
Set to |
use_parallel |
employ parallel computing? If |
x |
object of class |
... |
graphical parameters passed to the |
data_shock_pars |
if |
digits |
the number of decimals to print |
N_to_print |
an integer specifying the horizon how far to print the estimates. The default is that all the values are printed. |
Details
The GFEVD is a forecast error variance decomposition calculated with the generalized impulse response function (GIRF). See Lanne and Nyberg (2016) for details.
If use_data_shocks == TRUE
, the GIRF is estimated for a shock that has the sign and size of the
corresponding structural shock recovered from the fitted model. This is done for every possible length p
history
in the data. The GFEVD is then calculated as the average of the GFEVDs obtained from the GIRFs estimated for
the data shocks. The plot and print methods can be used as usual for this GFEVD. However, this feature also
obtain the contribution of each shock to the variance of the forecast errors at various horizons in specific
historical points of time. This can be done by using the plot method with the argument data_shock_pars
.
Note that the arguments shock_size
, initval_type
, and init_regime
are ignored if
use_data_shocks == TRUE
.
Value
Returns and object of class 'gfevd' containing the GFEVD for all the variables and to
the transition weights. Note that the decomposition does not exist at horizon zero for transition weights
because the related GIRFs are always zero at impact.
If use_data_shocks=TRUE
, also contains the GFEVDs for each length p
history in the data as
4D array with dimensions [horizon, variable, shock, time]
.
Functions
-
plot(gfevd)
: plot method -
print(gfevd)
: print method
References
Lanne M. and Nyberg H. 2016. Generalized Forecast Error Variance Decomposition for Linear and Nonlineae Multivariate Models. Oxford Bulletin of Economics and Statistics, 78, 4, 595-603.
See Also
Examples
# These are long-running examples that use parallel computing.
# It takes approximately 30 seconds to run all the below examples.
# Note that larger R1 and R2 should be used for more reliable results;
# small R1 and R2 are used here to shorten the estimation time.
# Recursively identifed 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")
# GFEVD for one-standard-error positive structural shocks, N=30 steps ahead,
# with fix initial values assuming all possible histories in the data.
gfevd1 <- GFEVD(mod32logt, shock_size=1, N=30, initval_type="data", R1=10,
seeds=1:(nrow(mod32logt$data)-2))
print(gfevd1) # Print the results
plot(gfevd1) # Plot the GFEVD
# GFEVD for one-standard-error positive structural shocks, N=30 steps ahead,
# with fix initial values that are the last p observations of the data.
gfevd2 <- GFEVD(mod32logt, shock_size=1, N=30, initval_type="fixed", R1=100, R2=1,
init_values=array(mod32logt$data[(nrow(mod32logt$data) - 2):nrow(mod32logt$data),],
dim=c(3, 2, 1)), seeds=1)
plot(gfevd2) # Plot the GFEVD
# GFEVD for two-standard-error negative structural shocks, N=50 steps ahead
# with the inital values drawn from the first regime. The responses of both
# variables are accumulated.
gfevd3 <- GFEVD(mod32logt, shock_size=-2, N=50, initval_type="random",
R1=50, R2=50, init_regime=1)
plot(gfevd3) # Plot the GFEVD
# GFEVD calculated for each lenght p history in the data in such a way that
# for each history, the structural shock recoved from the fitted model is
# used.
gfevd4 <- GFEVD(mod32logt, N=20, use_data_shocks=TRUE, R1=10)
plot(gfevd4) # Usual plot method
# Plot the contribution of the first to the variance of the forecast errors at
# the historial points of time using the structural shocks recovered from the data:
plot(gfevd4, data_shock_pars=c(1, 0)) # Contribution at impact
plot(gfevd4, data_shock_pars=c(1, 2)) # Contribution after two periods
plot(gfevd4, data_shock_pars=c(1, 4)) # Contribution after four periods