1

我是 R 新手,所以可能做错了什么,但我已经搜索了许多不同的方法来做同样的事情,但仍然得到相同的结果。我有以下数据(15 个措施,3 个因素,每个措施 5 个措施): 措施:

##factors: 1, 2, 3

         Y    Z
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(lm(Y~Z, data=data)),我得到 F=2.7934、p=0.1185 和 Df=1。我也使用 aov 和 AOVModel 函数得到了相同的结果。

但是,Excel 和手动计算(以及 Minitab,实际上)都给我 F=1.728 和 p=0.219,有 2 个自由度。我无法理解这一点 - 我做错了什么?

谢谢

4

1 回答 1

5

这是因为你有data$Z一个数字变量。见上面 Dason 的评论。因此,您希望将 Z 转换为一个因子(我将 data 重命名为 dat ,就像dataR 基础对象的名称一样)。就是这样:

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查看变量的存储方式。它是最常用的 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 ...
于 2013-11-05T18:20:37.177 回答