J'essaie d'exécuter une mesure répétée Anova dans R suivie de quelques contrastes spécifiques sur cet ensemble de données. Je pense que la bonne approche serait d'utiliser à
Anova()
partir du package de voiture.
Permet d'illustrer ma question avec l'exemple tiré de l' ?Anova
utilisation des
OBrienKaiser
données (Remarque: j'ai omis le facteur de genre de l'exemple):
Nous avons une conception avec un facteur entre les sujets, le traitement (3 niveaux: contrôle, A, B) et 2 répétés -mesures (au sein des sujets) facteurs, phase (3 niveaux: pré-test, post-test, suivi) et heure (5 niveaux: 1 à 5).
La table ANOVA standard est donnée par (à la différence de l'exemple (Anova), je suis passé au type 3 Sums of Squares, c'est ce que mon domaine veut):
require(car)
phase <- factor(rep(c("pretest", "posttest", "followup"), c(5, 5, 5)),
levels=c("pretest", "posttest", "followup"))
hour <- ordered(rep(1:5, 3))
idata <- data.frame(phase, hour)
mod.ok <- lm(cbind(pre.1, pre.2, pre.3, pre.4, pre.5, post.1, post.2, post.3, post.4, post.5, fup.1, fup.2, fup.3, fup.4, fup.5) ~ treatment, data=OBrienKaiser)
av.ok <- Anova(mod.ok, idata=idata, idesign=~phase*hour, type = 3)
summary(av.ok, multivariate=FALSE)
Maintenant, imaginez que l'interaction d'ordre supérieur aurait été significative (ce qui n'est pas le cas) et nous aimerions l'explorer davantage avec les contrastes suivants:
y a-t-il une différence entre les heures 1 et 2 par rapport aux heures 3 (contraste 1) et entre les heures 1 et 2 par rapport aux heures 4 et 5 (contraste 2) dans les conditions de traitement (A&B ensemble)?
En d'autres termes, comment spécifier ces contrastes:
((treatment %in% c("A", "B")) & (hour %in% 1:2))
contre((treatment %in% c("A", "B")) & (hour %in% 3))
((treatment %in% c("A", "B")) & (hour %in% 1:2))
contre((treatment %in% c("A", "B")) & (hour %in% 4:5))
Mon idée serait d'exécuter une autre ANOVA en omettant la condition de traitement non nécessaire (contrôle):
mod2 <- lm(cbind(pre.1, pre.2, pre.3, pre.4, pre.5, post.1, post.2, post.3, post.4, post.5, fup.1, fup.2, fup.3, fup.4, fup.5) ~ treatment, data=OBrienKaiser, subset = treatment != "control")
av2 <- Anova(mod2, idata=idata, idesign=~phase*hour, type = 3)
summary(av2, multivariate=FALSE)
Cependant, je ne sais toujours pas comment configurer la matrice de contraste intra-sujet appropriée en comparant les heures 1 et 2 à 3 et 1 et 2 à 4 et 5. Et je ne sais pas si l'omission du groupe de traitement non nécessaire est en effet une bonne idée car elle modifie le terme d'erreur global.
Avant de partir, Anova()
je pensais aussi à partir lme
. Cependant, il existe de petites différences dans les valeurs F et p entre l'ANOVA du manuel et ce qui est renvoyé en anove(lme)
raison de possibles écarts négatifs dans l'ANOVA standard (qui ne sont pas autorisés danslme
). De manière similaire, quelqu'un m'a indiqué gls
qui permet d'ajuster des mesures répétées ANOVA, cependant, il n'a aucun argument de contraste.
Pour clarifier: je veux un test F ou t (utilisant des sommes de carrés de type III) qui répond si les contrastes souhaités sont significatifs ou non.
Mise à jour:
J'ai déjà posé une question très similaire sur R-help, il n'y avait pas de réponse .
Une question similaire a été posée sur R-help il y a quelque temps. Cependant, les réponses n'ont pas non plus résolu le problème.
Mise à jour (2015):
Comme cette question génère encore une certaine activité, la spécification des thèses et, fondamentalement, tous les autres contrastes peuvent maintenant être effectués relativement facilement avec le afex
package en combinaison avec le lsmeans
package comme décrit dans la vignette afex .
treatment
, 3) pour chaque personne moyenne sur les niveaux deprePostFup
, 4) pour chaque personne moyenne sur les heures 1,2 (= groupe de données 1) ainsi que sur les heures 3,4 (= groupe de données 2), 5) exécuter le test t pour 2 groupes dépendants. Étant donné que Maxwell et Delaney (2004) ainsi que Kirk (1995) découragent de faire des contrastes avec un terme d'erreur groupé dans les plans internes, cela pourrait être une alternative simple.Réponses:
Cette méthode est généralement considérée comme «à l'ancienne», donc bien que cela soit possible, la syntaxe est difficile et je soupçonne que moins de personnes savent comment manipuler les commandes anova pour obtenir ce que vous voulez. La méthode la plus courante consiste à utiliser
glht
un modèle basé sur la vraisemblance à partir denlme
oulme4
. (Je suis certainement le bienvenu si je me trompe par d'autres réponses.)Cela dit, si je devais le faire, je ne m'embêterais pas avec les commandes anova; Je voudrais simplement ajuster le modèle équivalent en utilisant
lm
, choisir le bon terme d'erreur pour ce contraste et calculer moi-même le test F (ou de manière équivalente, le test t car il n'y a que 1 df). Cela nécessite que tout soit équilibré et sphérique, mais si vous ne l'avez pas, vous devriez probablement utiliser un modèle basé sur la vraisemblance de toute façon. Vous pourriez peut-être corriger quelque peu la non-sphéricité en utilisant les corrections de Greenhouse-Geiser ou Huynh-Feldt qui (je crois) utilisent la même statistique F mais modifient le df du terme d'erreur.Si vous voulez vraiment l'utiliser
car
, vous pourriez trouver les vignettes heplot utiles; ils décrivent comment les matrices ducar
package sont définies.En utilisant la méthode de caracal (pour les contrastes 1 & 2 - 3 et 1 & 2 - 4 & 5), j'obtiens
Voici comment j'obtiendrais ces mêmes valeurs de p:
Remodelez les données en format long et exécutez
lm
pour obtenir tous les termes SS.Faites une matrice de contraste alternative pour le terme d'heure.
Vérifiez que mes contrastes donnent le même SS que les contrastes par défaut (et les mêmes que sur le modèle complet).
Obtenez les SS et df pour juste les deux contrastes que je veux.
Obtenez les valeurs p.
Ajustez éventuellement la sphéricité.
la source
heplots
vignette, c'est vraiment un bon résumé de ce qui se passe en termes de modèle linéaire général.Si vous souhaitez / devez utiliser des contrastes avec le terme d'erreur regroupé de l'ANOVA correspondante, vous pouvez procéder comme suit. Malheureusement, ce sera long, et je ne sais pas comment le faire plus facilement. Pourtant, je pense que les résultats sont corrects, car ils sont vérifiés par rapport à Maxwell & Delaney (voir ci-dessous).
Vous voulez comparer des groupes de votre premier facteur intra
hour
dans un plan SPF-p.qr (notation de Kirk (1995): Plan factoriel divisé en deux 1 entre facteurtreatment
avec p groupes, d'abord dans facteurhour
avec q groupes, second dans facteurprePostFup
avec groupes r). Ce qui suit suppose destreatment
groupes de taille identique et une sphéricité.Notons d' abord que l'effet principal
hour
est le même après une moyenne de plusprePostFup
, passant ainsi à la conception SPF-pq plus simple qui ne contient quetreatment
ethour
que IVs.Notez maintenant que dans l'ANOVA SPF-pq, l'effet de
hour
est testé par rapport à l'interactionid:hour
, c'est-à-dire que cette interaction fournit le terme d'erreur pour le test. Maintenant, les contrastes pour leshour
groupes peuvent être testés comme dans une ANOVA inter-sujets à sens unique en remplaçant simplement le terme d'erreur et les degrés de liberté correspondants. Le moyen le plus simple d'obtenir le SS et le df de cette interaction est d'adapter le modèle aveclm()
.Mais calculons également tout manuellement ici.
hour:id
Anova()
car
la source