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.scansequences 参数的输入

类型:

list[str]

non_seq_names#

表示静态状态空间矩阵的名称列表。 也就是说,需要提供给 pytensor.scannon_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)

执行卡尔曼滤波器的更新步骤。