如何在Python中执行 Shapiro-Wilk 测试
在本文中,我们将研究在Python中执行 Shapiro-wilk 测试的各种方法。
Shapiro-Wilk 检验是一种正态性检验,它确定给定样本是否来自正态分布。夏皮罗-威尔克检验或夏皮罗检验是常客统计中的正态性检验。夏皮罗检验的原假设是总体呈正态分布。
使用 shapiro()函数的 Shapiro-Wilk 测试
在这种方法中,用户需要使用 scipy.stats 库中的所需参数调用 shapiro()函数,以使用Python编程语言对给定数据进行 Shapiro-Wilk 测试。
Syntax: shapiro(x)
Parameters:
- x: Array of sample data.
Returns:
statistic: The test statistic.
p-value: The p-value for the hypothesis test.
这是一个假设检验,两个假设如下:
- Ho(接受):样本来自正态分布。(Po>0.05)
- Ha(拒绝):样本不是来自正态分布。
示例 1:在Python中对正态分布样本进行 Shapiro-Wilk 检验
在此示例中,我们将简单地使用 scipy.stats 库中的 shapiro()函数对Python中包含 500 个数据点的随机生成数据进行 Shapiro-Wilk 测试。
Python3
# import useful library
import numpy as np
from scipy.stats import shapiro
from numpy.random import randn
# Create data
gfg_data = randn(500)
# conduct the Shapiro-Wilk Test
shapiro(gfg_data)
Python3
# import useful library
import numpy as np
from numpy.random import poisson
from numpy.random import seed
from scipy.stats import shapiro
from numpy.random import randn
seed(0)
# Create data
gfg_data = poisson(5, 200)
# conduct the Shapiro-Wilk Test
shapiro(gfg_data)
输出:
(0.9977102279663086, 0.7348126769065857)
输出解释:
由于在上面的示例中,p 值为 0.73,大于阈值(0.5),即 alpha(0.5),因此我们无法拒绝原假设,即我们没有足够的证据表明样本不会出现从正态分布。
示例 2:在Python中对非正态分布样本进行 Shapiro-Wilk 测试
在此示例中,我们将简单地使用 scipy.stats 库中的 shapiro()函数对Python中包含 100 个数据点的激情分布数据中随机生成的数据进行 Shapiro-Wilk 测试。
Python3
# import useful library
import numpy as np
from numpy.random import poisson
from numpy.random import seed
from scipy.stats import shapiro
from numpy.random import randn
seed(0)
# Create data
gfg_data = poisson(5, 200)
# conduct the Shapiro-Wilk Test
shapiro(gfg_data)
输出:
(0.966901957988739, 0.00011927181185455993)
输出解释:
由于在上面的示例中,p 值为 0.0001,小于 alpha(0.5),因此我们拒绝原假设,即我们有足够的证据表明样本不是来自正态分布。