我正在尝试使用lsmeans
及其对比对交互进行 F 检验。基本上,我想复制 Stata 使用它的contrast
命令所做的事情。我想这样做有两个原因:
在因子变量之间具有交互作用的回归模型中;
在 ANOVA 中帮助分解三向交互。
对于这个问题,我会问三向交互。
library(haven)
threeway <- read_spss("https://stats.idre.ucla.edu/wp-content/uploads/2016/02/threeway.sav")
threeway$ID <- row.names(threeway)
library(afex)
three_fit <- aov_ez("ID", "y", data = threeway, between = c("a", "b", "c"))
three_fit
> three_fit
Anova Table (Type 3 tests)
Response: y
Effect df MSE F ges p.value
1 a 1, 12 1.33 112.50 *** .90 <.0001
2 b 1, 12 1.33 0.50 .04 .49
3 c 2, 12 1.33 47.84 *** .89 <.0001
4 a:b 1, 12 1.33 120.13 *** .91 <.0001
5 a:c 2, 12 1.33 6.84 * .53 .01
6 b:c 2, 12 1.33 8.47 ** .59 .005
7 a:b:c 2, 12 1.33 6.97 ** .54 .010
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘+’ 0.1 ‘ ’ 1
三方互动意义重大。现在,从 Stata 上的UCLA 页面,Stata 可以使用以下代码:
contrast b#c@a
这将为 a 级别的 b*c 交互生成 F 检验。
我正在尝试lsmeans
在 R 中做同样的事情。但是,我就是不明白。这是我尝试过的:
library(lsmeans)
lsm <- lsmeans(three_fit, c("b", "c"), by="a")
test(contrast(lsm, "consec"), joint=TRUE)
这让我进行了 F 检验,但它不正确(或者至少它不是我想要的)。复制Stata结果的任何帮助将不胜感激。我真的很想留在里面lsmeans
做这件事,但如果有别的办法,我会接受的。