J'essaie d'utiliser lsmeans
et son contraste pour un test F sur une interaction. Fondamentalement, je voudrais reproduire ce que fait Stata avec sa commande contrast
. Je voudrais le faire pour deux raisons:lsmeans contraste pour le terme d'interaction
dans un modèle de régression qui a une interaction entre les variables de facteur;
au sein d'une ANOVA pour aider à décomposer une interaction à trois voies.
Pour cette question, je vais poser des questions sur l'interaction à trois voies.
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
L'interaction à trois voies est significative. Maintenant, à partir du UCLA page on Stata, Stata peut utiliser le code:
contrast b#[email protected]
Cela produira un F-test pour le b * interaction c au niveau d'un.
J'essaye de faire la même chose avec lsmeans
dans R. Mais, je ne peux pas l'obtenir. Voici ce que j'ai essayé:
library(lsmeans)
lsm <- lsmeans(three_fit, c("b", "c"), by="a")
test(contrast(lsm, "consec"), joint=TRUE)
Cela me obtient un F-test, mais il est pas correct (ou du moins il n'est pas celui que je veux). Toute aide à la reproduction des résultats de Stata serait appréciée. Je voudrais vraiment rester dans lsmeans
pour le faire, mais si quelque chose d'autre fonctionne, je vais le prendre.
Merci pour la suggestion - mais cela ne me donne un seul résultat de test F (bizarrement avec 2, 12 df). Je cherche un test d'interaction F (chacun avec 2,12 df) pour chaque niveau de "a". – Michael
Avez-vous essayé d'ajouter 'by =" a "' à l'appel 'test'? – rvl