Que fait la commande anova () avec un objet modèle lmer?

30

J'espère que c'est une question à laquelle quelqu'un ici peut répondre pour moi sur la nature de la décomposition des sommes de carrés à partir d'un modèle à effets mixtes lmer(à partir du package lme4 R).

Tout d'abord, je dois dire que je suis conscient de la controverse liée à l'utilisation de cette approche et, dans la pratique, je serais plus susceptible d'utiliser un TLR amorcé pour comparer les modèles (comme suggéré par Faraway, 2006). Cependant, je suis perplexe sur la façon de reproduire les résultats, et donc pour ma propre raison, j'ai pensé demander ici.

Fondamentalement, je commence à utiliser des modèles à effets mixtes adaptés au lme4package. Je sais que vous pouvez utiliser la anova()commande pour donner un résumé des tests séquentiels des effets fixes dans le modèle. Autant que je sache, c'est ce que Faraway (2006) appelle l'approche des «carrés moyens attendus». Ce que je veux savoir, c'est comment sont calculées les sommes des carrés?

Je sais que je pourrais prendre les valeurs estimées d'un modèle particulier (en utilisant coef()), supposer qu'elles sont fixes, puis faire des tests en utilisant les sommes des carrés des résidus du modèle avec et sans les facteurs d'intérêt. C'est très bien pour un modèle contenant un seul facteur intra-sujet. Cependant, lors de la mise en œuvre d'une conception à parcelles divisées, la valeur des sommes des carrés que j'obtiens est équivalente à la valeur produite par R en utilisant aov()une Error()désignation appropriée . Cependant, ce n'est pas la même chose que les sommes des carrés produites par la anova()commande sur l'objet modèle, malgré le fait que les rapports F sont les mêmes.

Bien sûr, cela est tout à fait logique car il n'est pas nécessaire pour les Error()strates dans un modèle mixte. Cependant, cela doit signifier que les sommes des carrés sont pénalisées d'une manière ou d'une autre dans un modèle mixte afin de fournir des ratios F appropriés. Comment y parvient-on? Et comment le modèle corrige-t-il en quelque sorte la somme des carrés entre les parcelles, mais pas la somme des carrés intra-parcelles. Évidemment, c'est quelque chose qui est nécessaire pour une ANOVA à parcelles divisées classique qui a été obtenue en désignant différentes valeurs d'erreur pour les différents effets, alors comment un modèle à effets mixtes permet-il cela?

Fondamentalement, je veux pouvoir reproduire anova()moi-même les résultats de la commande appliquée à un objet de modèle lmer pour vérifier les résultats et ma compréhension, mais pour le moment, je peux y parvenir pour une conception intra-sujet normale, mais pas pour le fractionnement. la conception de l'intrigue et je n'arrive pas à comprendre pourquoi c'est le cas.

Par exemple:

library(faraway)
library(lme4)
data(irrigation)

anova(lmer(yield ~ irrigation + variety + (1|field), data = irrigation))

Analysis of Variance Table
           Df Sum Sq Mean Sq F value
irrigation  3 1.6605  0.5535  0.3882
variety     1 2.2500  2.2500  1.5782

summary(aov(yield ~ irrigation + variety + Error(field/irrigation), data = irrigation))

Error: field
           Df Sum Sq Mean Sq F value Pr(>F)
irrigation  3  40.19   13.40   0.388  0.769
Residuals   4 138.03   34.51               

Error: Within
          Df Sum Sq Mean Sq F value Pr(>F)
variety    1   2.25   2.250   1.578  0.249
Residuals  7   9.98   1.426               

Comme on peut le voir ci-dessus, les ratios F sont tous d'accord. Les sommes des carrés pour la variété sont également d'accord. Cependant, les sommes des carrés pour l'irrigation ne sont pas d'accord, mais il semble que la sortie de lmer soit mise à l'échelle. Alors, que fait réellement la commande anova ()?

Martyn
la source
1
Vous voudrez peut - être jeter un oeil à la fonction mixed()de afexqui offre ce que vous voulez (via method = "PB"). Et comme vous avez évidemment fait des tests avec des données de jouets, il serait certainement utile de montrer ces équivalences avec les données et le code (donc pas de +1).
Henrik
@Henrik Tough foule ... Martyn, pourriez-vous donner la référence pour Faraway (2006) s'il vous plaît?
Patrick Coulombe
@PatrickCoulombe Hehe, vous avez raison. Mais parfois, une force amie aide à obtenir de meilleures questions.
Henrik
1
Aaron a raison dans la référence du livre, excuses de ne pas l'avoir fourni à l'origine!
Martyn

Réponses:

31

Utilisez la source, Luke. Nous pouvons jeter un œil à l'intérieur de la fonction ANOVA en faisant getAnywhere(anova.Mermod). La première partie de cette fonction consiste à comparer deux modèles différents. L'anova sur les effets fixes entre dans le grand elsebloc au second semestre:

 dc <- getME(object, "devcomp")
        X <- getME(object, "X")
        asgn <- attr(X, "assign")
        stopifnot(length(asgn) == (p <- dc$dims[["p"]]))
            ss <- as.vector(object@pp$RX() %*% object@beta)^2
        names(ss) <- colnames(X)
        terms <- terms(object)
        nmeffects <- attr(terms, "term.labels")[unique(asgn)]
        if ("(Intercept)" %in% names(ss)) 
            nmeffects <- c("(Intercept)", nmeffects)
        ss <- unlist(lapply(split(ss, asgn), sum))
        stopifnot(length(ss) == length(nmeffects))
        df <- vapply(split(asgn, asgn), length, 1L)
        ms <- ss/df
        f <- ms/(sigma(object)^2)
        table <- data.frame(df, ss, ms, f)
        dimnames(table) <- list(nmeffects, c("Df", "Sum Sq", 
            "Mean Sq", "F value"))
        if ("(Intercept)" %in% nmeffects) 
            table <- table[-match("(Intercept)", nmeffects), 
                ]
        attr(table, "heading") <- "Analysis of Variance Table"
        class(table) <- c("anova", "data.frame")
        table

