我正在使用R来运行ANOVA(通常的aov代码,它提供了这些信息:Df、Sum Sq、Mean Sq、F值、Pr(>F)),还有一条信息我没有能够从这些表中得到:因变量的估计边际均值。
我知道可以从 SPSS 中的方差分析中获取这些附加信息,但我无法在 R 中复制它。
我使用 dput() 的最少数据:
因变量(连续):结构(c(0.5092,0.6965,0.4308,0.634,0.4258)
自变量(分类,因子):结构(c(3L,3L,4L,1L,2L)
控制变量#1(分类,因子):结构(c(1L,2L,2L,2L,2L)
控制变量#2(分类,因子):结构(c(2L,2L,5L,3L,2L)
ANOVA公式:aov(dep.variable ~ indep.variablecntrl#1cntrl#2, data = data)
我的自变量是一个有4个水平的因素。在控制 cntrl #1 和 #2 后,我需要自变量每个级别的因数值的平均值。
我会很感激你的帮助。
aov()
是 lm()
的包装器,专为提供方差分析预期的通常输出而量身定制。您可以像使用 coef()
输出一样使用 lm()
获得系数,或者直接使用 lm()
:
x = data.frame(
y = c(
rnorm(10, 5, 2),
rnorm(10, 8, 2)
),
g = rep(letters[1:2], each = 10)
)
aov(y ~ g, data = x)
Call:
aov(formula = y ~ g, data = x)
Terms:
g Residuals
Sum of Squares 33.06216 81.16610
Deg. of Freedom 1 18
Residual standard error: 2.123494
Estimated effects may be unbalanced
使用
coef()
获取组意味着:
aov(y ~ g, data = x) |> coef()
(Intercept) gb
5.784686 2.571465
或直接致电
lm()
:
lm(y ~ g, data = x)
Call:
lm(formula = y ~ g, data = x)
Coefficients:
(Intercept) gb
5.785 2.571
请注意,第一组
'a'
的平均值在 (Intercept)
项中,而 'b'
的效果是与此截距的差异。实际组均值是 'a'
的截距和 'b'
的两个系数之和。