如何在 R 中处理错误“Error in shapiro.test(…) : sample size must be between 3 and 5000”?


shapiro.test 在 R 中有一个限制,即它只能应用于最多 5000 个样本,并且最小样本量必须为 3。因此,我们有一个替代的假设检验称为 Anderson Darling 正态性检验。要执行此检验,我们需要加载 nortest 包并使用 ad.test 函数,如下例所示。

考虑以下数据框 -

示例

 在线演示

x<-rnorm(1000000)
df1<-data.frame(x)
head(df1,20)

输出

     x
1    1.27305105
2    1.79910461
3   -1.05456918
4    0.27247323
5   -1.22709375
6    1.87211271
7   -0.98918543
8   -0.98504275
9    0.55901414
10   1.17920161
11  -0.16612397
12  -0.89614357
13  -0.70229748
14   1.16583130
15  -0.17427556
16   0.05428080
17   1.26193927
18   0.63517470
19  -0.02052002
20  -1.23316924

对 x 执行 shapiro.test -

shapiro.test(df1$x)

Error in shapiro.test(df1$x) : sample size must be between 3 and 5000

加载 nortest 包并对 x 执行 Anderson Darling 检验 -

library(nortest)
ad.test(df1$x)
   Anderson-Darling normality test
data: df1$x
A = 0.21458, p-value = 0.8496

示例

 在线演示

y<-sample(0:9,500000,replace=TRUE)
df2<-data.frame(y)
head(df2,20)

输出

   y
1  8
2  9
3  7
4  0 
5  3
6  4
7  9
8  3
9  1
10 5
11 9
12 4
13 5
14 9
15 5
16 7
17 1
18 0
19 4
20 4

对 y 执行 Anderson Darling 检验 -

ad.test(df2$y)
   Anderson-Darling normality test
data: df2$y
A = 8634.6, p-value < 2.2e-16

更新于: 2021 年 2 月 8 日

3K+ 次浏览

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告