# KalmanLike

##### Kalman Filtering

Use Kalman Filtering to find the (Gaussian) log-likelihood, or for forecasting or smoothing.

- Keywords
- ts

##### Usage

```
KalmanLike(y, mod, nit = 0L, update = FALSE)
KalmanRun(y, mod, nit = 0L, update = FALSE)
KalmanSmooth(y, mod, nit = 0L)
KalmanForecast(n.ahead = 10L, mod, update = FALSE)
```makeARIMA(phi, theta, Delta, kappa = 1e6,
SSinit = c("Gardner1980", "Rossignol2011"),
tol = .Machine$double.eps)

##### Arguments

- y
- a univariate time series.
- mod
- a list describing the state-space model: see
Details . - nit
- the time at which the initialization is computed.
`nit = 0L`

implies that the initialization is for a one-step prediction, so`Pn`

should not be computed at the first step. - update
- if
`TRUE`

the update`mod`

object will be returned as attribute`"mod"`

of the result. - n.ahead
- the number of steps ahead for which prediction is required.
- phi, theta
- numeric vectors of length $\ge 0$ giving AR and MA parameters.
- Delta
- vector of differencing coefficients, so an ARMA model is
fitted to
`y[t] - Delta[1]*y[t-1] - ...`

. - kappa
- the prior variance (as a multiple of the innovations variance) for the past observations in a differenced model.
- SSinit
- a string specifying the algorithm to compute the
`Pn`

part of the state-space initialization; seeDetails . - tol
- tolerance eventually passed to
`solve.default`

when`SSinit = "Rossignol2011"`

.

##### Details

These functions work with a general univariate state-space model
with state vector `a`, transitions `a <- T a + R e`,
$e \sim {\cal N}(0, \kappa Q)$ and observation
equation `y = Z'a + eta`,
$(eta\equiv\eta), \eta \sim {\cal N}(0, \kappa h)$.
The likelihood is a profile likelihood after estimation of
$\kappa$.

The model is specified as a list with at least components [object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]

`KalmanSmooth`

is the workhorse function for `tsSmooth`

.

`makeARIMA`

constructs the state-space model for an ARIMA model,
see also `arima`

.

The state-space initialization has used Gardner *et al*'s method
(`SSinit = "Gardner1980"`

), as only method for years. However,
that suffers sometimes from deficiencies when close to non-stationarity.
For this reason, it may be replaced as default in the future and only
kept for reproducibility reasons. Explicit specification of
`SSinit`

is therefore recommended, notably also in
`arima()`

.
The `"Rossignol2011"`

method has been proposed and partly
documented by Raphael Rossignol, Univ. Grenoble, on 2011-09-20 (see
PR#14682, below), and later been ported to C by Matwey V. Kornilov.
It computes the covariance matrix of
$(X_{t-1},...,X_{t-p},Z_t,...,Z_{t-q})$
by the method of difference equations (page 93 of Brockwell and Davis),
apparently suggested by a referee of Gardner *et al* (see p.314 of
their paper).

##### Value

- For
`KalmanLike`

, a list with components`Lik`

(the log-likelihood less some constants) and`s2`

, the estimate of $\kappa$.For

`KalmanRun`

, a list with components`values`

, a vector of length 2 giving the output of`KalmanLike`

,`resid`

(the residuals) and`states`

, the contemporaneous state estimates, a matrix with one row for each observation time.For

`KalmanSmooth`

, a list with two components. Component`smooth`

is a`n`

by`p`

matrix of state estimates based on all the observations, with one row for each time. Component`var`

is a`n`

by`p`

by`p`

array of variance matrices.For

`KalmanForecast`

, a list with components`pred`

, the predictions, and`var`

, the unscaled variances of the prediction errors (to be multiplied by`s2`

).For

`makeARIMA`

, a model list including components for its arguments.

##### Warning

These functions are designed to be called from other functions which check the validity of the arguments passed, so very little checking is done.

##### References

Durbin, J. and Koopman, S. J. (2001) *Time Series Analysis by
State Space Methods.* Oxford University Press.

Gardner, G, Harvey, A. C. and Phillips, G. D. A. (1980) Algorithm
AS154. An algorithm for exact maximum likelihood estimation of
autoregressive-moving average models by means of Kalman filtering.
*Applied Statistics* **29**, 311--322.

R bug report PR#14682 (2011-2013)

##### See Also

##### Examples

`library(stats)`

```
## an ARIMA fit
fit3 <- arima(presidents, c(3, 0, 0))
predict(fit3, 12)
## reconstruct this
pr <- KalmanForecast(12, fit3$model)
pr$pred + fit3$coef[4]
sqrt(pr$var * fit3$sigma2)
## and now do it year by year
mod <- fit3$model
for(y in 1:3) {
pr <- KalmanForecast(4, mod, TRUE)
print(list(pred = pr$pred + fit3$coef["intercept"],
se = sqrt(pr$var * fit3$sigma2)))
mod <- attr(pr, "mod")
}
```

*Documentation reproduced from package stats, version 3.3, License: Part of R 3.3*