ekf_smoother {bssm} R Documentation

## Extended Kalman Smoothing

### Description

Function `ekf_smoother` runs the (iterated) extended Kalman smoother for the given non-linear Gaussian model of class `ssm_nlg`, and returns the smoothed estimates of the states and the corresponding variances. Function `ekf_fast_smoother` computes only smoothed estimates of the states.

### Usage

```ekf_smoother(model, iekf_iter = 0)

ekf_fast_smoother(model, iekf_iter = 0)
```

### Arguments

 `model` Model of class `ssm_nlg`. `iekf_iter` Non-negative integer. The default zero corresponds to normal EKF, whereas `iekf_iter > 0` corresponds to iterated EKF with `iekf_iter` iterations.

### Value

List containing the log-likelihood, smoothed state estimates `alphahat`, and the corresponding variances `Vt` and `Ptt`.

### Examples

``` # Takes a while on CRAN
set.seed(1)
mu <- -0.2
rho <- 0.7
sigma_y <- 0.1
sigma_x <- 1
x <- numeric(50)
x[1] <- rnorm(1, mu, sigma_x / sqrt(1 - rho^2))
for(i in 2:length(x)) {
x[i] <- rnorm(1, mu * (1 - rho) + rho * x[i - 1], sigma_x)
}
y <- rnorm(length(x), exp(x), sigma_y)

pntrs <- cpp_example_model("nlg_ar_exp")

model_nlg <- ssm_nlg(y = y, a1 = pntrs\$a1, P1 = pntrs\$P1,
Z = pntrs\$Z_fn, H = pntrs\$H_fn, T = pntrs\$T_fn, R = pntrs\$R_fn,
Z_gn = pntrs\$Z_gn, T_gn = pntrs\$T_gn,
theta = c(mu= mu, rho = rho,
log_sigma_x = log(sigma_x), log_sigma_y = log(sigma_y)),
log_prior_pdf = pntrs\$log_prior_pdf,
n_states = 1, n_etas = 1, state_names = "state")

out_ekf <- ekf_smoother(model_nlg, iekf_iter = 0)
out_iekf <- ekf_smoother(model_nlg, iekf_iter = 1)
ts.plot(cbind(x, out_ekf\$alphahat, out_iekf\$alphahat), col = 1:3)

```

[Package bssm version 1.1.7-1 Index]