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的样本就可以了
示例代码
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<-ggdens