En supposant donc qu'il est utile de tester l'hypothèse de normalité pour anova (voir 1 et 2 )
Comment peut-il être testé en R?
Je m'attendrais à faire quelque chose comme:
## From Venables and Ripley (2002) p.165.
utils::data(npk, package="MASS")
npk.aovE <- aov(yield ~ N*P*K + Error(block), npk)
residuals(npk.aovE)
qqnorm(residuals(npk.aov))
Ce qui ne fonctionne pas, car les "résidus" n'ont pas de méthode (ni de prédiction d'ailleurs) pour le cas des mesures répétées anova.
Alors, que faut-il faire dans ce cas?
Les résidus peuvent-ils simplement être extraits du même modèle d'ajustement sans le terme d'erreur? Je ne connais pas assez la littérature pour savoir si elle est valide ou non, merci d'avance pour toute suggestion.
la source
names(npk.aovE)
renvoie `[1]" (Intercept) "" block "" Within "`Une autre option serait d'utiliser la
lme
fonction dunlme
package (puis de passer le modèle obtenu àanova
). Vous pouvez utiliserresiduals
sur sa sortie.la source
Je pense que l'hypothèse de normalité peut être évaluée pour chacune des mesures répétées, avant d'effectuer l'analyse. Je remodèle le cadre de données afin que chaque colonne corresponde à une mesure répétée, puis effectue un test shapiro.test pour chacune de ces colonnes.
la source
Venables et Ripley expliquent comment effectuer des diagnostics résiduels pour une conception à mesures répétées plus loin dans leur livre (p. 284), dans la section sur les effets aléatoires et mixtes.
La fonction des résidus (ou resid) est implémentée pour les résultats aov pour chaque strate:
à partir de leur exemple:
oats.aov <- aov(Y ~ N + V + Error(B/V), data=oats, qr=T)
Pour obtenir les valeurs ajustées ou les résidus:
"Ainsi
fitted(oats.aov[[4]])
etresid(oats.aov[[4]])
sont des vecteurs de longueur 54 représentant les valeurs ajustées et les résidus de la dernière strate."Surtout, ils ajoutent:
"Il n'est pas possible de les associer uniquement aux tracés de l'expérience originale."
Pour les diagnostics, ils utilisent une projection:
Ils montrent également que le modèle peut être fait en utilisant lme, comme l'a signalé un autre utilisateur.
la source
Voici deux options, avec aov et avec lme (je pense que la 2e est préférée):
L'exemple original est venu sans l'interaction (
Lme.mod <- lme(Y ~ N * V, random = ~1 | B/V, data = oats)
) mais il semble fonctionner avec (et produire des résultats différents, donc il fait quelque chose).Et c'est tout...
mais pour être complet:
1 - Les résumés du modèle
2 - Le test de Tukey avec des mesures répétées anova (3 heures à chercher !!).
3 - Les tracés de normalité et d'homoscédasticité
la source