在建模数据之前,我们需要做数据探索。例如,当我们做特征相关时,我们经常使用假设检验。很多情况下需要对数据做正态性检验,然后通过检验结果确定下一步的分析方案。以下是Python中常用的一些常态检查方法:
scipy.stats.kstest(K-S检验)
kstest是一个非常强大的测试模块,可以测试scipy.stats中除了正态性测试以外的其他数据分布类型,只适用于连续分布测试。假设:数据符合正态分布。
kstest(rvs,cdf,args=(),N=20,alternative='双侧',mode='近似',**kwds)
对于正态性检验,我们只需要手动设置三个参数:
Rvs:一组待测试的一维数据
Cdf:检查方法,比如‘norm’‘exposure’‘Rayleigh’‘gamma’,这里我们设置为‘norm’,也就是常态检查。
备选方案:默认为双尾检验,对于单尾检验,可以设置为“更小”或“更大”。
模型: '近似'(默认),使用近视值的精确分布进行测试统计,
“渐近”:使用检验统计量的渐近分布。
输出中的第一个是统计量,第二个是P值(注:统计量越接近0,数据与标准正态分布的拟合越好。如果P值大于显著性水平,通常为0.05。如果原假设被接受,则判断整个样本服从正态分布)。
00-1010不同于kstest,shapiro是一个专门用于正态性测试的模块。
假设:样本数据符合正态分布。
注:shapiro用于检验小样本数据(50个数据),不适用于正态性检验(样本数>个;5000),测试结果的P值可能不准确。
夏皮罗(x,a=无,reta=假)
一般我们只使用X参数,就是要测试的数据。
输出中的第一个是统计量,第二个是P值(统计量越接近1,数据与正态分布的拟合越好,P值大于规定的显著性水平,原假设被接受,认为样本来自服从正态分布的总体)。
scipy.stats.shapiro(W检验)
normaltest也是一个专门进行正态性检验的模块,其原理是基于数据的偏度和峰度。scipy.stats.normaltest(a,axis=0,nan_policy='propagate ')
答:需要检查的数据
坐标轴:默认值为0,表示在0轴上检查,即检查每行数据的正常情况。我们可以设置axis=None来检查整个数据。
Nan_policy:当输入数据中有空值时该怎么办。默认值为“传播”,返回空值;当设置为“引发”时,将引发错误;当设置为“省略”时,计算中将忽略空值。
输出中的第一个是统计量,第二个是p值(注:p值大于0.05的显著性水平,认为样本数据符合正态分布)。
scipy.stats.normaltest
anderson是kstest的修改版,毫不夸张地说是增强版。也可以做各种分布检验,默认检验是正态性检验。scipy.stats.anderson(x,dist='norm ')
参数x表示输入数据和输出结果:
Anderson有三个输出值,第一个是统计量,第二个是评价值,第三个是显著性水平,评价值对应显著性水平。
对于正态性检验,显著性水平为:15%、10%、5%、2.5%、1%。
scipy.stats.anderson
偏差检验:H0 :样本数据偏态=0H13360样本数据偏态0
拒绝原假设意味着样本数据不是来自正态总体,但不拒绝原假设不能说明样本数据来自正态总体,只能说明数据是对称的,偏斜度检验只有在确定对称是影响分布形状的唯一因素时才适用。
峰度检验:H0 :样本数据峰度=3H13360样本数据峰度3
拒绝原假设意味着样本数据不是来自正态总体,但不拒绝原假设并不意味着样本数据来自正态总体,容易出错,不推荐。
(二)SPSS正态性检验方法
1.计算偏斜度和峰度,当它们接近0时是正常的。