Bootstrapped Data using Stoffer and Wall's Algorithm
MARSSinnovationsboot.Rd
Creates bootstrap data via sampling from the standardized innovations matrix. This is an internal function in the MARSS-package
and is not exported. Users should access this with MARSSboot
.
Arguments
- MLEobj
An object of class
marssMLE
. This object must have a$par
element containing MLE parameter estimates from e.g.MARSSkem()
orMARSS()
. This algorithm may not be used if there are missing datapoints in the data.- nboot
Number of bootstraps to perform.
- minIndx
Number of innovations to skip. Stoffer & Wall suggest not sampling from innovations 1-3.
Details
Stoffer and Wall (1991) present an algorithm for generating CIs via a non-parametric bootstrap for state-space models. The basic idea is that the Kalman filter can be used to generate estimates of the residuals of the model fit. These residuals are then standardized and resampled and used to generate bootstrapped data using the MARSS model and its maximum-likelihood parameter estimates. One of the limitations of the Stoffer and Wall algorithm is that it cannot be used when there are missing data, unless all data at time \(t\) are missing.
Value
A list containing the following components:
- boot.states
Array (dim is m x tSteps x nboot) of simulated state processes.
- boot.data
Array (dim is n x tSteps x nboot) of simulated data.
- marss
marssMODEL
object element of themarssMLE
object (marssMLE$marss
) in "marss" form.- nboot
Number of bootstraps performed.
m is the number state processes (x in the MARSS model) and n is the number of observation time series (y in the MARSS model).
References
Stoffer, D. S., and K. D. Wall. 1991. Bootstrapping state-space models: Gaussian maximum likelihood estimation and the Kalman filter. Journal of the American Statistical Association 86:1024-1033.
See also
stdInnov()
, MARSSparamCIs()
, MARSSboot()
Examples
dat <- t(kestrel)
dat <- dat[2:3, ]
fit <- MARSS(dat, model = list(U = "equal", Q = diag(.01, 2)))
#> Success! algorithm run for 15 iterations. abstol and log-log tests passed.
#> Alert: conv.test.slope.tol is 0.5.
#> Test with smaller values (<0.1) to ensure convergence.
#>
#> MARSS fit is
#> Estimation method: kem
#> Convergence test: conv.test.slope.tol = 0.5, abstol = 0.001
#> Algorithm ran 15 (=minit) iterations and convergence was reached.
#> Log-likelihood: -11.12704
#> AIC: 30.25409 AICc: 30.78742
#>
#> Estimate
#> R.diag 0.04958
#> U.1 -0.00783
#> x0.X.British.Columbia 0.78786
#> x0.X.Alberta 0.73740
#> Initial states (x0) defined at t=0
#>
#> Standard errors have not been calculated.
#> Use MARSSparamCIs to compute CIs and bias estimates.
#>
boot.obj <- MARSSinnovationsboot(fit)