r - 与 excel 和手动计算相比,为什么使用 R 得到不同的单向方差分析输出?

标签 r excel

我是 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/

相关文章:

excel - 工作表更改两个选择相交

vba - 该程序选择整行,如何将选择限制为A到M

excel - 在 VBA 中设置变量范围

r - 计算字符串中 "("出现的次数

r - 在不使用 xlsx 包的情况下将 csv 转换为 excel

r - R中的距离矩阵

r - 分组变量上的 ggplot 和 ggsignif 错误

vba - 排序字段的 add2 是什么

python - 从一个 excel 添加带有合并单元格的标题并插入到另一个 excel Pandas

r - 使用 purrr 按向量中的值进行过滤