Я пытаюсь использовать 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 в Stata, Stata может использовать код:
contrast b#c@a
Это даст F-тест для взаимодействия b*c на уровнях a.
Я пытаюсь сделать то же самое с lsmeans
в R. Но у меня ничего не получается. Вот что я пробовал:
library(lsmeans)
lsm <- lsmeans(three_fit, c("b", "c"), by="a")
test(contrast(lsm, "consec"), joint=TRUE)
Это дает мне F-тест, но он неверен (или, по крайней мере, не тот, который мне нужен). Будем признательны за любую помощь в воспроизведении результатов Stata. Я бы очень хотел остаться в пределах lsmeans
, чтобы сделать это, но если что-то еще сработает, я возьму это.