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 に適合します。ここで何が起こっているのでしょうか?他の例では共分散を適合させることができましたが、遷移行列のみを適合させることはできません。