2017-09-02 112 views
1

我正在尝试使用lsmeans及其对交互作用的F测试的对比。基本上,我想复制Stata用它的contrast命令做的事情。我想有两个原因这样做:交互作用项的信息对比

  1. 具有因子变量之间的相互作用回归模型中

    ;

  2. 内的方差分析,以帮助分解三方互动。

对于这个问题,我会问一下关于三向交互的问题。

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#[email protected] 

这将在的水平产生F-检验为B * C的相互作用。

我想在R中做lsmeans。但是,我只是无法得到它。以下是我已经试过:

library(lsmeans) 
lsm <- lsmeans(three_fit, c("b", "c"), by="a") 
test(contrast(lsm, "consec"), joint=TRUE) 

这让我的F-测试,但它是不正确的(或至少它不是一个我想要的)。我们将不胜感激复制Stata结果的任何帮助。我真的很想在lsmeans之内做到这一点,但如果其他工作,我会采取。

回答

1

我想你要找的是什么

test(contrast(lsm, interaction = "consec"), joint=TRUE) 
也就是说,你要测试的交互手段之间的对比,而不是比较

。通过运行contrast调用,您可以看到您正在测试的是什么(我推荐!),而不用将其包装在test中。尝试使用和不使用interaction关键字。

+0

感谢您的建议 - 但这只能让我得到一个F检测结果(奇怪的是2,12ff)。我正在寻找每个级别为“a”的交互F-测试(每个都有2,12df)。 – Michael

+0

您是否尝试在'test'调用中添加'by =“a”'? – rvl