R语言与正态性检验
1.Kolmogorov-Smirnov正态性检验
Kolmogorov-Smirnov是比较一个频率分布f(x)与理论分布g(x)或者两个观测值分布的检验方法,若两者间的差距很小,则推论该样本取自某特定分布族或两个观测值分布相同
使用函数:ks.test()在默认安装的stats包中
说明:ks.test有四个参数,第一个参数x为观测值向量,第二个参数y为第二观测值向量或者累计分布函数或者一个真正的累积分布函数,如pnorm(正态分布函数,一般做正态检测的时候直接输入pnorm),只对连续CDF有效。第三个参数为指明是单侧检验还是双侧检验,exact参数为NULL或者一个逻辑值,表明是否需要计算精确的P值。
结果解释:结果中会出现统计量D值和p-value,
D值越小,越接近0,表示样本数据越接近正态分布
p值,如果p-value小于显著性水平α(0.05),则拒绝H0
注意:在做单样本K-S检验或者正态检验时,有时会有错误提示“Kolmogorov - Smirnov检验里不应该有连结”,这是因为K-S检验只对连续CDF有效,而连续CDF中出现相同值的概率为0,因此R会报错。这也提醒我们,在做正态性检验之前,要先对数据进行描述性分析,对数据整体要先有个大致的认识,这也才后续才能选择正确的检验方法。
2.Shapiro-Wilk检验
Shapiro-Wilk检验在小样本情况下,是很普通的正态性检验方法。
使用函数:Shapiro.test()在默认安装的stats包中
说明: Shapiro.test()只有一个参数x,并且只要是数字向量即可,也可以有缺失值,但是非缺失值数量必须在3-5000之间,这是R的规定。
结果解释:结果中会出现统计量W值和p-value:
W值越小,越接近0,表示样本数据越接近正态分布
p值,如果p-value小于显著性水平α(0.05),则拒绝H0
3.Lilliefor检验
是Kolmogorov-Smirnov正态性检验修正,可用于正态性检验
使用函数:lillie.test()在nortest包中
说明: lillie.test()只有一个参数x,只要是数字向量即可,也可以有缺失值,但是非缺失值数量必须>4,这是R的规定
结果解释:结果中会出现统计量D值和p-value:
D值越小,越接近0,表示样本数据越接近正态分布
p值,如果p-value小于显著性水平α(0.05),则拒绝H0
注意:在R中使用lillefor检验,就相当于在SPSS探索分析中的正态性检验的Kolmogorov-Smirnov的lilliefors的修正值,二者结果是相同的。
4.Anderson-Darling正态性检验
使用在nortest包中的ad.test()
使用函数:ad.test()在nortest包中
说明:ad.test()只有一个参数x,只要是数字向量即可,也可以有缺失值,但是非缺失值数量必须>7,这是R的规定
结果解释:结果中会出现统计量A值和p-value:
A值越小,越接近0,表示样本数据越接近正态分布
p值,如果p-value小于显著性水平α(0.05),则拒绝H0
5.Jarque-Bera正态性检验
Jarque Bera是基于偏度系数和峰度系数的统计量
使用函数:jarque.bera.test()在tseries包中
jb.norm.test()在nromtest包中
ajb.norm.test()在nromtest包中
说明: jarque.bera.test()只有一个参数x,可以是数字向量或时间序列,不允许有遗漏值,但是R中也没有规定x的最小值,jb.norm.test()除了x之外,多了一个蒙特卡诺模拟值,默认是2000,ajb.norm.test()是J-B检测的修正,主要解决J-B统计量收敛速度慢的缺点。
结果解释:结果中会出现统计量X-squared或JB值、自由度df和p-value
X-squared值越小,越接近0,表示样本数据越接近正态分布
p值,如果p-value小于显著性水平α(0.05),则拒绝H0