温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

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

发布时间:2021-11-22 14:22:51 来源:亿速云 阅读:1350 作者:柒染 栏目:大数据

如何理解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语言做正态性检验的分析的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI