我尝试使用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
三方互动非常重要。现在,从UCLA page on Stata开始,Stata可以使用代码:
contrast b#c@a
这将在a的水平上产生b * c相互作用的F检验。
我试图用R中的lsmeans
做同样的事情。但是,我无法得到它。以下是我尝试过的内容:
library(lsmeans)
lsm <- lsmeans(three_fit, c("b", "c"), by="a")
test(contrast(lsm, "consec"), joint=TRUE)
这让我得到了一个F测试,但它不正确(或者至少它不是我想要的那个)。任何帮助复制Stata结果将不胜感激。我真的想留在lsmeans
内做这件事,但如果其他事情有效,我会接受它。
答案 0 :(得分:2)
我认为您正在寻找的是
test(contrast(lsm, interaction = "consec"), joint=TRUE)
也就是说,您希望测试交互对比,而不是手段之间的比较。您可以通过运行contrast
调用而不将其包含在test
中来查看您正在测试的内容(我建议!)。尝试使用和不使用interaction
关键字。