Release 0.9.0

发布摘要

statsmodels 使用 GitHub 来存储更新的文档,这些文档可以在 https://www.statsmodels.org/stable 上找到最新发布版本,以及 https://www.statsmodels.org/devel/ 上找到开发版本。

警告

对于新功能,API的稳定性无法保证,尽管在可能的情况下,即使在这种情况下,更改也会以向后兼容的方式进行。新功能的稳定性取决于它已经在statsmodels主分支中存在的时间以及它已经获得的使用的多少。如果有特定的已知问题或限制,那么它们会在文档字符串中提到。

此版本的拉取请求列表可以在github上找到 https://github.com/statsmodels/statsmodels/pulls?utf8=%E2%9C%93&q=is%3Apr+is%3Amerged+milestone%3A0.9 (该列表不包括一些在0.8版本发布之前合并但未包含在0.8中的拉取请求。)

亮点

  • 状态空间重构,马尔可夫切换金平滑器

  • 3 个 Google 暑期代码 (GSOC) 项目合并 - 分布式估计 - VECM 和 VAR 的增强(包括协整检验) - 新计数模型:广义泊松,零膨胀模型

  • 贝叶斯混合GLM

  • 高斯插补

  • 新的多元方法:因子分析、多元方差分析(MANOVA)、ANOVA中的重复测量

  • GLM 除了 freq_weights 之外的 var_weights

  • 霍尔特-温特斯和指数平滑

新功能 - 概览

以下列出了 statsmodels 0.9 的主要新特性。此外,版本 0.9 还包括许多领域的错误修复、重构和改进。

base
  • 分布式估计 #3396 (Leland Bybee GSOC, Kerby Shedden)

  • 优化选项 scipy 最小化 #3193 (Roman Ring)

  • Box-Cox #3477 (尼尔斯·沃达)

  • t_test_pairwise #4365 (约瑟夫·珀克托德)

discrete
  • new count models (Evgeny Zhurko GSOC, Josef Perktold)
    • NegativeBinomialP #3832 已合并到 #3874

    • GeneralizedPoisson #3727 已合并到 #3795

    • 零膨胀计数模型 #3755 合并到 #3908

  • 离散优化改进 #3921, #3928 (Josef Perktold)

  • 扩展离散边际当额外参数时,NegativeBinomial #3811 (Josef Perktold)

duration
  • 生存/持续时间中的依赖性审查 #3090 (Kerby Shedden)

  • Kaplan-Meier #3126 的进入次数(Kerby Shedden)

genmod
  • 贝叶斯GLMM #4189, #4540 (Kerby Shedden)

  • GLM 添加 var_weights #3692 (Peter Quackenbush)

  • GLM: 优化中的EIM #3646 (Peter Quackenbush)

  • GLM 校正以处理比例问题,对数似然 #3856(Peter Quackenbush)

graphics
  • 图形 HDR 功能箱线图 #3876 合并到 #4049 (Pamphile ROY)

  • 图形 Bland-Altman 或 Tukey 均差图 #4112 合并到 #4200 (Joses W. Ho)

  • 小提琴图中带宽选项 #4510 (Jim Correia)

imputation
  • 通过高斯模型进行多重插补 #4394, #4520 (Kerby Shedden)

  • MICE #4319 中的正则化拟合(Kerby Shedden)

iolib
  • 改进 summary_coll #3702 合并 #4064 (Natasha Watkins, Kevin Sheppard)

multivariate
  • 多元分析:MANOVA,CanCorr #3327(刘一川)

  • 因子分析 #4161, #4156, #4167, #4214 (刘一川, 克比·谢登, 约瑟夫·珀科塔德)

  • statsmodels 现在包含了由…提供的旋转代码。

regression
  • fit_regularized for WLS #3581(Kerby Shedden)

stats
  • Knockoff FDR # 3204 (Kerby Shedden)

  • 重复测量方差分析 #3303 合并到 #3663, #3838 (刘一川, Richard Höchenberger)

  • 指数分布的Lilliefors检验 #3837 合并到 #3936 (Jacob Kimmel, Josef Perktold)

tools
  • 准随机,Halton 序列 #4104 (Pamphile ROY)

tsa
  • VECM #3246 (亚历山大·卡拉卡斯 GSOC, 约瑟夫·珀克托德)

  • VAR 中的 exog 支持,额外结果不完整,VECM 的一部分 #3246, #4538 (Aleksandar Karakas GSOC, Josef Perktold)

  • 马尔可夫切换,Kim平滑器 #3141 (Chad Fulton)

  • Holt-Winters #3817 合并到 #4176 (tvanzyl)

  • seasonal_decompose: 趋势外推和向量化 2-D #3031 (kernc, Josef Perktold)

  • 将频率域季节性成分添加到未观测成分模型 #4250 (乔丹·耶德)

  • tsa #3276, #4457 中日期处理的重构(Chad Fulton)

  • SARIMAX 没有 AR, MA #3383 (Chad Fulton)

