我用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发布于 2018-10-07 22:42:22
如果你想得到观测协方差(我理解你在你的问题中称之为R)和转换协方差(我理解你称之为Q),你可以直接从pykalman.standard.KalmanFilter类对象中得到它们。
假设在您的示例中,self.kf是suck对象,那么您可以获得如下所示:
R = self.kf.observation_covariance
Q = self.kf.transition_covariance我的理解是,这个对象和这些矩阵是通过filter_update步骤在代码中更新的,即使通过它,也不会作为该函数的输出返回。
https://stackoverflow.com/questions/52597147
复制相似问题