我想在进行ANOVA之前测试每个组或连续变量水平的正态性。具体而言,它的年龄与不同的宗教偏好有关。虚拟页面(http://www.dummies.com/how-to/content/how-to-test-data-normality-in-a-formal-way-in-r.html)提到了使用shapiro和tapply执行此操作的方法,但我认为代码中存在错误。有谁知道这是否有效?
答案 0 :(得分:0)
你提到了一个教程页面,其中在分组变量中完成了shapiro.test。代码确实有一点错误:
with(beaver, tapply(temp, activ, shapiro.test)
它应该是:
with(beaver2, tapply(temp, activ, shapiro.test))
如果您的数据超过5000次观察,您可以随机抽取它,但我不能说它是否在统计上有效:
with(beaver2, tapply(temp, activ, function(x) shapiro.test(sample(x, min(NROW(x), 5000)))))
我建议您检查经过交叉验证的网站,以获得有关该主题的答案,例如here
然而,
关于Nicola提到对正态p值的错误解释的评论,我完全赞同。让我们举一个例子,让我们创建一个只返回这三个值的分布:1,2和3,每个值为1/3。这与正常分布完全不同。 但是,shapiro.test表示此数据的p值为1:
shapiro.test(c(2,3,1))
#### Shapiro-Wilk normality test
#### data: c(1, 2, 3)
#### W = 1, p-value = 1