Nous savons qu'un test t apparié n'est qu'un cas particulier d'ANOVA à mesures répétées unidirectionnelles (ou intra-sujet) ainsi que d'un modèle linéaire à effets mixtes, qui peut être démontré avec la fonction lme () du paquet nlme dans R comme indiqué ci-dessous.
#response data from 10 subjects under two conditions
x1<-rnorm(10)
x2<-1+rnorm(10)
# Now create a dataframe for lme
myDat <- data.frame(c(x1,x2), c(rep("x1", 10), rep("x2", 10)), rep(paste("S", seq(1,10), sep=""), 2))
names(myDat) <- c("y", "x", "subj")
Lorsque j'exécute le test t apparié suivant:
t.test(x1, x2, paired = TRUE)
J'ai obtenu ce résultat (vous obtiendrez un résultat différent à cause du générateur aléatoire):
t = -2.3056, df = 9, p-value = 0.04657
Avec l'approche ANOVA, nous pouvons obtenir le même résultat:
summary(aov(y ~ x + Error(subj/x), myDat))
# the F-value below is just the square of the t-value from paired t-test:
Df F value Pr(>F)
x 1 5.3158 0.04657
Maintenant, je peux obtenir le même résultat dans lme avec le modèle suivant, en supposant une matrice de corrélation symétrique positive définie pour les deux conditions:
summary(fm1 <- lme(y ~ x, random=list(subj=pdSymm(form=~x-1)), data=myDat))
# the 2nd row in the following agrees with the paired t-test
# (Intercept) -0.2488202 0.3142115 9 -0.7918878 0.4488
# xx2 1.3325786 0.5779727 9 2.3056084 0.0466
Ou un autre modèle, en supposant une symétrie composée pour la matrice de corrélation des deux conditions:
summary(fm2 <- lme(y ~ x, random=list(subj=pdCompSymm(form=~x-1)), data=myDat))
# the 2nd row in the following agrees with the paired t-test
# (Intercept) -0.2488202 0.4023431 9 -0.618428 0.5516
# xx2 1.3325786 0.5779727 9 2.305608 0.0466
Avec le test t apparié et l'ANOVA à mesures répétées unidirectionnelles, je peux écrire le modèle moyen de cellule traditionnel comme
Yij = μ + αi + βj + εij, i = 1, 2; j = 1, ..., 10
où i indexe la condition, j indexe le sujet, Y ij est la variable de réponse, μ est constant pour l'effet fixe pour la moyenne globale, α i est l'effet fixe pour la condition, β j est l'effet aléatoire pour le sujet suivant N (0, σ p 2 ) (σ p 2 est la variance de la population), et ε ij est le résidu suivant N (0, σ 2 ) (σ 2 est la variance intra-sujet).
Je pensais que le modèle de cellule moyenne ci-dessus ne serait pas approprié pour les modèles lme, mais le problème est que je ne peux pas trouver un modèle raisonnable pour les deux approches lme () avec l'hypothèse de structure de corrélation. La raison en est que le modèle lme semble avoir plus de paramètres pour les composantes aléatoires que le modèle moyen de cellule ci-dessus ne le propose. Au moins, le modèle lme fournit également exactement la même valeur F, degrés de liberté et valeur p, ce que ne peut pas gls. Plus précisément, gls donne des DF incorrects car il ne tient pas compte du fait que chaque sujet a deux observations, ce qui conduit à des DF très gonflés. Le modèle lme est très probablement sur-paramétré pour spécifier les effets aléatoires, mais je ne sais pas quel est le modèle et quels sont les paramètres. Donc, le problème n'est toujours pas résolu pour moi.
la source
Réponses:
L'équivalence des modèles peut être observée en calculant la corrélation entre deux observations d'un même individu, comme suit:
Notez cependant que les modèles ne sont pas tout à fait équivalents car le modèle à effet aléatoire force la corrélation à être positive. Le modèle CS et le modèle t-test / anova ne le font pas.
EDIT: Il existe également deux autres différences. Premièrement, les modèles CS et à effet aléatoire supposent une normalité pour l'effet aléatoire, mais pas le modèle t-test / anova. Deuxièmement, les modèles CS et à effet aléatoire sont ajustés en utilisant le maximum de vraisemblance, tandis que l'anova est ajusté en utilisant des carrés moyens; quand tout est équilibré, ils seront d'accord, mais pas nécessairement dans des situations plus complexes. Enfin, je me méfierais d'utiliser les valeurs F / df / p des divers ajustements comme mesures de la concordance des modèles; voir la célèbre chape de Doug Bates sur df pour plus de détails. (FIN EDIT)
Le problème avec votre
R
code est que vous ne spécifiez pas correctement la structure de corrélation. Vous devez utilisergls
avec lacorCompSymm
structure de corrélation.Générez des données pour qu'il y ait un effet sujet:
Voici comment ajuster les effets aléatoires et les modèles de symétrie composés.
Les erreurs standard du modèle à effets aléatoires sont:
Et la corrélation et la variance résiduelle du modèle CS sont:
Et ils sont égaux à ce qui est attendu:
D'autres structures de corrélation ne correspondent généralement pas à des effets aléatoires, mais simplement en spécifiant la structure souhaitée; une exception courante est le modèle AR (1) + à effet aléatoire, qui a un effet aléatoire et une corrélation AR (1) entre les observations sur le même effet aléatoire.
EDIT2: Lorsque j'adapte les trois options, j'obtiens exactement les mêmes résultats, sauf que gls n'essaie pas de deviner le df pour le terme d'intérêt.
(L'interception est différente ici car avec le codage par défaut, ce n'est pas la moyenne de tous les sujets mais plutôt la moyenne du premier sujet.)
Il est également intéressant de noter que le nouveau
lme4
package donne les mêmes résultats mais n'essaie même pas de calculer une valeur de p.la source
Vous pouvez également envisager d'utiliser la fonction
mixed
dans le packageafex
pour renvoyer des valeurs de p avec une approximation df de Kenward-Roger, qui renvoie des valeurs de p identiques en tant que test t apparié:Ou
la source