Python 時系列分析 1,000本ノック
– ノック91: カルマンフィルタ –

Python 時系列分析 1,000本ノック– ノック91: カルマンフィルタ  –
次の Python コードのカルマンフィルタは何を行っていますか?

Python コード:

import numpy as np
from pykalman import KalmanFilter

np.random.seed(42)
true = np.cumsum(np.random.randn(200)*0.2) + 10
obs = true + np.random.randn(200)*3

kf = KalmanFilter(
    transition_matrices=1, observation_matrices=1,
    transition_covariance=0.04, observation_covariance=9,
    initial_state_mean=obs[0])
est = kf.filter(obs)[0].flatten()

rmse = lambda x: np.sqrt(((x - true)**2).mean())
print(f"観測値のRMSE:   {rmse(obs):.4f}")
print(f"推定状態のRMSE: {rmse(est):.4f}")

回答の選択肢:
(A) 観測データからトレンドと季節性を分解している
(B) 観測ノイズを含むデータから、背後にある潜在状態を推定している
(C) 観測データの異常値を検出して除去している
(D) 観測データの周波数成分を分析している