statsmodels.tsa.statespace.simulation_smoother.SimulationSmoother.设置反转方法¶
-
SimulationSmoother.set_inversion_method(inversion_method=
None, **kwargs)¶ 设置反演方法
卡尔曼滤波器可能包含一个矩阵求逆:即预测误差协方差矩阵的求逆。求逆方法控制如何以及是否执行该逆运算。
- Parameters:¶
- inversion_method
int,optional 设置反转方法的位掩码值。详见注释。
- **kwargs
关键字参数可用于通过设置单个布尔标志来影响反演方法。详情请参阅注释。
- inversion_method
注释
反演方法由一组布尔标志定义,并在内部存储为位掩码。可用的方法有:
- INVERT_UNIVARIATE
如果内生时间序列是单变量的,那么可以通过简单的除法进行反演。如果设置了此标志并且时间序列是单变量的,那么即使设置了其他标志,也将始终使用除法。
- SOLVE_LU
使用LU分解以及线性求解器(而不是实际求逆矩阵)。
- INVERT_LU
使用LU分解以及典型的矩阵求逆方法。
- SOLVE_CHOLESKY
使用Cholesky分解以及线性求解器。
- INVERT_CHOLESKY
使用Cholesky分解以及典型的矩阵求逆。
如果通过inversion_method参数直接设置位掩码,则必须提供完整的方法。
如果使用关键字参数来设置单个布尔标志,那么必须使用方法的小写形式作为参数名称,并且值是布尔标志所需的值(True 或 False)。
请注意,反转方法也可以通过直接修改类属性来指定,这些属性定义类似于关键字参数。
默认的反演方法是 单变量反演 | 解Cholesky
需要记住的几点是:
如果指定的过滤方法是单变量的,那么无论内生时间序列的维度如何,总是使用简单的除法。
Cholesky 分解的速度大约是 LU 分解的两倍,但它要求矩阵是正定的。虽然这通常应该是正确的,但在某些情况下可能不成立。
使用线性求解器而不是真正的矩阵求逆通常更快,并且在数值上更稳定。
示例
>>> mod = sm.tsa.statespace.SARIMAX(range(10)) >>> mod.ssm.inversion_method 1 >>> mod.ssm.solve_cholesky True >>> mod.ssm.invert_univariate True >>> mod.ssm.invert_lu False >>> mod.ssm.invert_univariate = False >>> mod.ssm.inversion_method 8 >>> mod.ssm.set_inversion_method(solve_cholesky=False, ... invert_cholesky=True) >>> mod.ssm.inversion_method 16
Last update:
Oct 16, 2024