statsmodels

statsmodels

热门

用于Python的统计模型库。当您需要具有详细诊断、残差和推断的特定模型类(OLS、GLM、混合模型、ARIMA)时使用。最适合计量经济学、时间序列、带有系数表的严格推断。如需带APA报告的引导式统计检验选择,请使用statistical-analysis。

3.8万Star
3574Fork
更新于 2026/8/29
SKILL.md
只读
名称
statsmodels
描述

用于Python的统计模型库。当您需要具有详细诊断、残差和推断的特定模型类(OLS、GLM、混合模型、ARIMA)时使用。最适合计量经济学、时间序列、带有系数表的严格推断。如需带APA报告的引导式统计检验选择,请使用statistical-analysis。

Statsmodels:统计建模与计量经济学

概述

Statsmodels是Python首屈一指的统计建模库,为广泛的统计方法提供估计、推断和诊断工具。应用此技能进行严格的统计分析,从简单线性回归到复杂时间序列模型和计量经济分析。

当前兼容性

示例针对statsmodels 0.14.6(2025年12月5日发布)。为了可重现的环境,请固定主要包版本:

uv pip install statsmodels==0.14.6

使用statsmodels.apistatsmodels.formula.api进行稳定的高级导入,当示例需要更新或专门的类(如HurdleCountModel)时,直接导入模块。

何时使用此技能

在以下情况下应使用此技能:

  • 拟合回归模型(OLS、WLS、GLS、分位数回归)
  • 执行广义线性建模(逻辑、泊松、伽马等)
  • 分析离散结果(二元、多项、计数、有序)
  • 进行时间序列分析(ARIMA、SARIMAX、VAR、预测)
  • 运行统计检验和诊断
  • 测试模型假设(异方差性、自相关性、正态性)
  • 检测异常值和影响观测
  • 比较模型(AIC/BIC、似然比检验)
  • 估计因果效应
  • 生成可发表的统计表格和推断

快速入门、功能和模型选择

statsmodels用于推断——标准误、置信区间和假设检验。当预测是目标且系数不需要解释时,请使用scikit-learn。

最佳实践

数据准备

  1. 始终添加常数项:使用sm.add_constant(),除非排除截距
  2. 检查缺失值:在拟合前处理或插补
  3. 必要时缩放:提高收敛性和解释性(但对树模型不是必需的)
  4. 编码分类变量:使用公式API或手动虚拟编码

模型构建

  1. 从简单开始:从基本模型开始,根据需要增加复杂性
  2. 检查假设:测试残差、异方差性、自相关性
  3. 使用适当的模型:将模型与结果类型匹配(二元→Logit,计数→Poisson)
  4. 考虑替代方案:如果假设被违反,使用稳健方法或不同模型

推断

  1. 报告效应量:不仅仅是p值
  2. 使用稳健标准误:当存在异方差性或聚类时
  3. 多重比较:当检验多个假设时进行校正
  4. 置信区间:始终与点估计一起报告

模型评估

  1. 检查残差:绘制残差与拟合值、Q-Q图
  2. 影响诊断:识别并调查影响观测
  3. 样本外验证:在保留集上测试或交叉验证
  4. 比较模型:非嵌套模型使用AIC/BIC,嵌套模型使用LR检验

报告

  1. 全面摘要:使用.summary()获取详细输出
  2. 记录决策:注明转换、排除的观测
  3. 谨慎解释:考虑链接函数(例如,log链接的exp(β))
  4. 可视化:绘制预测、置信区间、诊断图

常见工作流程

工作流程1:线性回归分析

  1. 探索数据(绘图、描述性统计)
  2. 拟合初始OLS模型
  3. 检查残差诊断
  4. 检验异方差性和自相关性
  5. 检查多重共线性(VIF)
  6. 识别影响观测
  7. 如有需要,使用稳健标准误重新拟合
  8. 解释系数和推断
  9. 在保留集或通过交叉验证进行验证

工作流程2:二元分类

  1. 拟合逻辑回归(Logit)
  2. 检查收敛问题
  3. 解释比值比
  4. 计算边际效应
  5. 评估分类性能(AUC、混淆矩阵)
  6. 检查影响观测
  7. 与替代模型(Probit)比较
  8. 在测试集上验证预测

