Test t apparié comme cas particulier de la modélisation linéaire à effets mixtes


20

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.


2
Je ne sais pas trop ce que vous demandez. Le modèle que vous avez noté est précisément le modèle du modèle à effets aléatoires; la structure de corrélation est induite par l'effet aléatoire.
Aaron - Rétablir Monica le

@Aaron: le βj à effet aléatoire dans le modèle moyen des cellules est supposé suivre N (0, σp2). Ma confusion est la suivante: comment ce terme (avec un seul paramètre σp2) est-il associé à la structure de corrélation spécifiée par la symétrie composée ou une simple matrice symétrique dans le modèle lme?
bluepole

Lorsque vous calculez la corrélation entre les deux observations sur le même sujet, la corrélation est sigma_p ^ 2 / (sigma_p ^ 2 + sigma ^ 2) car elles partagent le même beta_j. Voir Pinheiro / Bates p.8. De plus, le modèle à effet aléatoire tel que vous l'avez écrit est équivalent à la symétrie composée; d'autres structures de corrélation sont plus complexes.
Aaron - Reinstate Monica

@Aaron: Merci! J'ai déjà lu le livre de Pinheiro / Bates à ce sujet, et je n'arrive toujours pas à comprendre les détails des effets aléatoires. Les pages les plus pertinentes semblent être l'exemple à la P.160-161. De plus, la sortie d'effets aléatoires de lme () avec l'hypothèse de symétrie composée ne semble pas être en accord avec la corrélation de σp2 / (σp2 + σ2) dans le modèle de moyenne cellulaire. Toujours déconcerté par la structure du modèle.
bluepole

Eh bien, presque équivalent à une symétrie composée; dans CS, la corrélation peut être négative mais pas avec des effets aléatoires. C'est peut-être là que votre différence se pose. Voir stats.stackexchange.com/a/14185/3601 pour plus de détails.
Aaron - Reinstate Monica

Réponses:


16

L'équivalence des modèles peut être observée en calculant la corrélation entre deux observations d'un même individu, comme suit:

Ouijej=μ+αje+βj+ϵjejβjN(0,σp2)ϵjejN(0,σ2)Cov(yjek,yjk)=Cov(μ+αje+βk+ϵjek,μ+αj+βk+ϵjk)=Cov(βk,βk)=σp2Vuner(yjek)=Vuner(yjk)=σp2+σ2σp2/(σp2+σ2)

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 Rcode est que vous ne spécifiez pas correctement la structure de corrélation. Vous devez utiliser glsavec la corCompSymmstructure de corrélation.

Générez des données pour qu'il y ait un effet sujet:

set.seed(5)
x <- rnorm(10)
x1<-x+rnorm(10)
x2<-x+1 + rnorm(10)
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")

Voici comment ajuster les effets aléatoires et les modèles de symétrie composés.

library(nlme)
fm1 <- lme(y ~ x, random=~1|subj, data=myDat)
fm2 <- gls(y ~ x, correlation=corCompSymm(form=~1|subj), data=myDat)

Les erreurs standard du modèle à effets aléatoires sont:

m1.varp <- 0.5453527^2
m1.vare <- 1.084408^2

Et la corrélation et la variance résiduelle du modèle CS sont:

m2.rho <- 0.2018595
m2.var <- 1.213816^2

Et ils sont égaux à ce qui est attendu:

> m1.varp/(m1.varp+m1.vare)
[1] 0.2018594
> sqrt(m1.varp + m1.vare)
[1] 1.213816

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.

> summary(fm1)
...
Fixed effects: y ~ x 
                 Value Std.Error DF   t-value p-value
(Intercept) -0.5611156 0.3838423  9 -1.461839  0.1778
xx2          2.0772757 0.4849618  9  4.283380  0.0020

> summary(fm2)
...
                 Value Std.Error   t-value p-value
(Intercept) -0.5611156 0.3838423 -1.461839  0.1610
xx2          2.0772757 0.4849618  4.283380  0.0004

> m1 <- lm(y~ x + subj, data=myDat)
> summary(m1)
...
            Estimate Std. Error t value Pr(>|t|)   
(Intercept)  -0.3154     0.8042  -0.392  0.70403   
xx2           2.0773     0.4850   4.283  0.00204 **

(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 lme4package donne les mêmes résultats mais n'essaie même pas de calculer une valeur de p.

> mm1 <- lmer(y ~ x + (1|subj), data=myDat)
> summary(mm1)
...
            Estimate Std. Error t value
(Intercept)  -0.5611     0.3838  -1.462
xx2           2.0773     0.4850   4.283

Merci encore pour votre aide! Je connais cette partie du point de vue du modèle de moyenne cellulaire. Cependant, avec le résultat suivant de lme () avec une symétrie composée: Effets aléatoires: Formule: ~ x - 1 | subj Structure: Compound Symmetry StdDev xx1 1.1913363 xx2 1.1913363 Corr: -0.036 Residual 0.4466733. Je ne parviens toujours pas à concilier ces chiffres avec le modèle de moyenne des cellules. Peut-être pouvez-vous m'aider davantage à trier ces chiffres?
bluepole

En outre, des réflexions sur la formulation du modèle avec d'autres structures de corrélation telles qu'une simple matrice symétrique?
bluepole

Je vois! J'aurais dû lire votre réponse dans l'autre fil plus attentivement. J'ai pensé à utiliser gls () avant, mais je n'ai pas réussi à comprendre la spécification de corrélation. Il est intéressant de noter que lme () avec une structure de symétrie composée pour l'effet aléatoire rend toujours la même valeur t, mais il semble que les variances pour les effets aléatoires ne soient pas directement interprétables. J'apprécie vraiment votre aide!
bluepole

Après une deuxième réflexion, je sens que ma confusion d'origine n'est toujours pas résolue. Oui, gls peut être utilisé pour démontrer la structure de corrélation et les rhums carrés moyens, mais le modèle en dessous n'est pas exactement le même que le test t apparié (ou l'ANOVA à mesures répétées unidirectionnelles en général), et une telle évaluation est en outre pris en charge par les DF et la valeur p incorrects de gls. En revanche, ma commande lme avec symétrie composée fournit les mêmes valeurs F, DF et p. La seule chose qui me laisse perplexe est de savoir comment le modèle lme est paramétré comme indiqué dans mon article d'origine. Une aide là-bas?
bluepole

Je ne sais pas comment vous aider. Pourriez-vous écrire ce que vous pensez des deux modèles différents? Quelque chose ne va pas dans la façon dont vous pensez à l'un d'eux.
Aaron - Reinstate Monica

3

Vous pouvez également envisager d'utiliser la fonction mixeddans le package afexpour 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é:

library(afex)
mixed(y ~ x + (1|subj), type=3,method="KR",data=myDat) 

Ou

library(lmerTest)
options(contrasts=c('contr.sum', 'contr.poly'))
anova(lmer(y ~ x + (1|subj),data=myDat),ddf="Kenward-Roger")
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.