J'essaie de passer de l'utilisation du ez
package à lme
des mesures répétées ANOVA (car j'espère que je pourrai utiliser des contrastes personnalisés avec lme
).
En suivant les conseils de ce billet de blog, j'ai pu configurer le même modèle en utilisant à la fois aov
(comme le fait ez
, sur demande) et lme
. Cependant, alors que dans l'exemple donné dans ce post, les valeurs F sont parfaitement d'accord entre aov
et lme
(je l'ai vérifié, et elles le font), ce n'est pas le cas pour mes données. Bien que les valeurs F soient similaires, elles ne sont pas identiques.
aov
renvoie une valeur f de 1,3399, lme
renvoie 1,36264. Je suis prêt à accepter le aov
résultat comme étant le "bon" car c'est aussi ce que SPSS renvoie (et c'est ce qui compte pour mon terrain / mon superviseur).
Des questions:
Ce serait formidable si quelqu'un pouvait expliquer pourquoi cette différence existe et comment je peux l'utiliser
lme
pour fournir des résultats crédibles. (Je serais également disposé à utiliser à lalmer
place delme
ce type de contenu, s'il donne le résultat "correct". Cependant, je ne l'ai pas utilisé jusqu'à présent.)Après avoir résolu ce problème, je voudrais exécuter une analyse de contraste. En particulier, je serais intéressé par le contraste de la mise en commun des deux premiers niveaux de facteur (c.-à-d.
c("MP", "MT")
) Et de le comparer avec le troisième niveau de facteur (c.-à"AC"
-d.). De plus, tester le troisième par rapport au quatrième niveau de facteur (c.-à-d. Par"AC"
rapport à"DA"
).
Les données:
tau.base <- structure(list(id = structure(c(1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L,
9L, 10L, 11L, 12L, 13L, 14L, 15L, 16L, 17L, 18L, 19L, 20L, 21L,
22L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L,
14L, 15L, 16L, 17L, 18L, 19L, 20L, 21L, 22L, 1L, 2L, 3L, 4L,
5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 15L, 16L, 17L, 18L,
19L, 20L, 21L, 22L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L,
11L, 12L, 13L, 14L, 15L, 16L, 17L, 18L, 19L, 20L, 21L, 22L), .Label = c("A18K",
"D21C", "F25E", "G25D", "H05M", "H07A", "H08H", "H25C", "H28E",
"H30D", "J10G", "J22J", "K20U", "M09M", "P20E", "P26G", "P28G",
"R03C", "U21S", "W08A", "W15V", "W18R"), class = "factor"), factor = structure(c(1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L,
4L, 4L, 4L, 4L, 4L, 4L, 4L), .Label = c("MP", "MT", "AC", "DA"
), class = "factor"), value = c(0.9648092876, 0.2128662077, 1,
0.0607615485, 0.9912814024, 3.22e-08, 0.8073856412, 0.1465590332,
0.9981672618, 1, 1, 1, 0.9794401938, 0.6102546108, 0.428651501,
1, 0.1710644881, 1, 0.7639763913, 1, 0.5298989196, 1, 1, 0.7162733447,
0.7871177434, 1, 1, 1, 0.8560509327, 0.3096989662, 1, 8.51e-08,
0.3278862311, 0.0953598576, 1, 1.38e-08, 1.07e-08, 0.545290432,
0.1305621416, 2.61e-08, 1, 0.9834051136, 0.8044114935, 0.7938839461,
0.9910112678, 2.58e-08, 0.5762677121, 0.4750002288, 1e-08, 0.8584252623,
1, 1, 0.6020385797, 8.51e-08, 0.7964935271, 0.2238374288, 0.263377904,
1, 1.07e-08, 0.3160751898, 5.8e-08, 0.3460325565, 0.6842217296,
1.01e-08, 0.9438301877, 0.5578367224, 2.18e-08, 1, 0.9161424562,
0.2924856039, 1e-08, 0.8672987992, 0.9266688748, 0.8356425464,
0.9988463913, 0.2960361777, 0.0285680426, 0.0969063841, 0.6947998266,
0.0138254805, 1, 0.3494775301, 1, 2.61e-08, 1.52e-08, 0.5393467752,
1, 0.9069223275)), .Names = c("id", "factor", "value"), class = "data.frame", row.names = c(1L,
6L, 10L, 13L, 16L, 17L, 18L, 22L, 23L, 24L, 27L, 29L, 31L, 33L,
42L, 43L, 44L, 45L, 54L, 56L, 58L, 61L, 64L, 69L, 73L, 76L, 79L,
80L, 81L, 85L, 86L, 87L, 90L, 92L, 94L, 96L, 105L, 106L, 107L,
108L, 117L, 119L, 121L, 124L, 127L, 132L, 136L, 139L, 142L, 143L,
144L, 148L, 149L, 150L, 153L, 155L, 157L, 159L, 168L, 169L, 170L,
171L, 180L, 182L, 184L, 187L, 190L, 195L, 199L, 202L, 205L, 206L,
207L, 211L, 212L, 213L, 216L, 218L, 220L, 222L, 231L, 232L, 233L,
234L, 243L, 245L, 247L, 250L))
Et le code:
require(nlme)
summary(aov(value ~ factor+Error(id/factor), data = tau.base))
anova(lme(value ~ factor, data = tau.base, random = ~1|id))
lme
résultats du manuel standard ANOVA (donné paraov
, et qui est ce dont j'ai besoin), ce n'est pas une option pour moi. Dans mon article, je veux signaler une ANOVA, pas quelque chose comme une ANOVA. Il est intéressant de noter que Venables et Ripley (2002, p. 285) montrent que les deux approches conduisent à des estimations identiques. Mais les différences de valeurs F me laissent un mauvais pressentiment. De plus,Anova()
(fromcar
) ne renvoie que des valeurs Chi² pour leslme
objets. Par conséquent, pour moi, ma première question n'a pas encore de réponse.lme
; mais pour les contrastes,glht
fonctionne aussi sur leslm
ajustements, pas seulement sur leslme
ajustements. (De plus, leslme
résultats sont également des résultats standards des manuels scolaires.)lm
pour une analyse de mesure répétée. Seulaov
peut gérer des mesures répétées mais retournera un objet de classeaovlist
qui n'est malheureusement pas géré parglht
.lm
utilise l'erreur résiduelle comme terme d'erreur pour tous les effets; lorsqu'il y a des effets qui devraient utiliser un terme d'erreur différent,aov
est nécessaire (ou à la place, utiliser les résultats delm
pour calculer les F-stats manuellement). Dans votre exemple, le terme d'erreur pourfactor
est l'id:factor
interaction, qui est le terme d'erreur résiduel dans un modèle additif. Comparez vos résultats àanova(lm(value~factor+id))
.Réponses:
Ils sont différents car le modèle lme force la composante de variance de
id
à être supérieure à zéro. En regardant le tableau anova brut pour tous les termes, nous voyons que l'erreur quadratique moyenne pour id est inférieure à celle pour les résidus.Lorsque nous calculons les composantes de la variance, cela signifie que la variance due à id sera négative. Ma mémoire de la mémoire des carrés moyens attendue est fragile, mais le calcul est quelque chose comme
Cela peut sembler étrange, mais cela peut arriver. Cela signifie que les moyennes de chaque id sont plus proches les unes des autres que vous ne vous y attendez compte tenu de la quantité de variation résiduelle dans le modèle.
En revanche, l'utilisation de lme force cette variance à être supérieure à zéro.
Cela rapporte les écarts-types, la mise au carré pour obtenir les rendements de variance
9.553e-10
pour la variance id et0.1586164
pour la variance résiduelle.Maintenant, vous devez savoir que l'utilisation
aov
de mesures répétées n'est appropriée que si vous pensez que la corrélation entre toutes les paires de mesures répétées est identique; c'est ce qu'on appelle la symétrie composée. (Techniquement, sphéricité est nécessaire , mais cela suffit pour l' instant.) L' une des raisons d'utiliserlme
plusaov
est qu'il peut gérer différents types de structures de corrélation.Dans cet ensemble de données particulier, l'estimation de cette corrélation est négative; cela permet d'expliquer comment l'erreur quadratique moyenne pour id était inférieure à l'erreur quadratique résiduelle. Une corrélation négative signifie que si la première mesure d'un individu était inférieure à la moyenne, en moyenne, sa seconde serait supérieure à la moyenne, ce qui rend les moyennes totales des individus moins variables que ce à quoi nous nous attendions s'il y avait une corrélation nulle ou une corrélation positive.
L'utilisation
lme
avec un effet aléatoire équivaut à ajuster un modèle de symétrie composé où cette corrélation est forcée d'être non négative; nous pouvons ajuster un modèle où la corrélation peut être négative en utilisantgls
:Cette table ANOVA s'accorde avec la table de l'
aov
ajustement et de l'lm
ajustement.Okay, alors quoi? Eh bien, si vous pensez que la variance
id
et la corrélation entre les observations devraient être non négatives, l'lme
ajustement est en fait plus approprié que l'ajustement utilisantaov
oulm
que son estimation de la variance résiduelle est légèrement meilleure. Cependant, si vous croyez que la corrélation entre les observations pourrait être négative,aov
oulm
ougls
est mieux.Vous pourriez également être intéressé par une exploration plus approfondie de la structure de corrélation; pour regarder une structure de corrélation générale, vous feriez quelque chose comme
Ici, je limite uniquement la sortie à la structure de corrélation. Les valeurs 1 à 4 représentent les quatre niveaux de
factor
; on voit que le facteur 1 et le facteur 4 ont une corrélation négative assez forte:Une façon de choisir entre ces modèles consiste à utiliser un test de rapport de vraisemblance; cela montre que le modèle à effets aléatoires et le modèle général de structure de corrélation ne sont pas statistiquement significativement différents; lorsque cela se produit, le modèle le plus simple est généralement préféré.
la source
lme
pour obtenir les mêmes résultats qu'avecaov
(et ainsi activerlme
pour toutes les ANOVA), à savoir en utilisant l'argument de corrélation dans l'appel àlme
:anova(lme(value ~ factor, data = tau.base, random = ~1|id, correlation = corCompSymm(form = ~1|id)))
aov
,lme
sans symétrie composé, etlme
avec symétrie composé) ont exactement le même nombre de DSF.anova.lme()
. D'après votre réponse, j'ai compris que la relation entre l'ANOVA et les modèles mixtes réside dans leur structure de corrélation. J'ai ensuite lu que l'imposition d'une structure de corrélation symétrique compund conduit à l'égalité entre les deux approches. C'est pourquoi je l'ai imposé. Je n'ai aucune idée si cela mange un autre df. La sortie n'est cependant pas d'accord avec cette interprétation.aov()
s'adapte au modèle via l'lm()
utilisation des moindres carrés,lme
s'adapte via le maximum de vraisemblance. Cette différence dans la façon dont les paramètres du modèle linéaire sont estimés explique probablement la (très petite) différence dans vos valeurs f.En pratique (par exemple pour les tests d'hypothèses), ces estimations sont les mêmes, donc je ne vois pas comment l'une pourrait être considérée comme «plus crédible» que l'autre. Ils proviennent de différents paradigmes d'ajustement de modèle.
Pour les contrastes, vous devez configurer une matrice de contraste pour vos facteurs. Venebles et Ripley montrent comment procéder sur les p 143, p.146 et p.293-294 de la 4e édition.
la source
lme
oulmer
de calculer une ANOVA (à proprement parler) car il utilise une méthode similaire mais pas identique. N'y a-t-il donc aucun moyen de calculer les contrastes pour les ANOVA à mesures répétées dans R?