Normal distribution test integer/discrete data

时间:2017-08-05 12:21:22

标签: r integer normal-distribution anova

I want to conduct ANOVA in R and have to check for normal distribution before. Therefore I could use shapiro.test(y) or ad.test(y). However this is not possible for discrete/integer values. I tested the following:

y <- rnorm(100, 2.5, 1)
ad.test(y) # p-value = 0.864
shapiro.test(y) # p-value = 0.9052

And discrete values:

y <- round(y)
ad.test(y) # p-value = 1.021e-08
shapiro.test(y) # p-value = 3.628e-05

Is there a way to test integer data in R Studio for normal distribution?

Best regards

1 个答案:

答案 0 :(得分:2)

使用离散数据的常态测试是没有问题的(虽然这样做可能从根本上是错误的,特别是如果数据是分类的而不是真正的数字)。正如@Dason指出的那样,舍入正常数据会改变其分布,这种方式在标准偏差较小时尤其明显。要查看标准偏差的影响,请以这种方式重复实验:

y <- rnorm(100, 250, 10)
ad.test(y) # p-value = 0.7949
y <- round(y)
ad.test(y) # p-value = 0.6395

如果你在ANOVA之前进行这样的测试并且你的p值非常低,那么也许ANOVA是不合适的。 ANOVA相当稳健,但您可以在多大程度上偏离假设。请参阅this question进行讨论。您可能需要运行非参数测试,例如Kruskal-Wallis。也许您可以在Cross Validated上发布一个描述您的实际用例的问题,因为问题确实涉及统计方法而不是R本身。