Observed Fisher Information Matrix at the MLE
MARSSFisherI.Rd
Returns the observed Fisher Information matrix for a marssMLE
object (a fitted MARSS model) via either the analytical algorithm of Harvey (1989) or a numerical estimate.
The observed Fisher Information is the negative of the second-order partial derivatives of the log-likelihood function evaluated at the MLE. The derivatives being with respect to the parameters. The Hessian matrix is the second-order partial derivatives of a scalar-valued function. Thus the observed Fisher Information matrix is the Hessian of the negative log-likelihood function evaluated at the MLE (or equivalently the negative of the Hessian of the log-likelihood function). The inverse of the observed Fisher Information matrix is an estimate of the asymptotic variance-covariance matrix for the estimated parameters. Use MARSShessian()
(which calls MARSSFisherI()
) to return the parameter variance-covariance matrix computed from the observed Fisher Information matrix.
Note for the numerically estimated Hessian, we pass in the negative log-likelihood function to a minimization function. As a result, the numerical functions return the Hessian of the negative log-likelihood function (which is the observed Fisher Information matrix).
Usage
MARSSFisherI(MLEobj, method = c("Harvey1989", "fdHess", "optim"))
Arguments
- MLEobj
An object of class
marssMLE
. This object must have a$par
element containing MLE parameter estimates from e.g.MARSSkem()
.- method
The method to use for computing the observed Fisher Information matrix. Options are
"Harvey1989"
to use the Harvey (1989) recursion, which is an analytical solution,"fdHess"
or"optim"
which are two numerical methods. Although 'optim' can be passed to the function, 'fdHess' is used for all numerical estimates used in the MARSS package.
Details
Method 'fdHess' uses fdHess()
from package nlme
to numerically estimate the Hessian of the negative log-likelihood function at the MLEs. Method 'optim' uses optim()
with hessian=TRUE
and list(maxit=0)
to ensure that the Hessian is computed at the values in the par
element of the MLE object. The par
element of the marssMLE
object is the MLE.
Method 'Harvey1989' (the default) uses the recursion in Harvey (1989) to compute the observed Fisher Information of a MARSS model analytically. See Holmes (2016c) for a discussion of the Harvey (1989) algorithm and see Holmes (2017) on how to implement the algorithm for MARSS models with linear constraints (the type of MARSS models that the MARSS R package addresses).
There has been research on computing the observed Fisher Information matrix from the derivatives used by EM algorithms (discussed in Holmes (2016a, 2016b)), for example Louis (1982). Unfortunately, the EM algorithm used in the MARSS package is for time series data and the temporal correlation must be dealt with, e.g. Duan & Fulop (2011). Oakes (1999) has an approach that only involves derivatives of \(\textrm{E}[LL(\Theta)|\mathbf{y},\Theta']\) but one of the derivatives will be the derivative of the \(\textrm{E}[\mathbf{X}|\mathbf{y},\Theta']\) with respect to \(\Theta'\). It is not clear how to do that derivative. Moon-Ho, Shumway and Ombao (2006) suggest (page 157) that this derivative is hard to compute.
References
Harvey, A. C. (1989) Section 3.4.5 (Information matrix) in Forecasting, structural time series models and the Kalman filter. Cambridge University Press, Cambridge, UK.
See also J. E. Cavanaugh and R. H. Shumway (1996) On computing the expected Fisher information matrix for state-space model parameters. Statistics & Probability Letters 26: 347-355. This paper discusses the Harvey (1989) recursion (and proposes an alternative).
Holmes, E. E. 2016a. Notes on computing the Fisher Information matrix for MARSS models. Part I Background. Technical Report. https://doi.org/10.13140/RG.2.2.27306.11204/1 Notes
Holmes, E. E. 2016b. Notes on computing the Fisher Information matrix for MARSS models. Part II Louis 1982. Technical Report. https://doi.org/10.13140/RG.2.2.35694.72000 Notes
Holmes, E. E. 2016c. Notes on computing the Fisher Information matrix for MARSS models. Part III Overview of Harvey 1989. https://eeholmes.github.io/posts/2016-6-16-FI-recursion-3/
Holmes, E. E. 2017. Notes on computing the Fisher Information matrix for MARSS models. Part IV Implementing the Recursion in Harvey 1989. https://eeholmes.github.io/posts/2017-5-31-FI-recursion-4/
Duan, J. C. and A. Fulop. (2011) A stable estimator of the information matrix under EM for dependent data. Statistics and Computing 21: 83-91
Louis, T. A. 1982. Finding the observed information matrix when using the EM algorithm. Journal of the Royal Statistical Society. Series B (Methodological). 44: 226-233.
Oakes, D. 1999. Direct calculation of the information matrix via the EM algorithm. Journal of the Royal Statistical Society. Series B (Methodological). 61: 479-482.
Moon-Ho, R. H., R. H. Shumway, and Ombao 2006. The state-space approach to modeling dynamic processes. Chapter 7 in Models for Intensive Longitudinal Data. Oxford University Press.
Examples
dat <- t(harborSeal)
dat <- dat[2:4, ]
MLEobj <- MARSS(dat, model=list(Z=matrix(1,3,1), R="diagonal and equal"))
#> Success! abstol and log-log tests passed at 29 iterations.
#> 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
#> Estimation converged in 29 iterations.
#> Log-likelihood: 11.03248
#> AIC: -10.06496 AICc: -8.277722
#>
#> Estimate
#> A.OlympicPeninsula -0.71799
#> A.StraitJuanDeFuca -1.54057
#> R.diag 0.02644
#> U.U 0.06287
#> Q.Q 0.00972
#> x0.x0 7.40711
#> Initial states (x0) defined at t=0
#>
#> Standard errors have not been calculated.
#> Use MARSSparamCIs to compute CIs and bias estimates.
#>
MARSSFisherI(MLEobj)
#> A.OlympicPeninsula A.StraitJuanDeFuca R.diag U.U
#> A.OlympicPeninsula 369.565861 -173.563692 15.59539 30.35953
#> A.StraitJuanDeFuca -173.563692 421.146898 -60.01054 42.14383
#> R.diag 15.595391 -60.010538 28688.85792 -181.36337
#> U.U 30.359534 42.143835 -181.36337 2507.45187
#> Q.Q -42.415845 163.214745 7766.17926 493.26631
#> x0.x0 1.226226 2.962416 5.07240 102.86384
#> Q.Q x0.x0
#> A.OlympicPeninsula -42.41585 1.226226
#> A.StraitJuanDeFuca 163.21474 2.962416
#> R.diag 7766.17926 5.072400
#> U.U 493.26631 102.863835
#> Q.Q 31226.28772 -13.795750
#> x0.x0 -13.79575 46.463576
MARSSFisherI(MLEobj, method="fdHess")
#> A.OlympicPeninsula A.StraitJuanDeFuca R.diag U.U
#> A.OlympicPeninsula 369.567481 -173.564194 -63.59872 30.3338
#> A.StraitJuanDeFuca -173.564194 421.147436 -3.98411 42.1302
#> R.diag -63.598723 -3.984110 28441.35002 -188.4002
#> U.U 30.333805 42.130202 -188.40022 2508.4098
#> Q.Q 105.680363 -47.988282 8474.13195 512.7219
#> x0.x0 1.226384 2.962429 -75.12438 102.8606
#> Q.Q x0.x0
#> A.OlympicPeninsula 105.68036 1.226384
#> A.StraitJuanDeFuca -47.98828 2.962429
#> R.diag 8474.13195 -75.124382
#> U.U 512.72193 102.860563
#> Q.Q 28908.51992 205.212282
#> x0.x0 205.21228 46.463580