maintenance
  • 切换到 pytest #3804 加上其他几个 PR (Kevin Sheppard)

  • 最近版本的numpy、scipy和pandas的通用兼容性修复

错误-错误

一个新的问题标签 type-bug-wrong 表示那些在没有警告的情况下返回错误数字的错误。 (常规错误大多是可用性错误或对不支持的使用情况引发异常的错误。) 参见 https://github.com/statsmodels/statsmodels/issues?q=is%3Aissue+label%3Atype-bug-wrong+is%3Aclosed+milestone%3A0.9

  • 在 GLM fit_constrained 中,#4193 已在 #4195 中修复 如果像高斯分布那样估计尺度,cov_params 和 bse 是不正确的。 (这不影响尺度为 1 的分布,如泊松分布)

  • 使用二项计数时,pearson_chi2 不正确,#3612 作为 #3692 的一部分已修复

  • 如果使用了曝光并且在使用二项计数时使用了偏移量,GLMResults中的null_deviance和llnull是错误的。

  • 在非二进制计数情况下,GLM Binomial 在重新创建模型时使用了错误的 endog,这被 fit_regularized 和 fit_constrained 使用 #4599。

  • 如果使用非规范链接,GLM 观察到的 Hessian 矩阵计算不正确,已在 #4620 中修复。 此修复改进了梯度优化的收敛性,并消除了 cov_params 中通常数值较小的误差。

  • 离散预测与偏移或暴露,#3569 在 #3696 中修复 如果偏移或暴露不是 None 但 exog 是 None,则 predict 中的偏移和暴露参数被忽略。

  • 如果常数项前置,离散边际的虚拟变量和计数效应是错误的, #3695 在 #3696 中修复

  • OLS 异常值测试,如果顺序为 True,索引错误,#3971 在 #4385 中修复

  • tsa coint 忽略了 autolag 关键字,#3966 在 #4492 中修复 这是一个默认值的向后不兼容更改,现在默认使用 ‘aic’ 滞后选择,而不是固定的 maxlag。默认的 autolag 现在与 adfuller 的默认值相同。

  • 列联表摘要中的错误置信区间,#3822 已在 #3830 中修复 这仅影响了摘要,而未影响相应的属性。

  • 如果在使用 regressor_order 时 summary_col 出现错误结果, #3767 已在 #4271 中修复

所选新功能的描述

以下提供了有关一组选定新功能的更多信息。

向量误差修正模型 (VECM)

Aleksandar Karakas 在 GSOC 2016 期间开发的 VECM 框架为 statsmodels 添加了对非平稳协整 VAR 过程的支持。 目前,已实现以下主题

  • 协整VAR的参数估计

  • 预测

  • 测试格兰杰因果关系和瞬时因果关系

  • 测试协整秩

  • 滞后阶数选择。

新方法也已添加到现有的VAR模型中,并且VAR现在对用户提供的解释变量提供了有限的支持。

新计数模型

新的计数模型已作为GSOC 2017的一部分由Evgeny Zhurko添加。 尚未完成的其他模型将在下一个版本中添加。

新的模型是:

  • NegativeBinomialP (NBP): 这是NegativeBinomial的一个推广,允许方差幂参数在1到2之间指定。当前的NegativeBinomial支持NB1和NB2,它们是NBP的两个特殊情况。

  • 广义泊松分布 (GPP):与NBP类似,这允许广泛的离散度规范。GPP还允许一定程度的欠离散。

  • 零膨胀模型:基于一个通用的基类,现在可以为泊松分布、广义泊松分布和负二项分布提供零膨胀模型。

广义线性混合模型

genmod模块现在包含了对GLIMMIX模型的有限支持。可以使用贝叶斯方法(拉普拉斯和均值场近似后验)拟合具有独立随机效应的二项式和泊松模型。

多重插补

使用多元高斯模型的多重插补现在包含在插补模块中。该模型通过从均值向量、协方差矩阵和缺失数据值的联合后验中进行吉布斯采样来拟合。提供了一个便利函数,用于将模型拟合到多重插补数据集并合并结果。这是对现有MICE(通过链式方程进行多重插补)程序的替代。

指数平滑模型

