如何在 python 中执行 anderson-darling 测试


Anderson-Darling 检验是一种拟合优度检验,用于衡量数据与指定分布的拟合程度。

此检验最常用于确定数据是否服从正态分布

这种类型的检验对于检验正态性非常有用,正态性是许多统计检验中常用的假设,包括回归方差分析t 检验等。

示例:Python 中的 Anderson-Darling 测试

要在 Python 中执行 Anderson-Darling 测试,我们可以使用 scipy.stats 库中的anderson() 函数,该函数使用以下语法:

安德森(x, dist=’norm’)

金子:

  • x :样本数据表
  • dist :要测试的分布类型。默认值为“标准”,但您也可以指定“expon”或“后勤”。

例如,以下是如何对 50 个正态分布随机变量的样本执行 Anderson-Darling 检验:

 import numpy as np

#create data
np.random.seed(0)
data = np.random.normal(size=50)

#perform Anderson-Darling Test 
from scipy.stats import anderson
anderson(data)

AndersonResult( statistic =0.15006999533388665,
               critical_values =array([0.538, 0.613, 0.736, 0.858, 1.021]),
               significance_level =array([15. , 10. , 5. , 2.5, 1. ]))

检验统计量为0.150 。我们可以将该值与每个显着性水平对应的每个临界值进行比较,以查看测试结果是否显着。例如:

  • α = 0.01 的临界值为1.021 。由于检验统计量 (0.150) 不大于此临界值,因此结果在 0.01 显着性水平下不显着。
  • α = 0.025 的临界值为0.858 。由于检验统计量 (0.150) 不大于此临界值,因此结果在 0.025 显着性水平上不显着。

等等。

我们可以看到,检验结果在任何显着性水平上都不显着,这意味着我们不会拒绝检验的原假设。因此,我们没有足够的证据表明采样数据不呈正态分布。

鉴于我们使用np.rand.normal()函数生成 50 个正态分布值的样本,这个结果应该不足为奇。

相反,考虑一下我们是否对 0 到 10 之间的 50 个随机整数样本执行 Anderson-Darling 检验:

 import numpy as np

#create data
np.random.seed(0)
data = np.random.randint(0, 10, size=50)

#perform Anderson-Darling Test 
from scipy.stats import anderson
anderson(data)

AndersonResult( statistic =1.1926463985076836,
               critical_values =array([0.538, 0.613, 0.736, 0.858, 1.021]),
               significance_level =array([15. , 10. , 5. , 2.5, 1. ]))

检验统计量为1.1926 。我们可以将该值与每个显着性水平对应的每个临界值进行比较,以查看测试结果是否显着。例如:

  • α = 0.01 的临界值为1.021 。由于检验统计量 (1.1926) 大于此临界值,因此结果在 0.01 显着性水平上显着。
  • α = 0.025 的临界值为0.858 。由于检验统计量 (1.1926) 大于此临界值,因此结果在 0.025 显着性水平上显着。

等等。

我们可以看到检验结果在每个显着性水平上都是显着的,这意味着无论我们选择使用什么显着性水平,我们都会拒绝检验的原假设。因此,我们有足够的证据表明采样数据不是正态分布的。

鉴于我们使用np.rand.randint()函数生成 50 个 0 到 10 之间的随机整数样本(不太可能遵循正态分布),这个结果也应该不足为奇。

您可以在此处找到更多 Python 教程

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注