正态分布表怎么查(正态分布表怎么查095)

在对数据建模前需要做数据探索,比如做特征相关性的时候,经常会用到假设检验,很多时候我们需要对数据做正态性检验,进而通过检验结果确定下一步的分析方案。下面介绍 Python 中常用的几种正态性检验方法:

scipy.stats.kstest(K-S检验)

kstest 是一个很强大的检验模块,除了正态性检验,还能检验 scipy.stats 中的其他数据分布类型,仅适用于连续分布的检验,

原假设:数据符合正态分布

kstest(rvs, cdf, args=(), N=20, alternative='two_sided', mode='approx', **kwds)

对于正态性检验,我们只需要手动设置三个参数即可:

rvs:待检验的一组一维数据

cdf:检验方法,例如'norm','expon','rayleigh','gamma',这里我们设置为'norm',即正态性检验

alternative:默认为双尾检验,可以设置为'less'或'greater'作单尾检验

model:'approx'(默认),使用检验统计量的精确分布的近视值,

'asymp':使用检验统计量的渐进分布

输出结果中第一个为统计量,第二个为P值(注:统计量越接近0就越表明数据和标准正态分布拟合的越好,如果P值大于显著性水平,通常是0.05,接受原假设,则判断样本的总体服从正态分布)

scipy.stats.shapiro(W检验)

与 kstest 不同,shapiro 是专门用来做正态性检验的模块

原假设:样本数据符合正态分布

注意:shapiro是用来检验小样本数据(数据量<50),不适合做(样本数>5000)的正态性检验,检验结果的P值可能不准确

scipy.stats.shapiro(x, a=None, reta=False)

一般我们只用 x 参数就行,x 即待检验的数据

输出结果中第一个为统计量,第二个为P值(统计量越接近1越表明数据和正态分布拟合的好,P值大于指定的显著性水平,接受原假设,认为样本来自服从正态分布的总体)

scipy.stats.normaltest

normaltest 也是专门做正态性检验的模块,原理是基于数据的skewness和kurtosis

scipy.stats.normaltest(a, axis=0, nan_policy='propagate')

a:待检验的数据

axis:默认为0,表示在0轴上检验,即对数据的每一行做正态性检验,我们可以设置为 axis=None 来对整个数据做检验

nan_policy:当输入的数据中有空值时的处理办法。默认为 'propagate',返回空值;设置为 'raise' 时,抛出错误;设置为 'omit' 时,在计算中忽略空值。

输出结果中第一个为统计量,第二个为P值(注:p值大于显著性水平0.05,认为样本数据符合正态分布)

scipy.stats.anderson

anderson 是修改版的 kstest,说是增强版也不为过。也可以做多种分布的检验,默认的检验时正态性检验。

scipy.stats.anderson(x, dist='norm')

参数x表示输入数据,输出结果:

anderson 有三个输出值,第一个为统计数,第二个为评判值,第三个为显著性水平, 评判值与显著性水平对应

对于正态性检验,显著性水平为:15%, 10%, 5%, 2.5%, 1%

基于偏度和峰度的检验,可用于检验样本数据是否来自正态分布,易受异常值影响,不能用于小样本。(雅克-贝拉检验Jarque-Bera test:正态性检验)

偏度检验:H0 : 样本数据的偏度=0 H1 :样本数据的偏度≠0

拒绝原假设则认为样本数据不是来自正态总体,但不拒绝原假设不能说明样本数据来自正态总体,只能说明数据对称,只有在确定对称性是影响分布的形态的唯一因素时,偏度检验才适用。

峰度检验:H0 : 样本数据的峰度=3 H1 :样本数据的峰度≠3

拒绝原假设则认为样本数据不是来自正态总体,但不拒绝原假设不能说明样本数据来自正态总体,容易出错不推荐使用。

(二)SPSS中正态性检验的方法

1、计算偏度(Skewness)和峰度(Kurtosis) ,当它们接近0时,为正态。