PyKalman EM无法在琐碎的模拟中工作

时间:2017-08-21 22:32:18

标签: python kalman-filter pykalman

我正在尝试使用卡尔曼滤波器来估计参数,使用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。这可能会发生什么?我能够在其他示例中拟合协方差,只有转换矩阵不适合。

0 个答案:

没有答案