是否有适用于 python 的 Anderson-Darling 实现返回 p 值?

Posted

技术标签:

【中文标题】是否有适用于 python 的 Anderson-Darling 实现返回 p 值?【英文标题】:Is there an Anderson-Darling implementation for python that returns p-value? 【发布时间】:2018-11-21 11:46:59 【问题描述】:

我想找到最适合某些数据的分布。这通常是某种测量数据,例如力或扭矩。

理想情况下,我希望使用多个分布运行 Anderson-Darling,并选择具有最高 p 值的分布。这类似于 Minitab 中的“拟合优度”检验。我很难找到计算 p 值的 Anderson-Darling 的 python 实现。

我尝试过 scipy's stats.anderson(),但它只返回 AD 统计信息和具有相应显着性水平的临界值列表,而不是 p 值本身。

我也查看了statsmodels,但它似乎只支持正态分布。我需要比较几种分布(正态、威布尔、对数正态等)的拟合度。

在 python 中是否有一个 Anderson-Darling 的实现,它返回 p 值并支持非正态分布?

【问题讨论】:

【参考方案1】:

您可以使用多个发行版,它只需要是可调用的。请看下面我是如何调用 gamma 的。

from statsmodels.stats.diagnostic import anderson_statistic as ad_stat
from scipy import stats

result = ad_stat(df[['Total']], dist= stats.gamma)

您可以调用 Scipy 中列出的任何发行版:https://docs.scipy.org/doc/scipy/reference/stats.html

查看源代码了解更多信息:https://www.statsmodels.org/stable/_modules/statsmodels/stats/_adnorm.html

【讨论】:

【参考方案2】:

您可以根据 OpenTURNS 库检查此 page。 基本上,如果 x 是 Python 列表或 Numpy 数组,

import openturns as ot
sample = ot.Sample(x)

调用 Anderson Darling 方法 test_result = ot.NormalityTest.AndersonDarlingNormal(sample)

调用test_result.getPValue()获取p_value

【讨论】:

【参考方案3】:

我只会按拟合优度统计而不是按 p 值对分布进行排名。我们可以使用 Anderson-Darling、Kolmogorov-Smirnov 或类似的统计量来衡量不同分布的拟合程度。

背景:

Anderson-Darling 或 Kolmogorov-Smirnov 的 p 值取决于参数是否被估计。在这两种情况下,分布都不是标准分布。

在某些情况下,我们可以将列表值制成表格或使用函数近似值。当没有估计参数并且分布是没有形状参数的简单位置尺度族时,就是这种情况。

对于具有形状参数的分布,我们计算 p 值所需的检验统计量的分布取决于参数。也就是说,我们必须为每组参数计算不同的分布或列表 p 值,这是不可能的。 在这些情况下获得 p 值的唯一解决方案是通过引导程序或模拟特定参数的检验统计量。

技术条件是检验统计量是否渐近关键,即检验统计量的渐近分布与具体参数无关。

对分箱数据使用卡方检验需要更少的假设,即使在估计参数时我们也可以计算它。 (严格来说,只有当 MLE 使用分箱数据估计参数时,这才是正确的。)

【讨论】:

感谢您的回答。您建议使用检验统计量,因为它是适合度的度量。但是我注意到 Minitab 特别警告不要使用此统计数据来确定最佳拟合:“但是,当 AD 值接近时,请避免直接比较不同分布的 AD 值,因为 AD 统计数据是分布的不同分布的不同。为了更好地比较不同分布的拟合,请使用附加标准,例如概率图、p 值和您的过程知识。” 他们建议将 p 值作为更好的衡量标准适合 这里是 Minitab 文档的链接:http://support.minitab.com/en-us/minitab/18/help-and-how-to/quality-and-process-improvement/quality-tools/how-to/individual-distribution-identification/interpret-the-results/all-statistics-and-graphs/goodness-of-fit/ 那个 Minitab 评论对我来说没有多大意义,我不知道他们如何计算具有形状参数的分布的 p 值,除非他们使用模拟值或限制为没有形状参数的分布。 AD 和 KS 以及类似的 GOF 统计数据只是假设分布和经验分布之间的距离度量。检验统计量越小,分布越接近给定距离度量定义中的数据。 使用概率图作为附加辅助总是有用的,因为它提供了分布可能适合或不适合的附加信息。如果我们在未估计参数的情况下使用 p 值,那么在估计参数的情况下它们将不正确。

以上是关于是否有适用于 python 的 Anderson-Darling 实现返回 p 值?的主要内容,如果未能解决你的问题,请参考以下文章

是否有适用于 Python 3.x 的 Google 数据 API (gdata)?

是否有适用于 Amazon S3 的 Python3 兼容 Django 存储后端?

是否有适用于Behave的Python无头浏览器,而不使用Selenium或真实的浏览器

从 C++ 调用 scipy.stats.anderson_ksamp 时的 EXC_BAD_ACCESS 或 SIGABRT

适用于 Mac 的 Python Winsound 等效项

OO 设计原则是不是适用于 Python?