技能statsmodels
S

statsmodels

Python 的统计建模库。当你需要特定模型类(OLS、GLM、混合效应模型、ARIMA)并配有详细诊断、残差与推断时使用。最适合计量经济学、时间序列以及进行严格推断并生成系数表。欲进行有指导的统计检验选择并以 APA 格式报告,请使用 statistical-analysis。

Statsmodels:Python 统计建模与计量经济学分析库

技能概述

Statsmodels 是 Python 中用于统计建模和计量经济学分析的顶级库,提供从简单线性回归到复杂时间序列模型的全面统计推断、诊断和可视化功能,特别适合需要严谨统计推断和出版级结果输出的学术研究和专业分析场景。

适用场景

1. 回归建模与统计推断

当您需要对连续型因变量进行回归分析并获得系数显著性检验、置信区间和诊断统计量时,Statsmodels 提供完整的 OLS、WLS、GLS 等线性模型,以及异方差一致性标准误、影响统计量和模型比较检验。相比机器学习库,Statsmodels 侧重参数估计的统计性质和推断,是经济学、社会科学和医学研究的理想工具。

2. 时间序列分析与预测

处理金融、经济或科学观测数据时,Statsmodels 提供 ARIMA、SARIMAX、VAR 等时间序列模型,支持平稳性检验(ADF、KPSS)、自相关分析(ACF/PACF)、带置信区间的预测和 Granger 因果检验。无论是股价预测、宏观经济指标分析还是传感器数据建模,都能获得统计严谨的预测结果和诊断报告。

3. 广义线性模型与分类计数分析

对于二元选择(Logit/Probit)、计数数据(Poisson/Negative Binomial)或有序离散结果,Statsmodels 提供 GLM 框架和离散选择模型,支持多种分布族和链接函数,自动计算边际效应和优势比,适合市场研究、生物统计和社会调查中的分类数据分析。

核心功能

1. 线性回归模型套件

Statsmodels 提供完整的线性模型工具箱,包括 OLS(普通最小二乘法)、WLS(加权最小二乘法)、GLS(广义最小二乘法)、分位数回归和混合效应模型,内置 Breusch-Pagan 异方差检验、Durbin-Watson 自相关检验、VIF 多重共线性诊断、Cook's 距离影响统计量和 AIC/BIC 模型比较,使用 R 风格公式 API 可以轻松指定交互项、多项式和分类变量。

2. 时间序列建模与预测

支持 AR、ARIMA、SARIMAX、指数平滑(Holt-Winters)、VAR 等单变量和多变量时间序列模型,提供 ACF/PACF 自相关图、平稳性检验、带预测区间的滚动预测、脉冲响应函数(IRF)和方差分解(FEVD),内置 Ljung-Box 残差检验确保模型假设成立,适合短期预测和长期动态分析。

3. 统计检验与诊断工具

涵盖 t 检验、方差分析(ANOVA)、卡方检验、Mann-Whitney 等参数和非参数检验,支持多重比较校正(Tukey HSD、Bonferroni、FDR)和效应量计算(Cohen's d),提供残差正态性检验(Jarque-Bera、Anderson-Darling)、设定检验(RESET)和稳健标准误(HC0-HC3、Newey-West HAC),全面验证模型假设和数据质量。

常见问题

Statsmodels 和 scikit-learn 有什么区别?什么时候用哪个?

Statsmodels 专注于统计推断和解释,提供详细的系数表、显著性检验、置信区间和诊断统计量,适合学术研究、计量经济学和需要解释变量影响关系的场景。scikit-learn 侧重预测性能和机器学习工作流,提供交叉验证、超参数调优和丰富的算法库,适合分类预测、回归预测和模型部署。如果您的目标是理解变量关系并获得出版级统计表格,选择 Statsmodels;如果目标是最大化预测准确率,选择 scikit-learn。

如何用 Statsmodels 做线性回归并获得显著性检验?

使用 statsmodels.api 模块,先调用 sm.add_constant(X) 为设计矩阵添加截距项,然后用 sm.OLS(y, X) 拟合模型,调用 .fit() 获得结果对象。结果对象的 .summary() 方法会输出完整的回归系数表,包含系数估计值、标准误、t 统计量和 p 值,以及模型拟合优度(R²、调整 R²)、F 统计量和 AIC/BIC 信息准则。代码示例:model = sm.OLS(y, sm.add_constant(X)); results = model.fit(); print(results.summary()),您可以用 results.pvalues 查看 p 值,results.conf_int() 获得置信区间。

Statsmodels 支持哪些时间序列模型?如何选择 ARIMA 参数?

Statsmodels 支持自回归(AR)模型、ARIMA(自回归积分移动平均)模型、SARIMAX(季节性 ARIMA 含外生变量)、向量自回归(VAR)、指数平滑(Simple、Holt、Holt-Winters)和状态空间模型。选择 ARIMA 参数时,先使用 adfuller 进行 ADF 平稳性检验决定差分阶数 d,然后绘制 ACF 和 PACF 相关图识别 AR 阶数 p 和 MA 阶数 q(ACF 截尾提示 MA,PACF 截尾提示 AR),使用 ARIMA(y, order=(p,d,q)) 拟合后检查 .plot_diagnostics() 残差图和 Ljung-Box 检验,确保残差无自相关。