You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从数据生成状态空间模型?如何用statsmodels提取SARIMAX对应矩阵?

SARIMAX状态空间矩阵提取方法

可以直接通过statsmodels获取SARIMAX对应的状态空间所有矩阵系数,操作逻辑如下:

拟合SARIMAX模型后,结果对象内置的ssm属性即为当前参数对应的状态空间实例,所有标准状态空间矩阵均存储在该实例中,可通过属性名或键值直接调取。

常用矩阵对应调取方式

  • 状态转移矩阵(T):ssm['transition'] 或 ssm.transition
  • 观测矩阵(Z):ssm['design'] 或 ssm.design
  • 状态扰动协方差矩阵(Q):ssm['state_cov'] 或 ssm.state_cov
  • 观测扰动协方差矩阵(H):ssm['obs_cov'] 或 ssm.obs_cov
  • 状态截距向量(c):ssm['state_intercept'] 或 ssm.state_intercept
  • 观测截距向量(d):ssm['obs_intercept'] 或 ssm.obs_intercept
  • 初始状态均值:ssm.initial_state_mean
  • 初始状态协方差:ssm.initial_state_cov

代码示例

import numpy as np
from statsmodels.tsa.statespace.sarimax import SARIMAX

# 模拟测试序列
np.random.seed(42)
y = np.random.normal(size=120)

# 拟合SARIMAX模型
model = SARIMAX(y, order=(1,1,1), seasonal_order=(1,1,1,12))
results = model.fit(disp=False)

# 读取状态空间实例
ssm = results.ssm

# 提取对应矩阵
transition_mat = ssm['transition']
design_mat = ssm['design']
state_cov_mat = ssm['state_cov']
obs_cov_mat = ssm['obs_cov']

如果需要获取卡尔曼滤波每一步迭代对应的动态矩阵,可从results.filter_results属性中调取对应字段。

内容的提问来源于stack exchange,提问作者giulia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 02:48:04