我想找到最适合某些数据的分布。这通常是某种测量数据,例如力或扭矩。
理想情况下,我想运行具有多个分布的Anderson-Darling并选择具有最高p值的分布。这与“健康的良好”类似。在 Minitab中进行测试。我无法找到计算p值的Anderson-Darling的python实现。
我已经尝试过 scipy&#39> <{em> stats.anderson()
但它只返回AD统计数据和一个具有相应显着性水平的关键值列表,而不是p值本身。
我也研究过statsmodels
,但它似乎只支持正态分布。我需要比较几种分布的拟合(正态,威布尔,对数正态等)。
是否在python中实现了Anderson-Darling,它返回p值并支持非正态分布?
答案 0 :(得分:1)
我只会根据拟合优度统计量而不是p值来对分布进行排名。我们可以使用Anderson-Darling,Kolmogorov-Smirnov或类似的统计量作为距离测量来对不同分布的拟合程度进行排序。
背景:
Anderson-Darling或Kolmogorov-Smirnov的p值取决于是否估计参数。在这两种情况下,分布都不是标准分布。
在某些情况下,我们可以制表或使用函数逼近表格值。如果不估计参数并且分布是没有形状参数的简单位置比例族,则会出现这种情况。
对于具有shape参数的分布,我们计算p值所需的测试统计量的分布取决于参数。那就是我们必须为每组参数计算不同的分布或表格p值,这是不可能的。 在这些情况下获得p值的唯一解决方案是通过引导程序或通过模拟特定参数的测试统计数据。
技术条件是测试统计量是否渐近关键,这意味着测试统计量的渐近分布与特定参数无关。
对分档数据使用chisquare测试需要更少的假设,即使在估计参数时我们也可以计算它。 (严格地说,只有当MLE使用分箱数据估计参数时才会这样。)
答案 1 :(得分:1)
您可以基于OpenTURNS库检查此page。 基本上,如果x是Python列表或Numpy数组,
import openturns as ot
sample = ot.Sample(x)
调用Anderson Darling方法
test_result = ot.NormalityTest.AndersonDarlingNormal(sample)
通过调用test_result.getPValue()
答案 2 :(得分:0)
你可以使用多个发行版,它只需要是可调用的。看看下面我是如何调用 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