Statsmodels 是 Python 中用于统计建模与计量经济学的库,提供跨多种统计方法的估计、推断与诊断工具。本技能适用于从简单线性回归到复杂时间序列模型和计量经济分析的严谨统计分析。
用途
当需要拟合回归模型(OLS、WLS、GLS、分位数回归)、进行广义线性建模(Logistic、Poisson、Gamma 等)、分析离散结果(二元、多项、计数、有序)、开展时间序列分析(ARIMA、SARIMAX、VAR、预测)、运行统计检验与诊断、检验模型假设(异方差、自相关、正态性)、检测离群点与影响点、比较模型(AIC/BIC、似然比检验)、估计因果效应、生成可发表的统计表与推断时,可使用本技能。
主要能力
线性回归模型:面向连续结果,支持多种误差结构。可用模型包括 OLS、WLS、GLS、GLSAR、分位数回归、混合效应、递归/滚动回归。关键功能包括全面的诊断检验、稳健标准误(HC、HAC、聚类稳健)、影响统计量(Cook 距离、杠杆值、DFFITS)、假设检验(F 检验、Wald 检验)、模型比较(AIC、BIC、似然比检验)、带置信区间和预测区间的预测。
广义线性模型(GLM):将线性模型扩展到非正态分布的灵活框架。分布族包括 Binomial、Poisson、Negative Binomial、Gamma、Inverse Gaussian、Gaussian、Tweedie;链接函数包括 Logit、Probit、Log、Identity、Inverse、Sqrt、CLogLog、Power。关键功能包括通过 IRLS 进行最大似然估计、偏差与 Pearson 残差、拟合优度统计量、伪 R 方、稳健标准误。
离散选择模型:面向分类与计数结果。二元模型包括 Logit、Probit;多项模型包括 MNLogit、条件 Logit、有序模型;计数模型包括 Poisson、Negative Binomial、零膨胀模型(ZIP、ZINB)、Hurdle 模型。关键功能包括最大似然估计、均值处边际效应或平均边际效应、AIC/BIC 模型比较、预测概率与分类、拟合优度检验。
时间序列分析:单变量模型包括 AutoReg(AR)、ARIMA、SARIMAX、指数平滑(Simple、Holt、Holt-Winters)、ETS;多变量模型包括 VAR、VARMAX、动态因子模型、VECM;高级模型包括状态空间(Kalman 滤波、自定义设定)、区制转换(Markov switching)、ARDL。关键功能包括 ACF/PACF 分析用于模型识别、平稳性检验(ADF、KPSS)、带预测区间的预测、残差诊断(Ljung-Box、异方差)、Granger 因果检验、脉冲响应函数(IRF)、预测误差方差分解(FEVD)。
统计检验与诊断:残差诊断包括自相关检验(Ljung-Box、Durbin-Watson、Breusch-Godfrey)、异方差检验(Breusch-Pagan、White、ARCH)、正态性检验(Jarque-Bera、Omnibus、Anderson-Darling、Lilliefors)、设定检验(RESET、Harvey-Collier);影响与离群点包括杠杆值(hat values)、Cook 距离、DFFITS 与 DFBETAs、学生化残差、影响图;假设检验包括 t 检验、比例检验、卡方检验、非参数检验(Mann-Whitney、Wilcoxon、Kruskal-Wallis)、ANOVA(单因素、双因素、重复测量);多重比较包括 Tukey HSD、Bonferroni 校正、错误发现率(FDR);效应量与功效包括 Cohen's d、eta-squared、t 检验与比例的功效分析、样本量计算;稳健推断包括异方差一致标准误(HC0-HC3)、HAC 标准误(Newey-West)、聚类稳健标准误。
使用方式
Statsmodels 支持 R 风格公式,便于直观指定模型。示例:使用 import statsmodels.formula.api as smf 后,OLS 可写为 smf.ols('y ~ x1 + x2 + x1:x2', data=df).fit();分类变量自动哑变量编码写作 smf.ols('y ~ x1 + C(category)', data=df).fit();交互项 smf.ols('y ~ x1 * x2', data=df).fit() 等价于 x1 + x2 + x1:x2;多项式项写作 smf.ols('y ~ x + I(x**2)', data=df).fit();Logit 写作 smf.logit('y ~ x1 + x2 + C(group)', data=df).fit();Poisson 写作 smf.poisson('count ~ x1 + x2', data=df).fit()。ARIMA 不通过公式 API 使用,需用常规 API。模型选择与比较可使用信息准则(AIC/BIC,值越低越好)、似然比检验(嵌套模型)、交叉验证(如 KFold 计算 RMSE)。
最佳实践
数据准备:始终添加常数项(除非明确排除截距),检查缺失值并在拟合前处理或插补,必要时缩放以改善收敛与解释,通过公式 API 或手动哑变量编码处理分类变量。建模:从简单模型开始,逐步增加复杂度;检查假设;按结果类型选择合适模型(二元→Logit,计数→Poisson);假设被违反时考虑稳健方法或其他模型。推断:报告效应量而非仅 p 值;存在异方差或聚类时使用稳健标准误;进行多重比较校正;始终在点估计旁报告置信区间。模型评估:检查残差(残差 vs 拟合值图、Q-Q 图);进行影响诊断;进行样本外验证或交叉验证;非嵌套模型用 AIC/BIC 比较,嵌套模型用 LR 检验。报告:使用 .summary() 获取详细输出;记录变换与排除的观测;注意链接函数的影响(如 log 链接下 exp(β));可视化预测、置信区间与诊断。
适用场景
线性回归分析:探索数据、拟合初始 OLS、检查残差诊断、检验异方差与自相关、检查多重共线性(VIF)、识别影响点、必要时用稳健标准误重新拟合、解释系数与推断、在留出集或通过 CV 验证。
二元分类:拟合 Logistic 回归、检查收敛问题、解释优势比、计算边际效应、评估分类性能(AUC、混淆矩阵)、检查影响点、与替代模型(Probit)比较、在测试集上验证预测。
计数数据分析:拟合 Poisson 回归、检查过度离散、若过度离散则拟合 Negative Binomial、检查过量零(考虑 ZIP/ZINB)、解释率比、评估拟合优度、通过 AIC 比较模型、验证预测。
时间序列预测:绘制序列并检查趋势/季节性、平稳性检验(ADF、KPSS)、非平稳时差分、从 ACF/PACF 识别 p、q、拟合 ARIMA 或 SARIMAX、检查残差诊断(Ljung-Box)、生成带置信区间的预测、在测试集上评估预测精度。
限制
资料未提供该技能的独立安装方式、收费标准、价格、平台支持范围、性能数据或效果评测。资料仅列出参考文档路径(references/linear_models.md、references/glm.md、references/discrete_choice.md、references/time_series.md),其内容尚未完整给出。ARIMA 不通过公式 API 使用,需用常规 API。使用前需自行准备 Python 环境与相关依赖(如 numpy、pandas、matplotlib、scipy、sklearn 等,具体依赖清单资料未明确提供)。