1

PyKalman を使用してカルマン フィルターを使用してパラメーターを推定しようとしていますが、遷移行列の推定に問題があります。常に 1.0 を返します。この簡単な例を参照してください。

from pykalman import KalmanFilter

N = 1000
a = 0.05
sims = []

v = 1

for t in range(N):
    v *= a
    sims.append(v)

kf = KalmanFilter(n_dim_obs=1, n_dim_state=1,
                  em_vars=['transition_matrices'],
                  initial_state_mean=[1],
                  transition_covariance=[0.0],
                  transition_offsets=[0],
                  initial_state_covariance=[0.0],
                  observation_matrices=[1],
                  observation_covariance=[0],
                  observation_offsets=[0])

emres = kf.em(sims, n_iter=10)

print "alpha: {}".format(emres.transition_matrices[0, 0])


>>> alpha: 1.0

観測行列で示されるように、観測値は潜在状態変数と同一であり、ノイズ共分散はすべて 0 です。同様に、状態変数は単純に各反復でアルファを乗算されますが、モデルはアルファに対して 1.0 に適合します。ここで何が起こっているのでしょうか?他の例では共分散を適合させることができましたが、遷移行列のみを適合させることはできません。

4

0 に答える 0