statsmodels.tsa-时间序列分析的核心模块



一段话总结

statsmodels.tsa 是用于时间序列分析的核心模块,包含丰富的模型类和工具函数,涵盖线性模型(如AR、ARMA、VAR)与非线性模型(如Markov切换模型)。其核心功能包括 描述性统计分析(自相关ACF、偏自相关PACF、周期图)统计测试(单位根测试ADF/KPSS、Granger因果检验、协整检验)参数估计(极大似然MLE、条件最小二乘、卡尔曼滤波),以及时间序列滤波(Baxter-King、Hodrick-Prescott)、确定性过程建模(时间趋势、季节性) 和预测模型(Theta模型、STL分解后预测)等,支持从数据诊断、模型拟合到预测的全流程时间序列分析。


思维导图

## **statsmodels.tsa 模块概述**
- 核心功能时间序列分析建模与预测
- 模型类型线性模型AR/ARMA/VAR)、非线性模型Markov切换
## **描述性统计与测试**
- 统计工具ACFPACF周期图交叉相关CCF
- 假设检验单位根测试ADF/KPSS)、协整检验Granger因果检验Ljung-Box Q统计量
## **模型估计方法**
- 极大似然估计MLE
- 条件最小二乘
- 卡尔曼滤波
## **核心模型**
- 单变量模型ARARMAARIMA指数平滑Simple/Holt/Holt-Winters
- 扩展模型ARDLECM误差修正模型)、VAR/VECM
- 状态空间模型ETS模型线性指数平滑
## **时间序列工具**
- 滤波工具BK滤波HP滤波Christiano-Fitzgerald滤波
- 确定性过程时间趋势季节性傅里叶级数
- 辅助功能滞后矩阵生成插值Denton法
## **预测与结果**
- 预测模型Theta模型STL分解后预测
- 结果类PredictionResults预测值方差区间

详细总结

1. 模块概述

statsmodels.tsa 是专注于时间序列分析的Python模块,提供 模型类、统计工具与辅助函数,支持从数据诊断到预测的全流程分析。核心覆盖:
- 线性模型:单变量AR、ARMA、ARIMA,向量VAR、VECM;
- 非线性模型:Markov切换动态回归/自回归;
- 关键功能:描述性统计、参数估计、滤波、确定性过程建模、预测等。

2. 描述性统计与测试

提供时间序列的经验属性分析及假设检验工具,核心函数如下:

类别 核心函数/工具 功能描述
相关性分析 acfpacfccf 计算自相关、偏自相关、交叉相关函数
单位根测试 adfullerkpsszivot_andrews 检验序列平稳性(ADF/KPSS)及结构断点单位根
因果与协整 grangercausalitytestscoint Granger非因果检验、协整检验
其他检验 bdsq_statbreakvar_heteroskedasticity_test 独立性检验、Ljung-Box Q统计量、残差异方差检验

3. 模型与估计

(1)单变量模型
  • AR模型:通过 ar_model.AutoReg 实现,支持条件/精确MLE、条件最小二乘估计,可纳入外生变量(AR-X模型)。
  • ARMA/ARIMA模型arima.model.ARIMA 支持多种估计方法(Hannan-Rissanen法、卡尔曼滤波MLE),继承状态空间模型功能(预测、残差诊断、脉冲响应)。
  • 指数平滑:包括 SimpleExpSmoothingHoltHoltWinters 等,另有基于状态空间的 ETSModel,支持预测区间与模拟。
(2)扩展模型
  • ARDL模型ardl.ARDL 结合自回归与分布滞后,支持确定性过程(时间趋势、季节性),参数估计用条件MLE。
  • ECM模型ardl.UECM 作为ARDL的重参数化形式,用于分析变量短期调整与长期均衡关系,配套 BoundsTestResult 协整检验。
  • 向量模型vector_ar 模块提供VAR、VECM,支持脉冲响应、预测误差方差分解。
(3)估计方法
  • 核心方法:精确/条件极大似然(MLE)条件最小二乘卡尔曼滤波,适用于ARMA、状态空间模型等复杂场景。

4. 时间序列滤波与工具

  • 滤波工具
  • bkfilter(Baxter-King带通滤波)、hpfilter(Hodrick-Prescott滤波)、cffilter(Christiano-Fitzgerald滤波),用于提取趋势或周期成分。
  • 辅助功能
  • 滞后变量生成:lagmatadd_lag
  • 插值:dentonm(低频转高频数据);
  • 确定性过程:DeterministicProcess 及子类(TimeTrendSeasonalityFourier),简化趋势与季节性建模。

5. 预测与结果

  • 预测模型ThetaModel(结合线性趋势与指数平滑)、STL分解后预测;
  • 结果输出PredictionResults 类包含预测均值、方差及区间,支持模型评估与可视化。

关键问题

  1. 问题statsmodels.tsa 中用于检验时间序列平稳性的核心统计测试有哪些?各自的用途是什么?
    答案:核心测试包括:① adfuller(Augmented Dickey-Fuller test)检验序列是否存在单位根(非平稳);② kpss(Kwiatkowski-Phillips-Schmidt-Shin test)检验序列是否为平稳过程(默认假设为平稳);③ zivot_andrews 用于存在结构断点时的单位根检验。这些测试是时间序列建模前的数据诊断基础,确保模型适用性。

  2. 问题:ARMA模型在 statsmodels.tsa 中的估计方法及核心功能是什么?
    答案:ARMA模型通过 arima.model.ARIMA 类实现,估计方法包括条件极大似然(Hannan-Rissanen法)和全极大似然(卡尔曼滤波)。核心功能涵盖参数估计、残差诊断、脉冲响应分析、预测(含区间预测)及模拟,支持结合外生变量与确定性过程(如趋势、季节性)。

  3. 问题:时间序列滤波工具(如BK、HP滤波)在 statsmodels.tsa 中的作用及典型应用场景是什么?
    答案:滤波工具用于分离时间序列的趋势、周期或噪声成分:① hpfilter 常用于提取宏观经济数据(如GDP)的长期趋势;② bkfilter 专注于提取特定周期(如商业周期);③ cffilter 适用于非对称数据的随机游走滤波。典型应用包括经济周期分析、趋势预测及数据预处理。