如何在 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 教程。