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.api和statsmodels.formula.api进行稳定的高级导入,当示例需要更新或专门的类(如HurdleCountModel)时,直接导入模块。
何时使用此技能
在以下情况下应使用此技能:
- 拟合回归模型(OLS、WLS、GLS、分位数回归)
- 执行广义线性建模(逻辑、泊松、伽马等)
- 分析离散结果(二元、多项、计数、有序)
- 进行时间序列分析(ARIMA、SARIMAX、VAR、预测)
- 运行统计检验和诊断
- 测试模型假设(异方差性、自相关性、正态性)
- 检测异常值和影响观测
- 比较模型(AIC/BIC、似然比检验)
- 估计因果效应
- 生成可发表的统计表格和推断
快速入门、功能和模型选择
- references/quick_start_guide.md:OLS、逻辑回归、ARIMA和GLM的最小工作示例,以及如何阅读摘要。
- references/modeling_capabilities.md:线性模型、GLM、离散选择、时间序列以及统计检验和诊断。
- references/model_selection.md:R风格公式API和模型比较。
- 各主题详情:references/linear_models.md、references/glm.md、references/discrete_choice.md、references/time_series.md和references/stats_diagnostics.md。
statsmodels用于推断——标准误、置信区间和假设检验。当预测是目标且系数不需要解释时,请使用scikit-learn。
最佳实践
数据准备
- 始终添加常数项:使用
sm.add_constant(),除非排除截距 - 检查缺失值:在拟合前处理或插补
- 必要时缩放:提高收敛性和解释性(但对树模型不是必需的)
- 编码分类变量:使用公式API或手动虚拟编码
模型构建
- 从简单开始:从基本模型开始,根据需要增加复杂性
- 检查假设:测试残差、异方差性、自相关性
- 使用适当的模型:将模型与结果类型匹配(二元→Logit,计数→Poisson)
- 考虑替代方案:如果假设被违反,使用稳健方法或不同模型
推断
- 报告效应量:不仅仅是p值
- 使用稳健标准误:当存在异方差性或聚类时
- 多重比较:当检验多个假设时进行校正
- 置信区间:始终与点估计一起报告
模型评估
- 检查残差:绘制残差与拟合值、Q-Q图
- 影响诊断:识别并调查影响观测
- 样本外验证:在保留集上测试或交叉验证
- 比较模型:非嵌套模型使用AIC/BIC,嵌套模型使用LR检验
报告
- 全面摘要:使用
.summary()获取详细输出 - 记录决策:注明转换、排除的观测
- 谨慎解释:考虑链接函数(例如,log链接的exp(β))
- 可视化:绘制预测、置信区间、诊断图
常见工作流程
工作流程1:线性回归分析
- 探索数据(绘图、描述性统计)
- 拟合初始OLS模型
- 检查残差诊断
- 检验异方差性和自相关性
- 检查多重共线性(VIF)
- 识别影响观测
- 如有需要,使用稳健标准误重新拟合
- 解释系数和推断
- 在保留集或通过交叉验证进行验证
工作流程2:二元分类
- 拟合逻辑回归(Logit)
- 检查收敛问题
- 解释比值比
- 计算边际效应
- 评估分类性能(AUC、混淆矩阵)
- 检查影响观测
- 与替代模型(Probit)比较
- 在测试集上验证预测
工作流程3:计数数据分析
- 拟合泊松回归
- 检查过度离散
- 如果过度离散,拟合负二项回归
- 检查多余零(考虑ZIP/ZINB)
- 解释比率比
- 评估拟合优度
- 通过AIC比较模型
- 验证预测
工作流程4:时间序列预测
- 绘制序列,检查趋势/季节性
- 检验平稳性(ADF、KPSS)
- 如果非平稳,进行差分
- 从ACF/PACF识别p、q
- 拟合ARIMA或SARIMAX
- 检查残差诊断(Ljung-Box)
- 生成带置信区间的预测
- 在测试集上评估预测准确性
参考文档
此技能包含全面的参考文件,提供详细指导:
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
需要避免的常见陷阱
- 忘记常数项:始终使用
sm.add_constant(),除非不需要截距 - 忽略假设:检查残差、异方差性、自相关性
- 结果类型使用错误模型:二元→Logit/Probit,计数→Poisson/NB,而不是OLS
- 不检查收敛:注意优化警告
- 误解系数:记住链接函数(log、logit等)
- 使用泊松处理过度离散:检查离散度,必要时使用负二项
- 不使用稳健标准误:当存在异方差性或聚类时
- 过拟合:相对于样本量参数过多
- 数据泄漏:在测试数据上拟合或使用未来信息
- 不验证预测:始终检查样本外性能
- 比较非嵌套模型:使用AIC/BIC,而不是LR检验
- 忽略影响观测:检查Cook距离和杠杆值
- 多重检验:当检验多个假设时校正p值
- 不对时间序列进行差分:在非平稳数据上拟合ARIMA
- 混淆预测区间和置信区间:预测区间更宽
获取帮助
有关详细文档和示例:




