Bootstrapping State Space Models

Posted on
No user picture. janneadolf Joined: 02/06/2015
I would like to bootstrap standard error estimates for the parameters of a state space model implemented using OpenMx's SSM functionality (i.e., mxExpectationStateSpace). If I hand the example model from the mxExpectationStateSpace documentation page to the mxBootstrap function it does run without any complaints. But I consistently get standard error estimates of 0 and all percentiles land on the point estimates. Is mxBootstrap not (yet) capable of handling (models implying) dependent rows of data?
Replied on Fri, 01/14/2022 - 12:09
Picture of user. mhunter Joined: 07/31/2009

Hi Janne,

I have no idea what mxBootstrap() does when you give it a model with a state space expectation. My first impulse is that it *should* give you an error indicating no such functionality is implemented. However, the main bootstrap developer (Rob Kirkpatrick) might have other views.

Bootstrapping has no way of handling the dependent rows of data. However, the residuals in state space models are assumed to be independent, so some kind of bootstrapping could be done on the residuals. Alternatively, you could probably do bootstrapping on blocks of data rather than rows. I'm not up to speed on the details right now.

Hope that helps!
Mike

Replied on Fri, 01/14/2022 - 14:58
Picture of user. AdminRobK Joined: 01/24/2014

I am pretty sure that OpenMx's bootstrapping feature works with a state-space expectation in the same way it does with multilevel data: it does the wrong thing because it shuffles rows of datsets as though they were all independent.
Replied on Mon, 01/17/2022 - 04:39
No user picture. janneadolf Joined: 02/06/2015

... and makes sense. I had noted the remark on nested and multi-level data in mxBootstrap's documentation - but was still secretly hoping you guys might have taken care of the special case of SSM. It would have been too convenient.
I'm not too familiar with resampling-strategies for dependent data, but resampling residuals seems like a good starting point.
Any intentions of generalizing mxBootstrap() to these situations/strategies?
In the meantime, maybe it could indeed be useful to have the function return a warning for the cases not handled properly?
Replied on Thu, 02/03/2022 - 21:06
Picture of user. mhunter Joined: 07/31/2009

I've implemented new behavior for mxBootstrap() for state space and multilevel models. As of this posting the new functionality is not yet released, but will likely be released in the next few weeks.

The new behavior throws an error when trying to use mxBootstrap() on a state space model. However, there is the option to override this error by setting the new unsafe argument of mxBootstrap() to TRUE. The error message makes this suggestion to try the unsafe argument, then turns into a warning.

Good luck!