有没有一个能够返回p值的Python Anderson-Darling实现?

5

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

理想情况下,我希望使用多个分布运行Anderson-Darling测试,并选择具有最高p值的分布。这类似于Minitab中的“拟合优度”测试。但我在寻找一个能够计算p值的Python实现的Anderson-Darling测试时遇到了困难。

我已经尝试过scipy中的stats.anderson(),但它只返回AD统计量和一系列临界值及其相应的显著性水平,并没有返回p值本身。

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

是否有一个在Python中实现的Anderson-Darling测试,可以返回p值并支持非正态分布呢?

3个回答

2
我建议按照拟合优度统计量而不是p值对分布进行排名。我们可以使用Anderson-Darling、Kolmogorov-Smirnov或类似的统计量作为距离度量,以评估不同分布的拟合程度。
背景:
Anderson-Darling或Kolmogorov-Smirnov的p值取决于是否估计了参数。在两种情况下,分布都不是标准分布。
在某些情况下,我们可以制表或使用函数逼近制表值。当未估计参数且分布是简单的位置-尺度族且没有形状参数时,就是这种情况。
对于具有形状参数的分布,用于计算p值的检验统计量的分布取决于参数。也就是说,我们必须为每组参数计算不同的分布或制表p值,这是不可能的。
在这些情况下获得p值的唯一解决方案要么是通过自助法,要么是通过模拟特定参数的测试统计量。
技术条件是测试统计量是否渐近关键,这意味着测试统计量的渐近分布与特定参数无关。
在分组数据上使用卡方检验需要更少的假设,即使估计了参数,我们也可以计算它。(严格来说,只有在使用分组数据对MLE进行参数估计时才是正确的。)

2
谢谢您的回答。您建议使用检验统计量,因为它是适合度的一种度量。然而,我注意到 Minitab 特别警告不要使用此统计量来确定最佳拟合:“但是,当 AD 值接近时,避免直接比较不同分布之间的 AD 值,因为 AD 统计量在不同分布中分布不同。为了更好地比较不同分布的拟合度,请使用其他标准,例如概率图、p 值和您的过程知识。”他们提出 p 值作为更好的适合度度量。 - Christian Erichsen
这是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/ - Christian Erichsen
2
那个Minitab的注释对我来说没有太多意义,而且我不知道他们如何计算具有形状参数的分布的p值,除非他们使用模拟值或限制在没有形状参数的分布上。AD和KS以及类似的GOF统计量只是假设和经验分布之间的距离度量。测试统计量越小,根据距离度量的给定定义,分布越接近数据。 - Josef
2
使用概率图作为额外的辅助工具总是很有用的,因为它提供了额外的信息,可以确定分布是否适合或不适合。如果我们在参数未被估计的情况下使用p值,则在参数被估计的情况下,它们将不正确。 - Josef

1

1
你可以基于OpenTURNS库检查页面。基本上,如果x是一个Python列表或Numpy数组,
import openturns as ot
sample = ot.Sample(x)

调用安德森达林方法:

test_result = ot.NormalityTest.AndersonDarlingNormal(sample)

通过调用test_result.getPValue()获取p值。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接