如何使用python scipy输入数据进行shapiro wilk测试

时间:2018-10-12 07:23:48

标签: numpy scipy data-science data-analysis normal-distribution

我正在尝试对数据进行正态性测试。

# Method 1
import numpy as np
from scipy.stats import shapiro

data = [1874181.6503, 2428393.05517, 2486600.8183,...] # there are 146 data points
data = np.array(data)
stat, p = shapiro(data)
print('statistics=%.3f, p=%.3f' % (stat, p))
alpha = 0.05
if p > alpha:
    print('its Gaussian ')
else:
    print('not Gaussian')

----输出----

statistics=0.582, p=0.000 
not Gaussian

当我运行它时,我得到的不是高斯,当我计算平均值和标准差并使用np.random.normal(mu,sigma,149)(如下所示)生成样本时,其显示为高斯

# Method 2 
import numpy as np
from scipy.stats import shapiro

data = [1874181.6503, 2428393.05517, 2486600.8183,...] # there are 146 data points

data = np.array(data)
d_mu = np.mean(data)
d_sig = np.std(data)
data = np.random.normal(d_mu,d_sig, 146)
stat, p = shapiro(data)
print('statistics=%.3f, p=%.3f' % (stat, p))

alpha = 0.05
if p > alpha:
    print('its Gaussian ')
else:
    print('not Gaussian')

------输出----

statistics=0.987, p=0.212
its Gaussian 

我对数据分析非常陌生,如果有人可以帮助我解决以下疑问,这将很有帮助

  1. 进行shapiro测试的正确方法是什么?方法1或方法2 ..?
  2. 我很难理解np.random.normal(d_mu,d_sig,146)函数。 docs中给出的定义是“从正态(高斯)分布中抽取随机样本”。但是,要生成什么数据样本,我们已经有数据(我的输入数据),并且已经计算出均值和标准差以绘制正态分布,并且该函数返回了其他一些数据样本,我的shapiro测试适用于此(我知道我完全错误地接受了它,但是无法确定哪一个是正确的)

  3. 我正在尝试对时间序列数据进行正态分布。任何人都可以建议的任何有用的文档链接...?做正态性测试和正态分布。任何能指导我正确方向的东西

0 个答案:

没有答案