4

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

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

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

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

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

4

3 回答 3

2

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

背景:

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

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

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

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

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

于 2018-06-12T14:45:04.210 回答
1

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

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

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

p_value 是通过调用获得的test_result.getPValue()

于 2020-10-28T01:16:57.783 回答
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

于 2021-08-03T22:32:28.417 回答