2

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

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

  2. 在 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做这件事,但如果有别的办法,我会接受的。

4

1 回答 1

2

我想你要找的是

test(contrast(lsm, interaction = "consec"), joint=TRUE)

也就是说,您要测试交互对比,而不是均值之间的比较。您可以通过运行该contrast调用而不将其包装在test. 尝试使用和不使用interaction关键字。

于 2017-09-02T22:31:50.610 回答