📜  如何在Python中执行 Shapiro-Wilk 测试

📅  最后修改于: 2022-05-13 01:54:23.574000             🧑  作者: Mango

如何在Python中执行 Shapiro-Wilk 测试

在本文中,我们将研究在Python中执行 Shapiro-wilk 测试的各种方法。

Shapiro-Wilk 检验是一种正态性检验,它确定给定样本是否来自正态分布。夏皮罗-威尔克检验或夏皮罗检验是常客统计中的正态性检验。夏皮罗检验的原假设是总体呈正态分布。

使用 shapiro()函数的 Shapiro-Wilk 测试

在这种方法中,用户需要使用 scipy.stats 库中的所需参数调用 shapiro()函数,以使用Python编程语言对给定数据进行 Shapiro-Wilk 测试。

这是一个假设检验,两个假设如下:

  • 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),因此我们拒绝原假设,即我们有足够的证据表明样本不是来自正态分布。