工作流程3:计数数据分析

  1. 拟合泊松回归
  2. 检查过度离散
  3. 如果过度离散,拟合负二项回归
  4. 检查多余零(考虑ZIP/ZINB)
  5. 解释比率比
  6. 评估拟合优度
  7. 通过AIC比较模型
  8. 验证预测

工作流程4:时间序列预测

  1. 绘制序列,检查趋势/季节性
  2. 检验平稳性(ADF、KPSS)
  3. 如果非平稳,进行差分
  4. 从ACF/PACF识别p、q
  5. 拟合ARIMA或SARIMAX
  6. 检查残差诊断(Ljung-Box)
  7. 生成带置信区间的预测
  8. 在测试集上评估预测准确性

参考文档

此技能包含全面的参考文件,提供详细指导:

references/linear_models.md

线性回归模型的详细覆盖,包括:

  • OLS、WLS、GLS、GLSAR、分位数回归
  • 混合效应模型
  • 递归和滚动回归
  • 全面诊断(异方差性、自相关性、多重共线性)
  • 影响统计和异常值检测
  • 稳健标准误(HC、HAC、聚类)
  • 假设检验和模型比较

references/glm.md

广义线性模型的完整指南:

  • 所有分布族(二项、泊松、伽马等)
  • 链接函数及其使用时机
  • 模型拟合和解释
  • 伪R平方和拟合优度
  • 诊断和残差分析
  • 应用(逻辑、泊松、伽马回归)

references/discrete_choice.md

离散结果模型的全面指南:

  • 二元模型(Logit、Probit)
  • 多项模型(MNLogit、条件Logit)
  • 计数模型(泊松、负二项、零膨胀、Hurdle)
  • 有序模型
  • 边际效应和解释
  • 模型诊断和比较

references/time_series.md

深入的时间序列分析指导:

  • 单变量模型(AR、ARIMA、SARIMAX、指数平滑)
  • 多变量模型(VAR、VARMAX、动态因子)
  • 状态空间模型
  • 平稳性检验和诊断
  • 预测方法和评估
  • 格兰杰因果、IRF、FEVD

references/stats_diagnostics.md

全面的统计检验和诊断:

  • 残差诊断(自相关性、异方差性、正态性)
  • 影响和异常值检测
  • 假设检验(参数和非参数)
  • 方差分析和事后检验
  • 多重比较校正
  • 稳健协方差矩阵
  • 功效分析和效应量

何时参考:

  • 需要详细的参数解释
  • 在相似模型之间选择
  • 排除收敛或诊断问题
  • 理解特定检验统计量
  • 寻找高级功能的代码示例

搜索模式:

# 查找特定模型的信息
rg "Quantile Regression" references/

# 查找诊断检验
rg "Breusch-Pagan" references/stats_diagnostics.md

# 查找时间序列指导
rg "SARIMAX" references/time_series.md

需要避免的常见陷阱

  1. 忘记常数项:始终使用sm.add_constant(),除非不需要截距
  2. 忽略假设:检查残差、异方差性、自相关性
  3. 结果类型使用错误模型:二元→Logit/Probit,计数→Poisson/NB,而不是OLS
  4. 不检查收敛:注意优化警告
  5. 误解系数:记住链接函数(log、logit等)
  6. 使用泊松处理过度离散:检查离散度,必要时使用负二项
  7. 不使用稳健标准误:当存在异方差性或聚类时
  8. 过拟合:相对于样本量参数过多
  9. 数据泄漏:在测试数据上拟合或使用未来信息
  10. 不验证预测:始终检查样本外性能
  11. 比较非嵌套模型:使用AIC/BIC,而不是LR检验
  12. 忽略影响观测:检查Cook距离和杠杆值
  13. 多重检验:当检验多个假设时校正p值
  14. 不对时间序列进行差分:在非平稳数据上拟合ARIMA
  15. 混淆预测区间和置信区间:预测区间更宽

获取帮助

有关详细文档和示例: