simulate.stvar | R Documentation |
simulate.stvar
is a simulate method for class 'stvar' objects.
## S3 method for class 'stvar'
simulate(
object,
nsim = 1,
seed = NULL,
...,
init_values = NULL,
init_regime,
ntimes = 1,
use_stat_for_Gaus = FALSE,
burn_in = 1000,
exo_weights = NULL,
drop = TRUE,
girf_pars = NULL
)
object |
an object of class |
nsim |
number of observations to be simulated. |
seed |
set seed for the random number generator? |
... |
currently not in use. |
init_values |
a size |
init_regime |
an integer in |
ntimes |
how many sets of simulations should be performed? |
use_stat_for_Gaus |
if |
burn_in |
Burn-in period for simulating initial values from a regime when |
exo_weights |
if |
drop |
if |
girf_pars |
This argument is used internally in the estimation of generalized impulse response functions
(see |
When using init_regime
to simulate the initial values from a given regime, we employ the following simulation
procedure to obtain the initial values (unless use_stat_for_Gaus=TRUE
and Gaussian model is considered).
First, we set the initial values to the unconditional mean of the specified regime. Then,
we simulate a large number observations from that regime as specified in the argument burn_in
. Then, we simulate
p + 100
observations more after the burn in period, and for the 100
observations calculate the transition
weights for them and take the consecutive p
observations that yield the highest transition weight for the given regime.
For models with exogenous transition weights, takes just the last p
observations after the burn-in period.
The argument ntimes
is intended for forecasting, which is used by the predict method (see ?predict.stvar
).
Returns a list containing the simulation results. If drop==TRUE
and ntimes==1
(default),
contains the following entries:
sample |
a size ( |
transition weights: |
a size ( |
Otherwise, returns a list with the following entries:
$sample |
a size ( |
$transition_weights |
a size ( |
Anderson H., Vahid F. 1998. Testing multiple equation systems for common nonlinear components. Journal of Econometrics, 84:1, 1-36.
Hansen B.E. 1994. Autoregressive Conditional Density estimation. Journal of Econometrics, 35:3, 705-730.
Kheifets I.L., Saikkonen P.J. 2020. Stationarity and ergodicity of Vector STAR models. International Economic Review, 35:3, 407-414.
Lanne M., Virolainen S. 2025. A Gaussian smooth transition vector autoregressive model: An application to the macroeconomic effects of severe weather shocks. Unpublished working paper, available as arXiv:2403.14216.
Lütkepohl H. 2005. New Introduction to Multiple Time Series Analysis, Springer.
McElroy T. 2017. Computation of vector ARMA autocovariances. Statistics and Probability Letters, 124, 92-96.
Kilian L., Lütkepohl H. 20017. Structural Vector Autoregressive Analysis. 1st edition. Cambridge University Press, Cambridge.
Tsay R. 1998. Testing and Modeling Multivariate Threshold Models. Journal of the American Statistical Association, 93:443, 1188-1202.
Virolainen S. 2025. Identification by non-Gaussianity in structural threshold and smooth transition vector autoregressive models. Unpublished working paper, available as arXiv:2404.19707.
predict.stvar
,GIRF
, GFEVD
, fitSTVAR
,
fitSSTVAR
STVAR
# Gaussian STVAR(p=2, M=2) model with weighted relative stationary densities
# of the regimes as the transition weight function:
theta_222relg <- c(0.356914, 0.107436, 0.356386, 0.08633, 0.13996, 0.035172,
-0.164575, 0.386816, 0.451675, 0.013086, 0.227882, 0.336084, 0.239257, 0.024173,
-0.021209, 0.707502, 0.063322, 0.027287, 0.009182, 0.197066, 0.205831, 0.005157,
0.025877, 1.092094, -0.009327, 0.116449, 0.592446)
mod222relg <- STVAR(data=gdpdef, p=2, M=2, d=2, params=theta_222relg,
weight_function="relative_dens")
# Simulate T=200 observations using given initial values:
init_vals <- matrix(c(0.5, 1.0, 0.5, 1), nrow=2)
sim1 <- simulate(mod222relg, nsim=200, seed=1, init_values=init_vals)
plot.ts(sim1$sample) # Sample
plot.ts(sim1$transition_weights) # Transition weights
# Simulate T=100 observations, with initial values drawn from the stationary
# distribution of the 1st regime:
sim2 <- simulate(mod222relg, nsim=200, seed=1, init_regime=1)
plot.ts(sim2$sample) # Sample
plot.ts(sim2$transition_weights) # Transition weights
# Logistic Student's t STVAR with p=1, M=2, and the first lag of the second variable
# as the switching variable.
params12 <- c(0.62906848, 0.14245295, 2.41245785, 0.66719269, 0.3534745, 0.06041779, -0.34909745,
0.61783824, 0.125769, -0.04094521, -0.99122586, 0.63805416, 0.371575, 0.00314754, 0.03440824,
1.29072533, -0.06067807, 0.18737385, 1.21813844, 5.00884263, 7.70111672)
fit12 <- STVAR(data=gdpdef, p=1, M=2, params=params12, weight_function="logistic",
weightfun_pars=c(2, 1), cond_dist="Student")
# Simulate T=100 observations with initial values drawn from the second regime.
# Since the stationary distribution of the Student's regime is not known, we
# use a simulation procedure that starts from the unconditional mean of the regime,
# then simulates a number of observations from the regime for a "burn-in" period,
# and finally takes the last p observations generated from the regime as the initial
# values for the simulation from the STVAR model:
sim3 <- simulate(fit12, nsim=100, init_regime=1, burn_in=1000)
plot.ts(sim3$sample) # Sample
plot.ts(sim3$transition_weights) # Transition weights
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.