UnivariateFilter#
- class pymc_extras.statespace.filters.UnivariateFilter(mode=None)[source]#
单变量卡尔曼滤波器,在 [1] 第 6.4.2 节中描述,避免了 F 矩阵的求逆,以及两次矩阵乘法,但代价是增加了一个额外的循环。请注意,名称并不意味着只有一个观测时间序列。这被称为单变量,因为它一次更新一个变量的状态均值和协方差矩阵,使用一个内-内循环。
当状态被完全观测时,这非常有用,因为在这些情况下 F 矩阵很容易变得退化。
参考文献
- __init__(mode=None)#
卡尔曼滤波器。
- 参数:
mode (str, optional) – 用于 Pytensor 编译的模式。默认为 None。
注释
BaseFilter 类是用于实现卡尔曼滤波器的抽象基类 (ABC)。它定义了卡尔曼滤波器实现常用的属性和方法。
- mode#
用于 Pytensor 编译的模式。
- 类型:
str 或 None
- seq_names#
表示时变状态空间矩阵的名称列表。 也就是说,需要提供给 pytensor.scan 的 sequences 参数的输入
- 类型:
list[str]
- non_seq_names#
表示静态状态空间矩阵的名称列表。 也就是说,需要提供给 pytensor.scan 的 non_sequences 参数的输入
- 类型:
list[str]
方法
__init__
([mode])卡尔曼滤波器。
add_check_on_time_varying_shapes
(data, ...)插入一个检查,以确保时变矩阵与计算图的数据形状匹配。
build_graph
(data, a0, P0, c, d, T, Z, R, H, Q)构建卡尔曼滤波器的计算图。
check_params
(data, a0, P0, c, d, T, Z, R, H, Q)应用任何关于输入有效性的检查。
handle_missing_values
(y, Z, H)处理观测数据 y 中的缺失值
kalman_step
(y, a, P, c, d, T, Z, R, H, Q)执行卡尔曼滤波器的单次迭代,它由两个步骤组成:更新步骤和预测步骤。
predict
(a, P, c, T, R, Q)执行卡尔曼滤波器的预测步骤。
unpack_args
(args)内部扫描函数的输入顺序是未知的,因为某些、全部或没有输入矩阵可以是时变的。
update
(a, P, y, d, Z, H, all_nan_flag)执行卡尔曼滤波器的更新步骤。