Сглаживатель ковариации Lag-One для фильтра Калмана - PullRequest
0 голосов
/ 21 февраля 2019

Я изучаю Kalman Filter и нахожу, что уравнения для Lag-One Covariance Smoother и его реализация в pykalman отличаются.Я не знаю почему.

В книге Роберта Х. Шамвея, Дэвида С. Стоффера, «Анализ временных рядов и его приложения» (Четвертое издание).уравнение приведено на странице 300

enter image description here

enter image description here

Формула в другой литературе, которую я мог найтитакже в этой форме.

Но в Pykalman (https://github.com/pykalman/pykalman/blob/master/pykalman/standard.py), они рассчитали его по-другому.

def _smooth_pair(smoothed_state_covariances, kalman_smoothing_gain):
    n_timesteps, n_dim_state, _ = smoothed_state_covariances.shape
    pairwise_covariances = np.zeros((n_timesteps, n_dim_state, n_dim_state))
    for t in range(1, n_timesteps):
        pairwise_covariances[t] = (
            np.dot(smoothed_state_covariances[t],
                   kalman_smoothing_gain[t - 1].T)
        )
    return pairwise_covariances

В основном, он использует очень простую формулу enter image description here

На самом деле, я попробовал оба в python, и результаты немного отличаются. Я не мог найти очевидную связь между ними, и я не мог найти второе уравнение в любой литературе.дайте мне несколько советов?

...