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_statesint

未观测状态过程的维度。

k_posdefint, optional

描述转移方程中冲击的保证正定协方差矩阵的维度。必须小于或等于k_states。默认是k_states

loglikelihood_burnint, optional

在记录对数似然之前,初始阶段的数量。默认值为 0。

tolerancefloat, optional

卡尔曼滤波器确定收敛到稳态的容差。默认值为1e-19。

results_classclass, optional

默认的结果类,用于保存过滤输出。默认是FilterResults。如果指定,类必须继承自FilterResults

**kwargs

关键字参数可用于为过滤、反演和稳定性方法提供值。请参阅set_filter_methodset_inversion_methodset_stability_method。关键字参数可用于为状态空间矩阵提供默认值。更多详情请参阅Representation

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_methodinversion_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_diffuse()

将状态空间模型初始化为扩散状态。

initialize_known(constant, stationary_cov)

使用已知的初始状态分布初始化状态空间模型。

initialize_stationary()

将状态空间模型初始化为平稳状态。

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, ...])

模拟一个遵循状态空间模型的新时间序列

属性

conserve_memory

(整数) 内存保护位掩码。

design

(数组) 设计矩阵: \(Z~(k\_endog \times k\_states \times nobs)\)

dtype

(dtype) 当前活动表示矩阵的数据类型

endog

(数组) 观测向量,obs 的别名。

filter_augmented

(bool) 增强卡尔曼滤波的标志。

filter_chandrasekhar

(bool) 用于使用 Chandrasekhar 递归进行过滤的标志。

filter_collapsed

(bool) 用于卡尔曼滤波的标志,使用折叠的观测向量。

filter_concentrated

(bool) 用于集中对数似然卡尔曼滤波的标志。

filter_conventional

(bool) 传统卡尔曼滤波的标志。

filter_exact_initial

(bool) 精确初始卡尔曼滤波的标志。

filter_extended

(bool) 扩展卡尔曼滤波的标志。

filter_method

(整数) 过滤方法位掩码。

filter_methods

filter_square_root

(bool) 用于平方根卡尔曼滤波的标志。

filter_timing

(整数) 过滤时机。

filter_univariate

(bool) 用于多元观测向量的单变量过滤标志。

filter_unscented

(bool) 无迹卡尔曼滤波的标志。

inversion_method

(整数) 反转方法位掩码。

inversion_methods

invert_cholesky

(bool) 用于Cholesky求逆方法的标志。

invert_lu

(bool) LU 分解方法的标志。

invert_univariate

(bool) 单变量反演方法的标志(推荐)。

memory_conserve

(bool) 标志以节省最大内存。

memory_no_filtered

(bool) 标志,用于防止存储过滤后的状态和协方差矩阵。

memory_no_filtered_cov

(bool) 标志,用于防止存储过滤后的状态协方差矩阵。

memory_no_filtered_mean

(bool) 防止存储过滤状态的标志。

memory_no_forecast

(bool) 标志,用于防止存储所有与预测相关的输出。

memory_no_forecast_cov

(bool) 标志以防止存储预测误差协方差矩阵。

memory_no_forecast_mean

(bool) 标志,用于防止存储预测和预测误差。

memory_no_gain

(bool) 标志以防止存储卡尔曼增益矩阵。

memory_no_likelihood

(bool) 标志,用于防止为每个观测值存储似然值。

memory_no_predicted

(bool) 标志,用于防止存储预测的状态和协方差矩阵。

memory_no_predicted_cov

(bool) 标志,用于防止存储预测状态协方差矩阵。

memory_no_predicted_mean

(bool) 标志,用于防止存储预测状态。

memory_no_smoothing

(bool) 标志,用于防止为每个观测值存储似然值。

memory_no_std_forecast

(bool) 标志,用于防止存储标准化预测误差。

memory_options

memory_store_all

(bool) 标志,用于在内存中存储所有中间结果(默认)。

obs

(数组) 观测向量: \(y~(k\_endog \times nobs)\)

obs_cov

(数组) 观测协方差矩阵: \(H~(k\_endog \times k\_endog \times nobs)\)

obs_intercept

(数组) 观测截距: \(d~(k\_endog \times nobs)\)

prefix

(str) 当前活动表示矩阵的BLAS前缀

selection

(数组) 选择矩阵: \(R~(k\_states \times k\_posdef \times nobs)\)

solve_cholesky

(bool) 用于Cholesky和线性求解器逆方法的标志(推荐)。

solve_lu

(bool) 用于LU分解和线性求解器求逆方法的标志。

stability_force_symmetry

(bool) 强制协方差矩阵对称的标志

stability_method

(整数) 稳定性方法位掩码。

stability_methods

state_cov

(数组) 状态协方差矩阵: \(Q~(k\_posdef \times k\_posdef \times nobs)\)

state_intercept

(数组) 状态截距: \(c~(k\_states \times nobs)\)

time_invariant

(bool) 当前活跃的表示矩阵是否是时间不变的

timing_init_filtered

(bool) 用于替代时间约定标志(Kim 和 Nelson,2012)。

timing_init_predicted

(bool) 默认时间约定标志(Durbin 和 Koopman,2012)。

timing_options

transition

(数组) 转移矩阵: \(T~(k\_states \times k\_states \times nobs)\)


Last update: Oct 16, 2024