objectest la sortie lmer. Nous commençons à calculer la somme des carrés de la ligne 5: ss <- as.vector ...Le code multiplie les paramètres fixes (in beta) par une matrice triangulaire supérieure; puis carré chaque terme. Voici cette matrice triangulaire supérieure pour l'exemple d'irrigation. Chaque ligne correspond à l'un des cinq paramètres d'effets fixes (interception, 3 degrés de liberté pour l'irrigation, 1 df pour la variété).

zapsmall(irrigation.lmer@pp$RX(), digits = 3)
      [,1]  [,2]   [,3]   [,4]  [,5]
[1,] 0.813 0.203  0.203  0.203 0.407
[2,] 0.000 0.352 -0.117 -0.117 0.000
[3,] 0.000 0.000  0.332 -0.166 0.000
[4,] 0.000 0.000  0.000  0.287 0.000
[5,] 0.000 0.000  0.000  0.000 2.000

La première ligne vous donne la somme des carrés pour l'interception et la dernière vous donne le SS pour l'effet de variété intra-champs. Les lignes 2 à 4 n'impliquent que les 3 paramètres pour les niveaux d'irrigation, donc la pré-multiplication vous donne trois morceaux de SS pour l'irrigation.

Ces pièces ne sont pas intéressantes en elles-mêmes car elles proviennent du contraste de traitement par défaut dans R, mais en ligne, ss <- unlist(lapply(split ....Bates récupère des morceaux de sommes en fonction du nombre de niveaux et des facteurs auxquels ils se réfèrent. Il y a beaucoup de comptabilité ici. Nous obtenons également les degrés de liberté (qui sont 3 pour l'irrigation). Ensuite, il obtient les carrés moyens qui apparaissent sur l'impression de anova. Enfin, il partage tous ses moyens carrés par la variance intra-groupes résiduels, sigma(object)^2.

Alors que se passe-t-il? La philosophie de lmern'a rien à voir avec la méthode d'approche des moments utilisée par aov. L'idée lmerest de maximiser une probabilité marginale obtenue en intégrant les effets aléatoires invisibles. Dans ce cas, le niveau de fertilité aléatoire de chaque champ. Le chapitre 2 de Pinheiro et Bates décrit la laideur de ce processus. La RXmatrice utilisée pour obtenir les sommes des carrés est leur matrice de l'équation 2.17, page 70 du texte. Cette matrice est obtenue à partir d'un tas de décompositions QR sur (entre autres) la matrice de conception des effets aléatoires et , où est la variance de l'effet de champ . C'est ce facteur manquantR00 σ 2 fσ2/σf2σf2 vous posiez des questions, mais cela n'entre pas dans la solution de manière transparente ou simple.

De manière asymptotique, les estimations des effets fixes ont une distribution:

β^N(β,σ2[R001R00T])

ce qui signifie que les composants de sont distribués indépendamment. Si , les carrés de ces termes (divisés par ) suivent une distribution chi carré. La division par l'estimation de (un autre chi carré lorsqu'il est divisé par ) donne une statistique F. Nous ne divisons pas par l'erreur quadratique moyenne pour l'analyse entre les groupes, car cela n'a rien à voir avec ce qui se passe ici. Nous devons comparer les sommes des carrés obtenues par en les comparant à une estimation de . la ß = 0 σ 2 σ 2 σ 2 R 00 σ 2R00β^β=0σ2σ2σ2R00σ2

Notez que vous n'auriez pas obtenu les mêmes statistiques F si les données avaient été déséquilibrées. Vous n'auriez pas non plus obtenu les mêmes statistiques F si vous aviez utilisé ML au lieu de REML.

L'idée sous-jacente aovest que les carrés moyens attendus pour l'irrigation sont fonction de , et des effets d'irrigation. Le carré moyen attendu pour les résidus de champ est une fonction de et . Lorsque les effets d'irrigation sont nuls, ces deux quantités estiment la même chose et leur rapport suit une distribution F.σ 2 f σ 2 σ 2 fσ2σf2σ2σf2

Fait intéressant, Bates et Pinheiro recommandent d'utiliser l'ANOVA plutôt que d'adapter deux modèles et de faire un test de rapport de vraisemblance. Ce dernier a tendance à être anti-conservateur.

Bien sûr, si les données sont déséquilibrées, on ne sait plus exactement quelle hypothèse l'ANOVA teste. J'ai retiré la première observation des données d'irrigation et je l'ai remontée. Voici à nouveau la matrice :R00

zapsmall(fit2@pp$RX(), digits = 3)
      [,1]  [,2]   [,3]   [,4]   [,5]
[1,] 0.816 0.205  0.205  0.205  0.457
[2,] 0.000 0.354 -0.119 -0.119 -0.029
[3,] 0.000 0.000  0.334 -0.168 -0.040
[4,] 0.000 0.000  0.000  0.288 -0.071
[5,] 0.000 0.000  0.000  0.000  1.874

Comme vous pouvez le voir, les sommes des carrés des paramètres d'irrigation contiennent également une partie de l' varietyeffet.

Placidia
la source
10
+6, c'est toujours agréable de voir une vieille question sans réponse être ramassée et si bien répondue. Que la source soit avec vous ...
gung - Réinstallez Monica