我有一些数据是从雷达卫星图像中抽取的,并希望对其进行一些统计测试。在此之前,我想进行正常性测试,以确保我的数据正常分布。我的数据似乎是正常分布的,但是当我执行测试Im得到Pvalue为0时,表明我的数据不是正态分布的。Python中分布的正态性测试
我附上我的代码以及分布的输出和直方图(我对python相对来说比较新,所以如果我的代码在任何方面都很笨拙的话,我很抱歉)。任何人都可以告诉我,如果我做错了什么 - 我发现很难从我的直方图相信我的数据不正常分布?
values = 'inputfile.h5'
f = h5py.File(values,'r')
dset = f['/DATA/DATA']
array = dset[...,0]
print('normality =', scipy.stats.normaltest(array))
max = np.amax(array)
min = np.amin(array)
histo = np.histogram(array, bins=100, range=(min, max))
freqs = histo[0]
rangebins = (max - min)
numberbins = (len(histo[1])-1)
interval = (rangebins/numberbins)
newbins = np.arange((min), (max), interval)
histogram = bar(newbins, freqs, width=0.2, color='gray')
plt.show()
这将打印此项:(41099.095955202931,0.0)。第一个元素是卡方值,第二个元素是一个p值。
我制作了附加的数据图表。我认为,也许是因为林处理负面价值是造成问题,所以我规范化的价值观,但问题仍然存在。
[这个问题](http://stats.stackexchange.com/questions/2492/is-normality-testing-essentially-useless)解释了为什么你会得到如此小的p值。从本质上讲,正态性检验几乎总是在非常大的样本量上拒绝零点(例如,在您的情况下,您可以在左侧看到一点点歪斜,这对您庞大的样本规模来说已经足够了) –
@unutbu :这不是真的:即使平均值为100,标准偏差为10,“normaltest(np.random.normal(loc = 100,scale = 10,size = 1000))仍然会返回一致的p值。” –
@DavidRobinson:哦!感谢您的更正。 – unutbu