指数平滑模型现已可用(由Terence L van Zyl在#4176中引入)。这些模型在概念上很简单,将时间序列分解为水平、趋势和季节性成分,这些成分由过去观测值的加权平均值构成。尽管如此,它们产生的预测与更高级的模型具有竞争力,并且可能更容易解释。

可用的模型包括:

  • 简单指数平滑

  • 霍尔特方法

  • 霍尔特-温特斯指数平滑法

改进的时间序列索引支持

时间序列模型的索引处理已经进行了全面改革(#3272),以利用Pandas最近的改进,并将之前在statsmodels中完成的大部分特殊情况处理(特别是日期索引)转移到Pandas中。好处包括行为更加一致,减少了来自边缘情况的错误数量,并减轻了维护负担。

尽管我们努力保持与此次更改的向后兼容性,但仍有可能某些以前有效的未记录的极端情况现在会引发警告或异常。

状态空间模型

状态空间模型基础设施已被重写和改进(#2845)。 新功能包括:

  • 卡尔曼平滑器在Cython中重写,以实现显著的性能提升

  • 模拟平滑器(Durbin 和 Koopman, 2002)

  • 快速模拟任何状态空间模型的时间序列

  • 单变量卡尔曼滤波和平滑(Koopman 和 Durbin,2000)

  • 折叠卡尔曼滤波和平滑(Jungbacker 和 Koopman,2014)

  • 可选的滞后一阶状态自协方差计算

  • 如果可用,使用Scipy的BLAS函数进行Cython接口(适用于Scipy >= 0.16的scipy.linalg.cython_blas

这些特性产生了新的特性,并提高了现有状态空间模型(SARIMAXUnobservedComopnentsDynamicFactorVARMAX)的性能,还使得通过吉布斯采样进行贝叶斯估计成为可能。

警告:这将是包含原始状态空间代码并支持 Scipy < 0.16 的最后一个版本。下一个版本将仅包含新的状态空间代码。

未观测成分模型:频域季节性

未观测成分模型现在支持从频域角度对用户指定的周期和谐波进行季节性因素建模(由Jordan Yoder在#4250中引入)。这不仅允许存在多个季节性效应,还允许用更少的未观测状态来表示季节性成分。这可以提高计算性能,并且由于允许更简约的模型,可能还会提高模型的样本外表现。

主要修复的Bug

向后不兼容的更改和弃用

  • DynamicVAR 和 DynamicPanelVAR 已弃用,并将在未来版本中移除。它使用了 pandas 中的滚动 OLS,该功能已在 pandas 中移除。

  • 在MixedLM中,随机效应方差和协方差参数的名称已从例如G RE更改为G Var或G x F Cov。这会影响摘要输出,并且可能需要对用户代码进行修改,这些代码通过名称从拟合结果对象中提取这些参数。

  • 在MixedLM中,方差分量的随机效应实现的名称已更改。当使用公式时,随机效应实现使用Patsy在解析公式时生成的列名称进行命名。

开发总结与致谢

除了为新功能、改进功能和错误修复接收贡献外, 此版本的重要贡献还来自对一般维护的贡献

  • 凯文·谢帕德

  • 彼得·夸肯布什

  • 布罗克·门德尔

以及总维护者和代码审查者

  • 约瑟夫·珀克托德

此外,许多用户通过参与github问题和提供反馈做出了贡献。

感谢所有为0.9版本发布做出贡献的贡献者(基于git日志):

注意

  • 亚历山大·卡拉卡斯

  • 亚历克斯·福廷

  • 亚历山大·别洛波尔斯基

  • 布罗克·门德尔

  • 查德·富尔顿

  • 查德·富尔顿

  • 克里斯蒂安·洛伦岑

  • 戴夫·威尔默

  • 德罗尔·阿塔里亚

  • 叶夫根尼·朱尔科

  • 杰拉德·布鲁尼克

  • 格雷格·莫斯比

  • 雅各布·金梅尔

  • 杰米·莫顿

  • 贾维斯·米勒

  • 茉莉·毛

  • 杰罗恩·范·戈伊

  • 吉姆·科雷亚

  • Joon Ro

  • 乔丹·耶德

  • 豪尔赫·C·莱塔奥

  • 约瑟夫·珀克托德

  • 何志伟

  • 何塞·洛佩斯

  • 约书亚·恩格尔曼

  • 胡安·埃斯卡米拉

  • 贾斯汀·博伊斯

  • 克比·谢登

  • Kernc

  • 凯文·谢帕德

  • 利兰·拜比

  • 马克西姆·乌瓦罗夫

  • 迈克尔·卡明斯基

  • Mosky Liu

  • 娜塔莎·沃特金斯

  • 尼克·德罗贝蒂斯

  • 尼尔斯·沃达

  • 帕米尔·罗伊

  • 彼得·夸肯布什

  • 昆汀·安德烈

  • 理查德·霍亨伯格

  • 罗伯·克洛斯特

  • 罗马戒指

  • 蔡斯科

  • 索伦·富格勒·约根森

  • 汤姆·奥格斯珀格

  • 汤米·奥德兰

  • 姜涛

  • 刘一川

  • ftemme

  • hugovk

  • 猕猴桃罗布

  • 马利克

  • tvanzyl

  • 微众

  • 兹维扬斯基

这些名单是根据git日志自动生成的,可能并不完整。


Last update: Oct 16, 2024