python的Kolmogorov测试

python的Kolmogorov测试,python,numpy,scipy,statistics,kolmogorov-smirnov,Python,Numpy,Scipy,Statistics,Kolmogorov Smirnov,我试图测试数据是否遵循“正态”分布,但kstest并没有像我预期的那样工作。Vy使用numpy的正态它“从正态(高斯)分布中抽取随机样本” 我已经用numpy和scipy检查了两种生成正态分布的方法,但这并不能说明这是正态分布 from scipy.stats import kstest, norm from numpy.random import seed, normal seed(42) data = normal(80, 6, 1000) # data = norm.rvs(loc=80

我试图测试数据是否遵循“正态”分布,但kstest并没有像我预期的那样工作。Vy使用numpy的
正态
它“从正态(高斯)分布中抽取随机样本”

我已经用
numpy
scipy
检查了两种生成正态分布的方法,但这并不能说明这是正态分布

from scipy.stats import kstest, norm
from numpy.random import seed, normal

seed(42)
data = normal(80, 6, 1000)
# data = norm.rvs(loc=80, scale=6, size=1000)

ksstat, p_value = kstest(data, "norm")

if p_value > 0.05:
    print('it looks like Gaussian (fail to reject H0)')
else:
    print('it doesnt looks like Gaussian (reject H0)')
然而,通过变换
(data-np.mean(data))/np.std(data)
我得到了正态分布

from scipy.stats import kstest, norm
from numpy.random import seed, normal

seed(42)
data = normal(80, 6, 1000)
# data = norm.rvs(loc=80, scale=6, size=1000)

ksstat, p_value = kstest(data, "norm")

if p_value > 0.05:
    print('it looks like Gaussian (fail to reject H0)')
else:
    print('it doesnt looks like Gaussian (reject H0)')
我错过了什么? 为什么不直接使用正态性测试的结果?

使用给定的分布参数(如果有的话)根据给定的分布测试数据。使用
kstest(数据,“norm”)
时,分布为标准正态分布,平均值为0,标准偏差为1。您生成的数据平均值为80,标准偏差为6,因此自然不匹配

您可以按照问题中显示的方式对数据进行规范化,或者,如果您碰巧知道参数,可以使用
args
参数将它们传递给
kstest

ksstat, p_value = kstest(data, "norm", args=(80, 6))
或者,您可以根据数据估计参数:

ksstat, p_value = kstest(data, "norm", args=(data.mean(), data.std()))