如何处理卡尔曼滤波器中的不完整数据?

机器算法验证 缺失数据 卡尔曼滤波器
2022-03-07 17:44:21

在卡尔曼滤波器中处理不完整数据的一些典型方法是什么?我说的是观察到的向量的某些元素丢失的情况,与丢失整个观察到的向量的情况不同。另一种思考方式是观察向量的维度对于每个时间点都是不同的。ytytp

为了进一步解释我的上下文,观察是在每个时间点执行的逻辑回归的估计参数。虽然每个逻辑回归都包含相同的协变量,但有时由于该时间点数据的共线性,估计值未定义。

3个回答

所需要的只是有一个变量观察矩阵,即在观察方程中:

Yt=Atθt+Rtet
矩阵At(和Rt)应该在时间t省略与\boldsymbol{Y_t}中的条目t对应的行例如,R 中的大多数包都会处理这个问题:您可以拥有观察到的多元时间序列,其值没有问题。NAYtNA

最简单的解决方案是只使用任何测量值(最后一个最好的),但将相应的测量噪声方差设置为一个非常大的数字。实际上,虚假测量将被忽略。卡尔曼滤波器平衡测量不确定性与模型不确定性,在这种情况下,您只是根据状态模型预测的任何内容以及其他测量校正进行估计。只要测量不可用,由于过程噪声,任何在没有测量的情况下变得不可观察的状态都会随着时间的推移而增加不确定性。这是非常现实的——您对基于旧测量值的预测的信心会随着时间的推移而不断降低。(对于此解决方案或临时更改滤波器结构以消除测量的情况,这是正确的)。

此公式假设您使用的卡尔曼滤波器在每一步都更新状态和协方差矩阵,而不是稳态版本。如果您的软件还没有对不可用值进行特殊处理,这是最简单的方法。(并且确实具有缺失值处理的软件可能会以这种方式处理它)。这种方法在理论上应该完成与修改测量矩阵大小和测量协方差矩阵大小完全相同的事情。具有几乎无限方差的测量与根本没有测量提供相同的信息。但是这样一来,就不需要改变滤波器的结构或存储所有的可能性——它只是一个参数的改变(假设每个测量噪声误差的典型情况是独立的,

Durbin 和 Koopman (2012) 有一段关于缺失观察的有用段落。

他们区分两种情况:

  • 其中时间的所有观测值都缺失,并且,t
  • 其中缺少的观察子集。t

如果我们使用以下方程组:

yt=Zxt+εtεtN(0,H)xt+1=Txt+ηtηtN(0,Q)

他们建议通过引入矩阵在任何合适的时间点减少方程的维数,该矩阵的行是单位矩阵行的子集,因此仅反映实际测量值。所以基本上你得到: where tWtyt

yt=Ztxt+ϵtϵtN(0,H)
yt=WtytZt=WtZtϵt=WtϵtHt=WtHtWtT

参考

  • Durbin, J. 和 Koopman, SJ (2012) 通过状态空间方法进行时间序列分析