R语言检验正态分布

转自:https://www.cnblogs.com/REAY/p/6709177.html

正态检验与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: 健康成人男性血糖浓度不服从正态分布

1

2

3

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,即健康成年男人血糖浓度服从正态分布。

1

2

3

data:  aa

D = 0.16523, p-value = 0.2949

alternative hypothesis: two-sided

猜你喜欢

转载自blog.csdn.net/weixin_43604756/article/details/89452805