Skip to contents

Compute the Fisher information for the parameters of a model.

Usage

FisherInformation(model, ...)

# S3 method for Arima
FisherInformation(model, ...)

Arguments

model

a fitted or theoretical model for which a method is available.

...

further arguments for methods.

Details

FisherInformation computes the information matrix for the parameters of model. This is a generic function. The methods for objects from S4 classes are listed in section ‘Methods’.

Currently package sarima defines methods for objects representing fitted or theoretical ARMA and seasonal ARMA models. For integrated models the result should be interpreted as the information matrix after differencing.

For ARMA models the implementation is based on Friedlander (1984) and (for the seasonal specifics) Godolphin and Godolphin (2007) .

Value

a square matrix with attribute "nseasons"

References

Friedlander B (1984). “On the computation of the Cramer-Rao bound for ARMA parameter estimation.” IEEE Transactions on Acoustics, Speech, and Signal Processing, 32(4), 721-727. doi:10.1109/TASSP.1984.1164391 .

Godolphin EJ, Godolphin JD (2007). “A Note on the Information Matrix for Multiplicative Seasonal Autoregressive Moving-Average Models.” Journal of Time Series Analysis, 28, 783-791. doi:10.1111/j.1467-9892.2007.00531.x .

Author

Georgi Boshnakov

Methods

This section lists FisherInformation methods for S4 classes.

signature(model = "ANY")

signature(model = "SarimaModel")

signature(model = "ArmaModel")

Examples

## a fitted model (over-parameterised)
seas_spec <- list(order = c(1,0,1), period = 4)
fitted <- arima(rnorm(100), order = c(1,0,1), seasonal = seas_spec)
(fi <- FisherInformation(fitted))
#>                phi_1        Phi_1      theta_1       Theta_1
#> phi_1    1.037070814 -0.006765045 -1.026427179  6.766917e-03
#> Phi_1   -0.006765045  2.591674454  0.002526094 -4.622683e+00
#> theta_1 -1.026427179  0.002526094  1.018895184 -2.526282e-03
#> Theta_1  0.006766917 -4.622682734 -0.002526282  3.167291e+05
#> attr(,"nseasons")
#> [1] 4
## asymptotic covariance matrix of the ARMA parameters:
fitted$sigma2 * solve(fi) / 100
#>                phi_1        Phi_1      theta_1      Theta_1
#> phi_1   3.217790e+00 5.239916e-03 3.241564e+00 3.358407e-08
#> Phi_1   5.239916e-03 3.794351e-03 5.269244e-03 5.530889e-08
#> theta_1 3.241564e+00 5.269244e-03 3.275143e+00 3.377202e-08
#> Theta_1 3.358407e-08 5.530889e-08 3.377202e-08 3.097785e-08

## a theoretical seasonal ARMA model:
sarima1 <- new("SarimaModel", ar = 0.9, ma = 0.1, sar = 0.5, sma = 0.9, nseasons = 12)
FisherInformation(sarima1)
#>              phi_1         Phi_1       theta_1       Theta_1
#> phi_1    5.2631579  3.654122e-01 -9.174312e-01 -2.502105e-01
#> Phi_1    0.3654122  1.333333e+00  1.000000e-11 -6.896552e-01
#> theta_1 -0.9174312  1.000000e-11  1.010101e+00 -1.000000e-11
#> Theta_1 -0.2502105 -6.896552e-01 -1.000000e-11  5.263158e+00
#> attr(,"nseasons")
#> [1] 12

## a non-seasonal ARMA model:
arma2a1 <- ArmaModel(ar = 0.5, ma = c(0.3, 0.7), sigma2 = 1)
FisherInformation(arma2a1)
#>              phi_1    theta_1    theta_2
#> phi_1    1.3333333 -0.7547170 -0.3773585
#> theta_1 -0.7547170  2.0238095 -0.3571429
#> theta_2 -0.3773585 -0.3571429  2.0238095
#> attr(,"nseasons")
#> [1] NA
## sigma2 is not needed for the information matrix:
arma2a1a <- ArmaModel(ar = 0.5, ma = c(0.3, 0.7))
FisherInformation(arma2a1a) # same as above
#>              phi_1    theta_1    theta_2
#> phi_1    1.3333333 -0.7547170 -0.3773585
#> theta_1 -0.7547170  2.0238095 -0.3571429
#> theta_2 -0.3773585 -0.3571429  2.0238095
#> attr(,"nseasons")
#> [1] NA