【R】正态检验与R语言

正态检验与R语言

1.Kolmogorov–Smirnov test

统计学里, Kolmogorov–Smirnov 检验(亦称:K–S 检验)是用来检验数据是否符合某种分布的一种非参数检验,通过比较一个频率分布f(x)与理论分布g(x)或者两个观测值分布来判断是否符合检验假设。其原假设H0:两个数据分布一致或者数据符合理论分布。拒绝域构造为:D=max| f(x)- g(x)|,当实际观测值D>D(n,α)则拒绝H0,否则则接受H0假设。由于KS检验不需要知道数据的分布情况,在小样本的统计分析中效果比较好。(大样本数据下,使用t-检验;小样本数据,使用t-检验会出现较大的偏差)

R函数:

ks.test(x, y, ...,
        alternative = c("two.sided", "less", "greater"),
        exact = NULL)

使用说明:

参数设置:

x:观测值向量

y:第二观测值向量或者累计分布函数,如pnorm(正态分布函数,一般做正态检测的时候直接输入pnorm),只对连续CDF有效

alternative = c("two.sided", "less", "greater"):双侧检验还是单侧检验

exact:默认为NULL,也可以是其他逻辑值,表明是否需要计算精确的P值

结果解释:

D:D值越小,越接近0,表示样本数据越接近正态分布(简单来说,D越小越好)

p:p-value小于显著性水平α(0.05),则拒绝H0(p越大越好)

注意事项:

在做单样本K-S检验或者正态检验时,有时会有错误提示“Kolmogorov - Smirnov检验里不应该有连结”,这是因为K-S检验只对连续CDF有效,而连续CDF中出现相同值的概率为0,也就是说数据中倘出现相同值,则连续分布的假设不成立,因此R会报错。这也提醒我们,在做正态性检验之前,要先对数据进行描述性分析,对数据整体要先有个大致的认识,这也才后续才能选择正确的检验方法。

Example:

例:35位健康男性在未进食前的血糖浓度如表所示,试测验这组数据是否来自均值μ=80,标准差σ=6的正态分布 87 77 92 68 80 78 84 77 81 80 80 77 92 86 76 80 81 75 77 72 81 90 84 86 80 68 77 87 76 77 78 92 75 80 78 (n=35)

H0:健康成人男性血糖浓度服从正态分布

H1: 健康成人男性血糖浓度不服从正态分布

blo<-c(87,77,92,68,80,78,84,77,81,80,80,77,92,86,76,80,81,75,77,72,81,90,84,86,80,68,77,87,76,77,78,92,75,80,78)
aa<-scale(blo)#标准化
ks.test(aa,pnorm)

结果解释:D小,p大,不能拒绝H0,即健康成年男人血糖浓度服从正态分布。

data:  aa
D = 0.16523, p-value = 0.2949
alternative hypothesis: two-sided

2.Anderson–Darling test

Anderson–Darling检验是一种用来检验给定的样本是否来自于某个确定的概率分布的统计检验方法。在R语言中,我们可以从nortest包中的ad.test()进行检验。

R函数:

ad.test(x)

使用说明:

参数设置:

x:观测值向量,是数字向量即可,可以存在缺失值;非缺失值数量必须>7。

结果解释:

A值:A越小,越接近0,表示样本数据越接近正态分布
p值:如果p-value小于显著性水平α(0.05),则拒绝H0

Example:

library("nortest")
x<-rnorm(10,0,2)
ad.test(x)


Anderson-Darling normality test
data:  x
A = 0.22765, p-value = 0.7452

3.Shapiro-Wilk test

Shapiro-Wilk检验在小样本情况下,是很普通的正态性检验方法,Shapiro.test()在默认安装的stats包中。原假设H0:数据符合正态分布。然而, 因为样本量的大小会导致检验存在偏差,检验在任何大样品中可能有统计学意义上的正态分布。因此, 除了Shapiro-Wilk test 之外, 还需要进行 Q–Q 的图形验证。

(检验统计量W)

R函数:

shapiro.test(x)

使用说明:

数设置:

x:观测值向量,是数字向量即可,可以存在缺失值;非缺失值数量必须>3且<5000。

结果解释:

W值:W越小,越接近0,表示样本数据越接近正态分布
p值:如果p-value小于显著性水平α(0.05),则拒绝H0

Example:

x<-rnorm(10,0,2)
shapiro.test(x)

Shapiro-Wilk normality test
data:  x
W = 0.92412, p-value = 0.3926

4.Lilliefor test

Lilliefor test是基于Kolmogorov–Smirnov test的一种正态性检验。原假设H0:数据符合正态分布,其检验没有确定来自哪一个具体的正态分布lillie.test()也在nortest包中。

R函数:

lillie.test(x)

使用说明:

数设置:

x:观测值向量,是数字向量即可,可以存在缺失值;非缺失值数量必须>4。

结果解释:

D值:D越小,越接近0,表示样本数据越接近正态分布
p值:如果p-value小于显著性水平α(0.05),则拒绝H0

Example:

library("nortest")
x<-rnorm(10,0,2)
lillie.test(x)

Lilliefors (Kolmogorov-Smirnov) normality test
data:  x
D = 0.20253, p-value = 0.2906

  

  

  

  

posted @ 2017-04-19 14:17  REAY  阅读(33509)  评论(0编辑  收藏  举报