“观察偏移”和“预测状态”在pykalman标准滤波模块中是什么意思?
我正在使用一个叫做 pykalman
的模块,里面有一个函数叫 _filter_correct
,我用它来修正我的预测数据。
这个函数里有一些参数我不太明白,尽管我尝试去理解这个函数的原理。
他们说:
observation_offset
是在时间t
的观察值的偏移量。predict_state_mean
是在时间t
的状态均值,基于从times[0...t-1]
的观察值。- 其他参数我都理解了。
顺便说一下,我是在预测一个单变量参数(风速),预测的是未来7天6小时的情况,并且我还把这些数据连接在一起!
你能帮我解释一下这个函数的参数吗?
1 个回答
0
根据我的理解,observation_offset
实际上是测量噪声的平均值。卡尔曼滤波器需要噪声是零均值的高斯信号,如果有偏移量的话,就会影响预测。这个库会自己消除偏移量,所以需要你提前提供一个值。(不过我觉得这并不是必须的,因为我猜它本身会计算这个值。提前给出只是对前几次迭代有帮助。但我不太确定,因为文档写得很糟糕。另一个猜测是,它把 NULL 作为默认值,所以 NULL 应该不会有问题。)
举个例子,如果你的温度计总是给出结果为 real_temperature + 2 + zero_mean_gaussian_noise
,那么你的 observation_offset
就必须是 2,这样才能把噪声调整到零均值。这里你可以找到更详细的信息。
我再次假设(因为通过谷歌搜索没有找到任何关于 predicted_state_mean 的信息)predicted_state_mean
这个名字暗示它是预测的结果值。卡尔曼滤波器有两个阶段:预测和更新。在预测阶段,根据你的系统动态和当前状态的信息,你会预测下一个状态。
比如说,如果你有一辆车在位置 0,以每秒 5 个单位的速度移动,那么在 2 秒后,你的车会到达位置 10。卡尔曼首先会预测这个信息,然后在更新状态时比较预测结果和实际观察到的(你的传感器数据)结果。