是否有适用于 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