statsmodels.tsa.statespace.kalman_smoother.KalmanSmoother.set_smooth_method

KalmanSmoother.set_smooth_method(smooth_method=None, **kwargs)[source]

设置平滑方法

平滑方法可以用来覆盖所使用的卡尔曼平滑器方法。默认情况下,所使用的卡尔曼平滑器取决于卡尔曼滤波器方法。

Parameters:
smooth_methodint, optional

设置过滤方法的位掩码值。详见注释。

**kwargs

关键字参数可用于通过设置单独的布尔标志来影响过滤方法。详情请参阅注释。

注释

平滑方法由一组布尔标志定义,并在内部存储为位掩码。可用的方法有:

SMOOTH_CONVENTIONAL = 0x01

默认的卡尔曼平滑器,如Durbin和Koopman在2012年第四章中所述。

SMOOTH_CLASSICAL = 0x02

经典的卡尔曼平滑器,如 Anderson 和 Moore 在 1979 年或 Durbin 和 Koopman 在 2012 年第四章 4.6.1 节中所述。

SMOOTH_ALTERNATIVE = 0x04

改进的Bryson-Frazier卡尔曼平滑方法;这与Durbin和Koopman在2012年的传统方法相同,只是增加了一个额外的中间步骤。

SMOOTH_UNIVARIATE = 0x08

单变量卡尔曼平滑器,如Durbin和Koopman在2012年第六章中所述,除了采用修改后的Bryson-Frazier时间。

实际上,这些方法应该都会产生相同的输出,但具有不同的计算影响、数值稳定性影响或内部时间假设。

请注意,如果使用的是0.16之前的Scipy版本,则只有第一种方法可用。

如果通过smooth_method参数直接设置位掩码,则必须提供完整的方法。

如果使用关键字参数来设置单个布尔标志,那么必须使用方法的小写形式作为参数名称,并且值是布尔标志所需的值(True 或 False)。

请注意,过滤方法也可以通过直接修改类属性来指定,这些属性定义方式类似于关键字参数。

默认的过滤方法是SMOOTH_CONVENTIONAL。

示例

>>> mod = sm.tsa.statespace.SARIMAX(range(10))
>>> mod.smooth_method
1
>>> mod.filter_conventional
True
>>> mod.filter_univariate = True
>>> mod.smooth_method
17
>>> mod.set_smooth_method(filter_univariate=False,
                          filter_collapsed=True)
>>> mod.smooth_method
33
>>> mod.set_smooth_method(smooth_method=1)
>>> mod.filter_conventional
True
>>> mod.filter_univariate
False
>>> mod.filter_collapsed
False
>>> mod.filter_univariate = True
>>> mod.smooth_method
17

Last update: Oct 16, 2024