如何理解R语言做正态性检验的分析

如何理解R语言做正态性检验的分析,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

在彝良等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供网站建设、网站制作 网站设计制作按需定制网站,公司网站建设,企业网站建设,高端网站设计,网络营销推广,成都外贸网站建设,彝良网站建设费用合理。

R语言里做做正态性检验通常用到的函数是shaporo.test(),这个是叫Shapiro-Wilk(夏皮罗-威尔克)正态性性检验。

对应的原假设是 样本X来自的总体具有正态性分布

比如代码

> x<-rnorm(100)
> shapiro.test(x)

 Shapiro-Wilk normality test

data:  x
W = 0.99187, p-value = 0.8117
 

p值大于0.05接受原假设

今天一位同学提出 shaporo.test() 这个函数输出数据的范围是 3~5000,超出5000该如何做呢? 我自己之前还没有注意到过样本量超出5000的情况。

第一个想到的是 在大于5000的样本里再随机选一个小于5000的样本就可以了

示例代码

x<-rnorm(6000)
x1<-sample(x,3000,replace = F)
shapiro.test(x1)
 

但这种情况好像不太稳定,我试了一下有时候算出来的p值是小于0.05的。那我们就可以多抽几次,看p值小于0.05出现次数的多少

还找到一种方法是 直接可视化数据来观察

可以选密度分布图和qq图

参考链接是 http://www.sthda.com/english/wiki/normality-test-in-r

示例代码

x<-rnorm(6000)
library(ggpubr)
p1<-ggdensity(x)
p2<-ggqqplot(x)
library(cowplot)
plot_grid(p1,p2,ncol=2)
 
如何理解R语言做正态性检验的分析
image.png

密度分布图是山形,qq图所有的点基本都分布在直线的周围,那就可以判定数据符合正态分布了。

另外还找到一个函数 ad.test() 

这个函数对应的R包 nortest

找到这个函数的链接是 https://github.com/jamovi/jmv/issues/160

这个函数对应的是 Anderson-Darling test for normality 这个对应的中文名是啥暂时还不知道。

示例代码

library(nortest)
ad.test(rnorm(100, mean = 5, sd = 3))

 Anderson-Darling normality test

data:  rnorm(100, mean = 5, sd = 3)
A = 0.3425, p-value = 0.485
 

这个函数对应的零假设应该也是 样本来自正态总体

比如试一下

ad.test(1:100)


Anderson-Darling normality test

data:  1:100
A = 1.0837, p-value = 0.007308
 

很明显1:100不符合正态分布

这里得到p值小于0.05,拒绝原假设,最终的结论就是数据总体不符合正态分布。

看完上述内容,你们掌握如何理解R语言做正态性检验的分析的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注创新互联行业资讯频道,感谢各位的阅读!


网站名称:如何理解R语言做正态性检验的分析
网站URL:http://hbruida.cn/article/ihjseo.html