我正在使用pykalman进行回归,但是我想估计回归系数的误差。具体来说,我们有以下表达式:
Y(t)= B(t)X(t)+ v
其中回归系数(B)本身是由以下公式得出的随机过程:
B(t)= B(t-1)+ w
因此,我要处理的“噪声”由v和w给出,代表高斯噪声,其中:
w〜N(0, Q )
v〜N(0, R )
现在-我想消除表示为 Q / R 的信噪比。我的问题是如何从pykalman流程中提取这些值。目前,我的代码仅返回回归系数,但是如何获得Q和R?
def UpdateKalman(self, ins1, ins2):
obs_mat = np.array([[ins1, 1.0]])
means, covs = self.kf.filter_update(self.previous_state_means.T,
self.previous_state_covs[0],
observation=np.asarray(ins2),
observation_matrix=obs_mat)
self.previous_state_covs = covs
self.previous_state_means = means
beta = means[:, 0][0]
return beta
答案 0 :(得分:0)
如果您想获得观测协方差(据我所知,您在问题中称其为R)和过渡协方差(据我所知,您称其为Q),则可以直接从{ {1}}类对象。
假设您的示例pykalman.standard.KalmanFilter
是一个对象,您可以通过以下方式获得这些对象:
self.kf
据我了解,即使没有将其作为该函数的输出返回,该对象以及这些矩阵也会通过 R = self.kf.observation_covariance
Q = self.kf.transition_covariance
步骤在您的代码中进行更新。