simulate.gsmar {uGMAR} | R Documentation |
Simulate obsercations from GMAR, StMAR, and G-StMAR processes
Description
simulate.gsmar
simulates observations from the specified GMAR, StMAR, or G-StMAR process.
Can be utilized for forecasting future values of the process.
Usage
## S3 method for class 'gsmar'
simulate(
object,
nsim = 1,
seed = NULL,
...,
init_values = NULL,
ntimes = 1,
drop = TRUE
)
Arguments
object |
object of class |
nsim |
a positive integer specifying how many values (ahead from |
seed |
an integer that specifies the seed for the random number generator. Ignored if |
... |
currently not in use. |
init_values |
a numeric vector with length |
ntimes |
a positive integer specifying how many sets of simulations should be performed. |
drop |
if |
Details
The argument ntimes
is intended for forecasting: a GSMAR process can be forecasted by simulating its
possible future values. One can perform a large number of sets of simulations and calculate the sample quantiles from
the simulated values to obtain prediction intervals. See the forecasting example below for a hand-on demonstration.
Value
If drop==TRUE
and ntimes==1
(default): $sample
and $component
are vectors
and $mixing_weights
is a (nsim
xM
) matrix. Otherwise, returns a list with...
$sample
a size (
nsim
x
ntimes
) matrix containing the simulated values.$component
a size (
nsim
x
ntimes
) matrix containing the information from which mixture component each value was generated from.$mixing_weights
a size (
nsim
xMx
ntimes
) array containing the mixing weights corresponding to the sample: the dimension[i, , ]
is the time index, the dimension[, i, ]
indicates the regime, and the dimension[, , i]
indicates the i:th set of simulations.
References
Galbraith, R., Galbraith, J. 1974. On the inverses of some patterned matrices arising in the theory of stationary time series. Journal of Applied Probability 11, 63-71.
Kalliovirta L. (2012) Misspecification tests based on quantile residuals. The Econometrics Journal, 15, 358-393.
Kalliovirta L., Meitz M. and Saikkonen P. 2015. Gaussian Mixture Autoregressive model for univariate time series. Journal of Time Series Analysis, 36(2), 247-266.
Meitz M., Preve D., Saikkonen P. 2023. A mixture autoregressive model based on Student's t-distribution. Communications in Statistics - Theory and Methods, 52(2), 499-515.
Virolainen S. 2022. A mixture autoregressive model based on Gaussian and Student's t-distributions. Studies in Nonlinear Dynamics & Econometrics, 26(4) 559-580.
See Also
fitGSMAR
, GSMAR
, predict.gsmar
,
add_data
, cond_moments
, mixing_weights
Examples
set.seed(1)
# GMAR model:
params22 <- c(0.9, 0.4, 0.2, 0.5, 0.7, 0.5, -0.2, 0.7, 0.7)
mod22 <- GSMAR(p=2, M=2, params=params22, model="GMAR")
mysim <- simulate(mod22, nsim=500)
ts.plot(mysim$sample)
ts.plot(mysim$component)
ts.plot(mysim$mixing_weights, col=rainbow(2), lty=2)
# G-StMAR model, with initial values:
params42gs <- c(0.04, 1.34, -0.59, 0.54, -0.36, 0.01, 0.06, 1.28, -0.36,
0.2, -0.15, 0.04, 0.19, 9.75)
gstmar42 <- GSMAR(data=M10Y1Y, p=4, M=c(1, 1), params=params42gs,
model="G-StMAR")
sim42gs <- simulate(gstmar42, nsim=500, init_values=1:4)
ts.plot(sim42gs$sample)
ts.plot(sim42gs$component)
ts.plot(sim42gs$mixing_weights, col=rainbow(2), lty=2)
# FORECASTING EXAMPLE:
# GMAR model, 1000 sets of simulations with initial values from the data:
params12 <- c(1.70, 0.85, 0.30, 4.12, 0.73, 1.98, 0.63)
gmar12 <- GSMAR(data=simudata, p=1, M=2, params=params12, model="GMAR")
sim12 <- simulate(gmar12, nsim=5, init_val=gmar12$data, ntimes=1000)
apply(sim12$sample, MARGIN=1, FUN=median) # Point prediction
apply(sim12$sample, MARGIN=1, FUN=quantile, probs=c(0.025, 0.975)) # 95% pi
apply(sim12$mixing_weights, MARGIN=1:2, FUN=median) # mix.weight point pred
apply(sim12$mixing_weights, MARGIN=1:2, FUN=quantile,
probs=c(0.025, 0.975)) # mix.weight 95% prediction intervals