为什么我会得到不同的单向ANOVA输出与Excel和手动计算相比?

我对R很陌生,所以可能会做一些错误的事情,但我已经search了许多不同的方法来做同样的事情,并且仍然得到相同的结果。 我有以下数据(15项措施,3项因素,5项措施):措施:

##factors: 1, 2, 3 YZ 1 43.0 1 2 40.5 1 3 39.6 1 4 44.9 1 5 37.2 1 6 44.4 2 7 40.5 2 8 40.1 2 9 43.3 2 10 36.1 2 11 41.1 3 12 39.2 3 13 36.4 3 14 37.2 3 15 36.7 3 

当我在R中进行单向anova时,使用> anova(lm(Y~Z, data=data)) Y〜Z, anova(lm(Y~Z, data=data)) ,得到F = 2.7934,p = 0.1185和Df = 1。 我也使用aov和AOVModel函数得到相同的结果。

然而,Excel和手动计算(和Minitab,actaully)给我F = 1.728和P = 0.219,2自由度。 我不明白这个 – 我做错了什么?

谢谢

这是因为你有data$Z作为数值variables。 见上面的Dason的评论。 所以你想要将Z转换成一个因子(我将数据重命名为dat,因为data是R基础对象的名称)。 就是这样:

 dat$Z <- as.factor(dat$Z) 

产量:

 > anova(lm(Y~Z, data=dat)) Analysis of Variance Table Response: Y Df Sum Sq Mean Sq F value Pr(>F) Z 2 26.949 13.4747 1.7281 0.219 Residuals 12 93.568 7.7973 

注意使用str来查看variables的存储方式。 这是最常用的R函数之一。

所以…

str(dat)会告诉你:

 > str(dat) 'data.frame': 15 obs. of 2 variables: $ Y: num 43 40.5 39.6 44.9 37.2 44.4 40.5 40.1 43.3 36.1 ... $ Z: int 1 1 1 1 1 2 2 2 2 2 ... 

并且在因子转换之后:

 > str(dat) 'data.frame': 15 obs. of 2 variables: $ Y: num 43 40.5 39.6 44.9 37.2 44.4 40.5 40.1 43.3 36.1 ... $ Z: Factor w/ 3 levels "1","2","3": 1 1 1 1 1 2 2 2 2 2 ...