ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

statsmodels 早期版本演进全览:从 0.1.0b1 到 0.5.0 的功能里程碑与 API 变迁

statsmodels 早期版本演进全览:从 0.1.0b1 到 0.5.0 的功能里程碑与 API 变迁 数据分析数据科学科研【免费下载链接】statsmodelsStatsmodels: statistical modeling and econometrics in Python项目地址https://gitcode.com/gh_mirrors/st/statsmodels点击查看免费下载本文基于 statsmodels 仓库中记录 0.5.0 之前全部发布历史的文档 docs/source/release/old_changes.rst系统梳理该项目从初始发布到 0.5.0 的演进脉络涵盖 pandas 依赖引入、patsy 公式体系、时间序列分析tsa子包、离散选择模型、经验似然等关键里程碑并结合当前仓库源码逐一印证这些历史特性在今日代码库中的落点。读完本文你将能够理解 statsmodels 核心模块命名的由来、大量 API 变迁的来龙去脉以及如何通过阅读发布历史快速定位现代 API 的前身。一、文档定位一份 Pre 0.5.0 的完整发布史old_changes.rst在docs/source/release/目录中与 version0.5.rst 至 version0.15.0.rst 等逐版本发布说明并列其标题即为 Pre 0.5.0 Release History覆盖从0.1.0b1初始发布到0.5.0的 8 个版本节点。它与 0.5.0 之后的正式发布说明如 version0.5.rst 中记录的 38 位作者、2032 次提交、380 个已关闭 issue共同构成 statsmodels 的完整演进档案。这份文档的价值在于它记录了一个统计建模库从 实验室脚本集合 走向 规范化的 pandas/scipy 生态一员 的完整过程0.2.0 完成命名规范化、0.3.0 完成目录重构并引入api.py、0.4.0 引入 pandas 依赖与 Python 3 兼容、0.5.0 引入 patsy 公式体系。理解这些变迁有助于解释今日statsmodels代码库中许多看似奇怪的模块布局与命名惯例。二、0.5.0公式体系、GSoC 项目与生态整合0.5.0 是文档中篇幅最大、信息量最密集的版本其核心是引入了patsy 公式依赖并收入了多个 Google Summer of Code 2012 项目成果。1. 基于 patsy 的公式集成0.5.0 将 patsy 提升为硬依赖用户从此可以用 R 风格公式建模。文档给出的典型工作流为import numpy as np import pandas as pd import statsmodels.formula.api as smf # 拟合回归模型其中一个回归元取自然对数 results smf.ols(Lottery ~ Literacy np.log(Pop1831), datadata).fit()这一设计延续至今当前仓库 statsmodels/formula/api.py 中ols lm_.OLS.from_formula、glm glm_.GLM.from_formula、logit dm_.Logit.from_formula等 21 个公式入口全部经由各模型的from_formula类方法实现覆盖了gls、wls、glsar、mixedlm、rlm、mnlogit、probit、poisson、negativebinomial、quantreg、phreg、gee系乃至conditional_logit等条件模型。同时t_test/f_test也支持以公式字符串指定线性假设替代了旧的q_matrix关键字。2. 经验似然GSoC 2012 项目文档记载 0.5.0 引入了基于经验似然Empirical Likelihood的推断框架覆盖描述统计推断、回归模型推断与加速失效时间模型AFT。当前 statsmodels/emplike/api.py 的__all__完整保留了这一家族ANOVAEL 方差分析、DescStat/DescStatUV/DescStatMV单变量/多变量描述统计、ELOriginRegress过原点回归、emplikeAFT随机右删失下线性回归的加速失效时间模型对应实现文件为 statsmodels/emplike/elanova.py、descriptive.py、originregress.py、aft_el.py。3. 多元核密度与核回归另一个 GSoC 2012 成果是多元核密度估计与核回归sm.nonparametric.KDEMultivariate位于 statsmodels/nonparametric/kernel_density.py支持最小二乘与最大似然交叉验证带宽选择可处理连续、有序与无序类别混合数据sm.nonparametric.KDEMultivariateConditional同一文件 L414条件密度估计sm.nonparametric.KernelRegstatsmodels/nonparametric/kernel_regression.py基于乘积核的回归支持混合数据类型与交叉验证kernel_regression.KernelCensoredReg同一文件 L563删失核回归。4. 分位数回归与负二项回归sm.QuantRegstatsmodels/regression/quantile_regression.py分位数回归可用核密度估计量计算渐近协方差矩阵并支持带宽选择sm.NegativeBinomialstatsmodels/discrete/discrete_model.py计数数据的极大似然负二项模型。文档提到的NB1、NB2、geometric三种方差设定在源码中体现为loglike_method参数的{nb2, nb1, geometric}取值其中 geometric 为alpha0的特例。5. l1 惩罚的离散选择模型Logit、Probit、MNLogit、Poisson 新增 l1 线性惩罚估计可将接近零的参数压缩至零适合高维解释变量场景。CVXOPT成为可选依赖。6. 图形系统大规模升级0.5.0 在 statsmodels/graphics 下新增/重构了多个绘图设施ProbPlotgofplots.py统一 P-P、Q-Q 与概率图接口支持分布拟合、参考线以及other关键字对比两组样本import numpy as np import statsmodels.api as sm x np.random.normal(loc1.12, scale0.25, size37) y np.random.normal(loc0.75, scale0.45, size37) ppx sm.ProbPlot(x) ppy sm.ProbPlot(y) fig1 ppx.qqplot() fig2 ppx.qqplot(otherppy)Mosaic 图mosaicplot.py基于列联表可视化多元类别数据Interaction 图factorplots.py支持类别因子回归诊断图重构regressionplots.pyplot_fit、plot_regress_exog、plot_partregress、plot_ccpr、abline_plot、influence_plot、plot_leverage_resid2均可直接处理 pandas 对象与 Results 实例。7. 功效与样本量计算0.5.0 建立了statsmodels.stats.power模块statsmodels/stats/power.py实现 t 检验TTestPower、TTestIndPower、正态检验NormIndPower、F 检验FTestPower、FTestAnovaPower与卡方拟合优度GofChisquarePower的功效/样本量计算并配套tt_solve_power、tt_ind_solve_power、zt_ind_solve_power便捷函数。8. 时间序列ARIMA 与 pandas 日期集成0.5.0 新增 ARIMA 建模及 AR/ARMA 模型的动态样本内预测并全面支持 pandas 各频率通过 DatetimeIndex 智能处理预测日期。当前仓库中tsa子包已演进为 statsmodels/tsa 下的arima、arima_model、vector_ar、statespace、filters等多个模块但 0.5.0 奠定的pandas 进、pandas 出设计一直延续。9. 其他重要新特性OLS 影响与离群值诊断get_influence与outlier_test挂载到 Results 实例实现类为 statsmodels/stats/outliers_influence.py 的OLSInfluenceStata 写入sm.iolib.StataWriter支持写出.dta文件statsmodels/iolib/foreign.py与 0.4.0 已有的genfromdta读取形成闭环R 数据集访问sm.datasets.get_rdataset提供对 Rdatasets 的访问并带缓存数值微分升级sm.tools.numdiff全面覆盖 Ridout (2009) 复步法complex-step数值微分statsmodels/tools/numdiff.py一致的常数项与缺失值处理各模型新增missing关键字取值none默认不检查、drop删除缺失、raise遇缺失即报错结果统计不再依赖模型含常数项这一假设新统计检验Cohens kappa 与 Fleiss kappa 一致性检验、比例统计量、Tukey HSD 多重比较sm.stats.multicomp.MultiComparison位于 statsmodels/stats/multicomp.py、pairwise_tukeyhsd、加权统计与 t 检验增强、基于 t/z 的单样本与配对/独立两样本等价性检验TOST。10. 0.5.0 的关键 bug 修复与弃用修复 WLS/GLS 后估计统计量依赖中心化总平方和导致的错误无常数项的过原点回归改用非中心化总平方和计算R^2弃用项包括t_test/f_test的q_matrix关键字、sm.tsa.acf的conf_int、VAR/SVAR 的names参数、ARMA.fit 的order关键字改为构造时传入、ECDF旧路径迁移至statsmodels.distributions、离散模型的margeff方法改名为get_margeff与resid属性改为resid_dev、KDE类更名为KDEUnivariateCython 从可选变为必需从源码构建需要 C 编译器与 Cython。三、0.4.x 系列pandas 依赖落地与兼容性战役0.4.0架构性大版本0.4.0 是文档中另一个重量级版本核心变化包括加入 pandas 依赖全面支持 Series/DataFrame 对象使用 pandas 对象拟合时Results 实例也返回 pandas 对象Cython 自动构建在存在 cython 与编译器时自动编译KDE 因此显著加速对应 statsmodels/nonparametric/kde.py时间序列模型支持日期绘图新增 Violin、Bean、QQ 图新增 lowess 函数当前实现见 statsmodels/nonparametric/smoothers_lowess.py完整 Python 3 兼容Stata 读取重构genfromdta将.dta转为保留全部类型的结构化数组且大幅提速模型/结果可 pickle通过save/load持久化可选保存模型数据OLS 离群值与影响诊断、新增 El Nino 海表温度数据集若干破坏性变更废弃scikits命名空间推荐import statsmodels.api as smpredict方法签名改为(params, exog, ...)MNLogit 参数转置以与其他多方程模型一致ECDF、monotone_fn_inverter、StepFunction从tools.tools迁往statsmodels.distributions。0.4.1bug 修复与功能补强修复 lowess 距离计算、GLM 的 CDFlink 导数、adfuller的_autolag最优滞后计算、het_arch/het_lm的 autolag 与存储选项、GLSAR 在lag1时错误的白化新增稳健 sandwich 协方差估计量移出 sandbox现位于 statsmodels/stats/sandwich_covariance.pylowess 及相关函数进入 api 与文档模块重命名旧导入路径下一版本移除兼容 pandas 0.8图形新增ABLine 图与interaction 图。0.4.2 与 0.4.3专项修复0.4.2 主要面向大端Big-Endian机器修复 MNLogit 的 summary 方法、tsa.filters.hp_filter在大端机器上避免使用 umfpackscipy bug对应实现见 statsmodels/tsa/filters/hp_filter.py其余为测试套件的精度修正。0.4.3 则是为适配 Python 3.2.32to3 行为变化的纯兼容性版本。四、0.3.x目录重构与 tsa 子包的诞生0.3.0api.py 与模块重命名0.3.0 引入api.py确立import statsmodels.api as sm的推荐用法同时通过按需导入避免不必要的依赖加载、提升导入速度。伴随的是大规模模块迁移文档逐一列出了新旧路径对照映射到今天均可在仓库中验证旧路径新路径sandbox/output.pyiolib/table.pylib/io.pyiolib/foreign.py含 Stata.dta读取familyfamiliesfamilies.links.inversefamilies.links.inverse_powerregression.pyregression/linear_model.pydiscretemod.pydiscrete/discrete_model.pyrlm.pyrobust/robust_linear_model.pyglm.pygenmod/generalized_linear_model.pymodel.pybase/model.pyt()方法tvalues属性t()保留但告警同版本还新增了 GLM 的 offset/exposure 支持、多重检验校正现见 statsmodels/stats/multitest.py、sandbox 中的广义矩估计GMM框架以及时间序列分析tsa子包VARtsa.VAR现位于 statsmodels/tsa/vector_arARtsa.AR后续演变为 statsmodels/tsa/ar_model.py 中的AutoRegARMAtsa.ARMA可选 Cython 卡尔曼滤波setup.py install --with-cython启用其后代即今日的 statsmodels/tsa/arima 与 statsmodels/tsa/statespace三个经典滤波器Baxter-King 带通statsmodels/tsa/filters/bk_filter.py、Hodrick-Prescotthp_filter.py、Christiano-Fitzgeraldcf_filter.py。0.3.1小幅修正移除仅限学术用途的 WFS 数据集修复 Windows 上的easy_install问题。五、0.2.0 与 0.1.0b1命名规范化的起点0.2.0 完成了大量命名一致性工作RLM.fitted_values→RLM.fittedvaluesGLMResults.resid_dev→GLMResults.resid_devianceGLM/回归结果改为惰性计算属性带_cache这一模式在 statsmodels/base/model.py 中延续至今移除测试对 RPy 的依赖新增PyDTA读取 Stata.dta二进制文件并转为 numpy 数组tools.categorical大幅加固add_constant新增prepend参数修复 GLS 在单列设计矩阵下的问题。新增四个数据集均保留在 statsmodels/datasets 中ANES96美国全国选举研究 1996、Grunfeld (1950) 投资数据、Spector-Mazzeo (1980) 项目有效性数据、美国宏观数据macrodata。同时新增四个离散因变量极大似然估计器Logit、Probit、MNLogit、Poisson全部位于 statsmodels/discrete/discrete_model.py。sandbox 中则添入 qqplot、tsa 与 anova 实验、主成分分析、似无关回归与两阶段最小二乘Sem2SLS以及受限最小二乘RLS。0.1.0b1是文档记载的初始发布仅一行标志 statsmodels 作为独立项目的起点。六、贯穿性主题从历史变迁理解现代代码库回看这份发布史可以提炼出三条至今仍影响代码库的演进主线pandas 深度集成是反复出现的主题0.2.0 引入 pandas 数据结构支持、0.4.0 确立 pandas 依赖与pandas 进、pandas 出、0.5.0 支持全部 pandas 频率。今天的 statsmodels/base/data.py 与各模型的结果包装器仍是这一设计的直接继承者。sandbox → 正式模块的成熟路径稳健 sandwich 协方差、GMM、SUR、RLS、ECDF 等均先在statsmodels/sandbox实验成熟后再迁入正式命名空间——这正是 0.3.0 大规模重命名清单的由来也解释了为什么今天仓库里仍保留着 statsmodels/sandbox 目录。API 稳定性与弃用纪律从 0.2.0 的fitted_values→fittedvalues、0.3.0 的t()→tvalues、0.5.0 的margeff→get_margeff可以看出项目宁可保留告警过渡也尽量不静默破坏用户代码这一纪律延续至 CHANGES.md 与各版本versionX.Y.rst的逐版本记录中。七、如何继续追溯0.5.0 的完整发布说明含 38 位作者名单、172 个 PR 与 208 个 issue 的完整清单见 docs/source/release/version0.5.rst0.6.0 之后的逐版本记录见 docs/source/release/version0.6.rst 至 version0.15.0.rst若要在当前代码中验证某个历史 API推荐先grep相应模块的__init__.py与api.py如 statsmodels/api.py、statsmodels/formula/api.py、statsmodels/graphics/api.py再对照本文章中的模块迁移表即可快速定位任一历史功能的现代入口。赞分享数据分析数据科学科研【免费下载链接】statsmodelsStatsmodels: statistical modeling and econometrics in Python项目地址https://gitcode.com/gh_mirrors/st/statsmodels点击查看免费下载相关推荐Harbor 版本演进全览从 v0.1.0 到 v1.8.0 的关键功能里程碑解析Harbor 版本演进全览从 v0.1.0 到 v1.8.0 的关键功能里程碑解析 Harbor 是一款开源的云原生制品仓库用于内容的存储、签名与安全扫描。后端云原生镜像仓库AirSim 版本演进全览从 v1.0 到 v1.7 的重要功能与 API 变迁AirSim 版本演进全览从 v1.0 到 v1.7 的重要功能与 API 变迁 AirSim 是微软 AI Research 开源的自主车辆仿真器基于自动驾驶人工智能深度学习强化学习计算机视觉科研Notepad--3大跨平台优势打造你的国产文本编辑器Notepad 3大跨平台优势打造你的国产文本编辑器 Notepad 是一款专为中文用户设计的跨平台文本编辑器完美支持 Windows、Linux 和 ma桌面应用上一篇MiroThinker推理框架选型Ollama vs vLLM vs TGI性能测试终极指南下一篇TensorFlowOnSpark 使用教程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表