2017-09-02 3 views
1

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

  1. dans un modèle de régression qui a une interaction entre les variables de facteur;

  2. 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.

Répondre

1

Je pense que ce que vous cherchez est

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

qui est, vous voulez tester l'interaction contraste, pas de comparaisons entre les moyens. Vous pouvez voir ce que vous testez (je le recommande!) En exécutant cet appel contrast sans l'encapsuler dans test. Essayez-le avec et sans le mot-clé interaction.

+0

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

+0

Avez-vous essayé d'ajouter 'by =" a "' à l'appel 'test'? – rvl