我是 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 个自由度。我无法理解这一点 - 我做错了什么?
谢谢
最佳答案
这是因为你有 data$Z
作为数值变量。见上面 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
看看你的变量是如何存储的。它是最常用的 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 ...
关于r - 与 excel 和手动计算相比,为什么使用 R 得到不同的单向方差分析输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19795754/