statsmodels.tsa.statespace.kalman_filter.KalmanFilter¶
-
class statsmodels.tsa.statespace.kalman_filter.KalmanFilter(k_endog, k_states, k_posdef=
None, loglikelihood_burn=0, tolerance=1e-19, results_class=None, kalman_filter_classes=None, **kwargs)[source]¶ 时间序列过程的状态空间表示,使用卡尔曼滤波器
- Parameters:¶
- k_endog{array_like,
int} 观察到的时间序列过程 \(y\) 如果是数组形式,或者是过程中的变量数量,如果是整数。
- k_states
int 未观测状态过程的维度。
- k_posdef
int,optional 描述转移方程中冲击的保证正定协方差矩阵的维度。必须小于或等于k_states。默认是k_states。
- loglikelihood_burn
int,optional 在记录对数似然之前,初始阶段的数量。默认值为 0。
- tolerance
float,optional 卡尔曼滤波器确定收敛到稳态的容差。默认值为1e-19。
- results_class
class,optional 默认的结果类,用于保存过滤输出。默认是FilterResults。如果指定,类必须继承自FilterResults。
- **kwargs
关键字参数可用于为过滤、反演和稳定性方法提供值。请参阅set_filter_method、set_inversion_method和set_stability_method。关键字参数可用于为状态空间矩阵提供默认值。更多详情请参阅Representation。
- k_endog{array_like,
- Attributes:¶
- design
dtype(dtype) 当前活动表示矩阵的数据类型
- endog
memory_no_filtered(bool) 标志,用于防止存储过滤后的状态和协方差矩阵。
memory_no_forecast(bool) 标志,用于防止存储所有与预测相关的输出。
memory_no_predicted(bool) 标志,用于防止存储预测的状态和协方差矩阵。
obs(数组) 观测向量: \(y~(k\_endog \times nobs)\)
- obs_cov
- obs_intercept
prefix(str) 当前活动表示矩阵的BLAS前缀
- selection
- state_cov
- state_intercept
time_invariant(bool) 当前活跃的表示矩阵是否
- transition
注释
有几种可用的选项用于控制卡尔曼滤波器的操作。所有选项在内部都以位掩码的形式保存,但可以通过设置类属性来操作,这些属性类似于布尔标志。更多信息,请参阅set_*类方法文档。选项包括:
- filter_method
过滤方法控制了将使用哪种卡尔曼滤波方法的各个方面。
- inversion_method
卡尔曼滤波器可能包含一个矩阵求逆:即预测误差协方差矩阵的求逆。求逆方法控制如何以及是否执行该逆运算。
- stability_method
卡尔曼滤波器是一种递归算法,在某些情况下可能会遇到数值稳定性问题。稳定性方法控制采取哪些措施(如果有的话)来促进稳定性。
- conserve_memory
默认情况下,卡尔曼滤波器在每次迭代中计算多个中间矩阵。内存保存选项控制哪些矩阵被存储。
- filter_timing
默认情况下,卡尔曼滤波器遵循Durbin和Koopman,2012年,使用预测值初始化滤波器。Kim和Nelson,1999年,则使用滤波值初始化滤波器,这本质上只是不同的计时约定。
选项 filter_method 和 inversion_method 有意允许指定多种方法的可能性。如果选择了多种方法,底层的卡尔曼滤波器将尝试根据输入数据选择最佳方法。
例如,可能指定了 INVERT_UNIVARIATE 和 SOLVE_CHOLESKY(这实际上是默认情况)。在这种情况下,如果内生向量是一维的(k_endog = 1),则使用 INVERT_UNIVARIATE,并且求逆简化为简单的除法,如果它具有更大的维度,则使用 Cholesky 分解以及线性求解(而不是显式矩阵求逆)。如果仅设置了 SOLVE_CHOLESKY,则即使在一维数据的情况下,也会始终使用 Cholesky 分解方法。
方法
bind(endog)将数据绑定到状态空间表示
clone(endog, **kwargs)克隆一个状态空间表示,同时覆盖一些元素
diff_endog(new_endog[, tolerance])extend(endog[, start, end])扩展当前的状态空间模型,或特定的(时间)子集
filter([filter_method, inversion_method, ...])将卡尔曼滤波器应用于状态空间模型。
fixed_scale(scale)当设置 FILTER_CONCENTRATED 时,用于固定比例的上下文管理器
impulse_responses([steps, impulse, ...])脉冲响应函数
initialize(initialization[, ...])如有必要,创建一个初始化对象
initialize_approximate_diffuse([variance])使用近似扩散值初始化状态空间模型。
initialize_components([a, Pstar, Pinf, A, ...])使用组件矩阵初始化状态空间模型
将状态空间模型初始化为扩散状态。
initialize_known(constant, stationary_cov)使用已知的初始状态分布初始化状态空间模型。
将状态空间模型初始化为平稳状态。
loglike(**kwargs)计算与状态空间模型相关的对数似然。
loglikeobs(**kwargs)计算与状态空间模型相关的每个观测值的对数似然。
set_conserve_memory([conserve_memory])设置内存保护方法
set_filter_method([filter_method])设置过滤方法
set_filter_timing([alternate_timing])设置过滤时机约定
set_inversion_method([inversion_method])设置反演方法
set_stability_method([stability_method])设置数值稳定性方法
simulate(nsimulations[, measurement_shocks, ...])模拟一个遵循状态空间模型的新时间序列
属性
(整数) 内存保护位掩码。
(数组) 设计矩阵: \(Z~(k\_endog \times k\_states \times nobs)\)
(dtype) 当前活动表示矩阵的数据类型
(数组) 观测向量,obs 的别名。
(bool) 增强卡尔曼滤波的标志。
(bool) 用于使用 Chandrasekhar 递归进行过滤的标志。
(bool) 用于卡尔曼滤波的标志,使用折叠的观测向量。
(bool) 用于集中对数似然卡尔曼滤波的标志。
(bool) 传统卡尔曼滤波的标志。
(bool) 精确初始卡尔曼滤波的标志。
(bool) 扩展卡尔曼滤波的标志。
(整数) 过滤方法位掩码。
(bool) 用于平方根卡尔曼滤波的标志。
(整数) 过滤时机。
(bool) 用于多元观测向量的单变量过滤标志。
(bool) 无迹卡尔曼滤波的标志。
(整数) 反转方法位掩码。
(bool) 用于Cholesky求逆方法的标志。
(bool) LU 分解方法的标志。
(bool) 单变量反演方法的标志(推荐)。
(bool) 标志以节省最大内存。
(bool) 标志,用于防止存储过滤后的状态和协方差矩阵。
(bool) 标志,用于防止存储过滤后的状态协方差矩阵。
(bool) 防止存储过滤状态的标志。
(bool) 标志,用于防止存储所有与预测相关的输出。
(bool) 标志以防止存储预测误差协方差矩阵。
(bool) 标志,用于防止存储预测和预测误差。
(bool) 标志以防止存储卡尔曼增益矩阵。
(bool) 标志,用于防止为每个观测值存储似然值。
(bool) 标志,用于防止存储预测的状态和协方差矩阵。
(bool) 标志,用于防止存储预测状态协方差矩阵。
(bool) 标志,用于防止存储预测状态。
(bool) 标志,用于防止为每个观测值存储似然值。
(bool) 标志,用于防止存储标准化预测误差。
(bool) 标志,用于在内存中存储所有中间结果(默认)。
(数组) 观测向量: \(y~(k\_endog \times nobs)\)
(数组) 观测协方差矩阵: \(H~(k\_endog \times k\_endog \times nobs)\)
(数组) 观测截距: \(d~(k\_endog \times nobs)\)
(str) 当前活动表示矩阵的BLAS前缀
(数组) 选择矩阵: \(R~(k\_states \times k\_posdef \times nobs)\)
(bool) 用于Cholesky和线性求解器逆方法的标志(推荐)。
(bool) 用于LU分解和线性求解器求逆方法的标志。
(bool) 强制协方差矩阵对称的标志
(整数) 稳定性方法位掩码。
(数组) 状态协方差矩阵: \(Q~(k\_posdef \times k\_posdef \times nobs)\)
(数组) 状态截距: \(c~(k\_states \times nobs)\)
(bool) 当前活跃的表示矩阵是否是时间不变的
(bool) 用于替代时间约定标志(Kim 和 Nelson,2012)。
(bool) 默认时间约定标志(Durbin 和 Koopman,2012)。
(数组) 转移矩阵: \(T~(k\_states \times k\_states \times nobs)\)