Effets aléatoires croisés et imbriqués: en quoi diffèrent-ils et comment sont-ils spécifiés correctement dans lme4?


88

Voici comment j'ai compris les effets aléatoires imbriqués et croisés:

Les effets aléatoires imbriqués se produisent lorsqu'un facteur de niveau inférieur apparaît uniquement dans un niveau particulier d'un facteur de niveau supérieur.

  • Par exemple, les élèves dans les classes à un moment donné.
  • En lme4pensant que nous représentons les effets aléatoires pour les données imbriquées de deux manières équivalentes:

    (1|class/pupil)  # or  
    (1|class) + (1|class:pupil)
    

Les effets aléatoires croisés signifient qu'un facteur donné apparaît dans plus d'un niveau du facteur de niveau supérieur.

  • Par exemple, il y a des élèves dans les classes sur plusieurs années.
  • En lme4, nous écririons:

    (1|class) + (1|pupil)

Cependant, lorsque je regardais un ensemble de données imbriqué particulier, j'ai remarqué que les deux formules du modèle donnaient des résultats identiques (code et sortie ci-dessous). Cependant, j'ai vu d'autres jeux de données où les deux formules produisaient des résultats différents. Que se passe-t-il?

mydata <- read.csv("https://web.archive.org/web/20160624172041if_/http://www-personal.umich.edu/~bwest/classroom.csv")
# (the data is no longer at `http://www-personal.umich.edu/~bwest/classroom.csv`
# hence the link to web.archive.org)
# Crossed version: 
Linear mixed model fit by REML ['lmerMod']
Formula: mathgain ~ (1 | schoolid) + (1 | classid)
   Data: mydata

REML criterion at convergence: 11768.8

Scaled residuals: 
    Min      1Q  Median      3Q     Max 
-4.6441 -0.5984 -0.0336  0.5334  5.6335 

Random effects:
 Groups   Name        Variance Std.Dev.
 classid  (Intercept)   99.23   9.961  
 schoolid (Intercept)   77.49   8.803  
 Residual             1028.23  32.066  
Number of obs: 1190, groups:  classid, 312; schoolid, 107


# Nested version:
Formula: mathgain ~ (1 | schoolid/classid)

REML criterion at convergence: 11768.8

Scaled residuals: 
    Min      1Q  Median      3Q     Max 
-4.6441 -0.5984 -0.0336  0.5334  5.6335 

Random effects:
 Groups           Name        Variance Std.Dev.
 classid:schoolid (Intercept)   99.23   9.961  
 schoolid         (Intercept)   77.49   8.803  
 Residual                     1028.23  32.066  
Number of obs: 1190, groups:  classid:schoolid, 312; schoolid, 107

Réponses:


148

(Ceci est une réponse assez longue, il y a un résumé à la fin)

Vous n'avez pas tort de comprendre ce que sont les effets aléatoires imbriqués et croisés dans le scénario que vous décrivez. Cependant, votre définition des effets aléatoires croisés est un peu étroite. Une définition plus générale des effets aléatoires croisés est simplement: non imbriquée . Nous examinerons cela à la fin de cette réponse, mais l'essentiel de la réponse portera sur le scénario que vous avez présenté, celui des salles de classe dans les écoles.

D'abord notez que:

L'imbrication est une propriété des données, ou plutôt du modèle expérimental, pas du modèle.

Aussi,

Les données imbriquées peuvent être codées d'au moins deux manières différentes, ce qui est au cœur du problème que vous avez détecté.

Le jeu de données dans votre exemple est plutôt volumineux. Je vais donc utiliser un autre exemple d’écoles d’Internet pour expliquer les problèmes. Mais prenons d'abord l'exemple suivant simplifié:

entrez la description de l'image ici

Ici, nous avons des classes imbriquées dans des écoles, ce qui est un scénario familier. Le point important ici est que, entre chaque école, les classes ont le même identifiant, même si elles sont distinctes si elles sont imbriquées . Class1apparaît dans School1, School2et School3. Toutefois, si les données sont imbriquées, Class1in School1n'est pas la même unité de mesure que Class1dans School2et School3. S'ils étaient identiques, alors nous aurions cette situation:

entrez la description de l'image ici

ce qui signifie que chaque classe appartient à chaque école. La première est une conception imbriquée, et la dernière est une conception croisée (certains l'appelleraient également une adhésion multiple), et nous les formulerions en lme4utilisant:

(1|School/Class) ou équivalent (1|School) + (1|Class:School)

et

(1|School) + (1|Class)

respectivement. En raison de l'ambiguïté de savoir s'il existe une imbrication ou un croisement d'effets aléatoires, il est très important de spécifier correctement le modèle car ces modèles produiront des résultats différents, comme nous le montrerons ci-dessous. De plus, il n’est pas possible de savoir, simplement en inspectant les données, si nous avons des effets aléatoires imbriqués ou croisés. Ceci ne peut être déterminé qu'avec la connaissance des données et du plan expérimental.

Mais prenons d’abord un cas où la variable de classe est codée de manière unique d’une école à l’autre:

entrez la description de l'image ici

Il n'y a plus aucune ambiguïté concernant la nidification ou le croisement. La nidification est explicite. Voyons maintenant ceci avec un exemple dans R, où nous avons 6 écoles (étiquetées I- VI) et 4 classes dans chaque école (étiquetées aà d):

> dt <- read.table("http://bayes.acs.unt.edu:8083/BayesContent/class/Jon/R_SC/Module9/lmm.data.txt",
                   header=TRUE, sep=",", na.strings="NA", dec=".", strip.white=TRUE)
> # data was previously publicly available from
> # http://researchsupport.unt.edu/class/Jon/R_SC/Module9/lmm.data.txt
> # but the link is now broken
> xtabs(~ school + class, dt)

        class
school  a  b  c  d
   I   50 50 50 50
   II  50 50 50 50
   III 50 50 50 50
   IV  50 50 50 50
   V   50 50 50 50
   VI  50 50 50 50

Cette tabulation croisée montre que chaque identifiant de classe apparaît dans chaque école, ce qui correspond à votre définition des effets aléatoires croisés (dans ce cas, nous avons des effets aléatoires totalement croisés , par opposition à partiellement croisés, car chaque classe a lieu dans chaque école). C'est donc la même situation que dans le premier chiffre ci-dessus. Cependant, si les données sont vraiment imbriquées et non croisées, nous devons indiquer explicitement lme4:

> m0 <- lmer(extro ~ open + agree + social + (1 | school/class), data = dt)
> summary(m0)

Random effects:
 Groups       Name        Variance Std.Dev.
 class:school (Intercept)  8.2043  2.8643  
 school       (Intercept) 93.8421  9.6872  
 Residual                  0.9684  0.9841  
Number of obs: 1200, groups:  class:school, 24; school, 6

Fixed effects:
              Estimate Std. Error t value
(Intercept) 60.2378227  4.0117909  15.015
open         0.0061065  0.0049636   1.230
agree       -0.0076659  0.0056986  -1.345
social       0.0005404  0.0018524   0.292

> m1 <- lmer(extro ~ open + agree + social + (1 | school) + (1 |class), data = dt)
summary(m1)

Random effects:
 Groups   Name        Variance Std.Dev.
 school   (Intercept) 95.887   9.792   
 class    (Intercept)  5.790   2.406   
 Residual              2.787   1.669   
Number of obs: 1200, groups:  school, 6; class, 4

Fixed effects:
             Estimate Std. Error t value
(Intercept) 60.198841   4.212974  14.289
open         0.010834   0.008349   1.298
agree       -0.005420   0.009605  -0.564
social      -0.001762   0.003107  -0.567

Comme prévu, les résultats diffèrent car il m0s'agit d'un modèle imbriqué et m1croisé.

Maintenant, si nous introduisons une nouvelle variable pour l'identifiant de classe:

> dt$classID <- paste(dt$school, dt$class, sep=".")
> xtabs(~ school + classID, dt)

      classID
school I.a I.b I.c I.d II.a II.b II.c II.d III.a III.b III.c III.d IV.a IV.b
   I    50  50  50  50    0    0    0    0     0     0     0     0    0    0
   II    0   0   0   0   50   50   50   50     0     0     0     0    0    0
   III   0   0   0   0    0    0    0    0    50    50    50    50    0    0
   IV    0   0   0   0    0    0    0    0     0     0     0     0   50   50
   V     0   0   0   0    0    0    0    0     0     0     0     0    0    0
   VI    0   0   0   0    0    0    0    0     0     0     0     0    0    0

      classID
school IV.c IV.d V.a V.b V.c V.d VI.a VI.b VI.c VI.d
   I      0    0   0   0   0   0    0    0    0    0
   II     0    0   0   0   0   0    0    0    0    0
   III    0    0   0   0   0   0    0    0    0    0
   IV    50   50   0   0   0   0    0    0    0    0
   V      0    0  50  50  50  50    0    0    0    0
   VI     0    0   0   0   0   0   50   50   50   50

La tabulation croisée montre que chaque niveau de classe ne se produit que dans un seul niveau d'école, selon votre définition de la nidification. C'est également le cas de vos données, mais il est difficile de montrer cela avec vos données car elles sont très rares. Les deux formulations de modèle produiront désormais le même résultat (celui du modèle imbriqué m0ci-dessus):

> m2 <- lmer(extro ~ open + agree + social + (1 | school/classID), data = dt)
> summary(m2)

Random effects:
 Groups         Name        Variance Std.Dev.
 classID:school (Intercept)  8.2043  2.8643  
 school         (Intercept) 93.8419  9.6872  
 Residual                    0.9684  0.9841  
Number of obs: 1200, groups:  classID:school, 24; school, 6

Fixed effects:
              Estimate Std. Error t value
(Intercept) 60.2378227  4.0117882  15.015
open         0.0061065  0.0049636   1.230
agree       -0.0076659  0.0056986  -1.345
social       0.0005404  0.0018524   0.292

> m3 <- lmer(extro ~ open + agree + social + (1 | school) + (1 |classID), data = dt)
> summary(m3)

Random effects:
 Groups   Name        Variance Std.Dev.
 classID  (Intercept)  8.2043  2.8643  
 school   (Intercept) 93.8419  9.6872  
 Residual              0.9684  0.9841  
Number of obs: 1200, groups:  classID, 24; school, 6

Fixed effects:
              Estimate Std. Error t value
(Intercept) 60.2378227  4.0117882  15.015
open         0.0061065  0.0049636   1.230
agree       -0.0076659  0.0056986  -1.345
social       0.0005404  0.0018524   0.292

Il est à noter que les effets aléatoires croisés ne doivent pas nécessairement se produire dans le même facteur - dans ce qui précède, le croisement était complètement à l'intérieur de l'école. Cependant, cela ne doit pas forcément être le cas, et très souvent ce n’est pas le cas. Par exemple, restons dans un scénario scolaire: si au lieu des classes dans les écoles, nous avions des élèves dans les écoles et si nous nous intéressions également aux médecins auprès desquels les élèves étaient inscrits, nous aurions également des enfants imbriqués dans des médecins. Il n'y a pas de nidification d'écoles chez les médecins, ou vice versa, c'est donc aussi un exemple d'effets aléatoires croisés, et nous disons que les écoles et les médecins sont croisés. Un scénario similaire dans lequel des effets aléatoires croisés se produisent est lorsque des observations individuelles sont imbriquées simultanément dans deux facteurs, ce qui se produit généralement avec des mesures dites répétées.sous-point de données. En règle générale, chaque sujet est mesuré / testé plusieurs fois avec / sur différents éléments et ces mêmes éléments sont mesurés / testés par différents sujets. Ainsi, les observations sont regroupées dans les sujets et dans les éléments, mais les éléments ne sont pas imbriqués dans les sujets ou inversement. Encore une fois, on dit que les sujets et les objets sont croisés .

Résumé: TL; DR

La différence entre les effets aléatoires croisés et imbriqués réside dans le fait que des effets aléatoires imbriqués se produisent lorsqu'un facteur (variable de regroupement) apparaît uniquement dans un niveau particulier d'un autre facteur (variable de regroupement). Ceci est spécifié dans lme4avec:

(1|group1/group2)

group2est niché à l'intérieur group1.

Les effets aléatoires croisés sont simplement: non imbriqués . Cela peut se produire avec trois variables de regroupement (facteurs) ou un facteur est imbriqué séparément dans les deux autres, ou avec deux facteurs ou plus où des observations individuelles sont imbriquées séparément dans les deux facteurs. Ceux-ci sont spécifiés dans lme4avec:

(1|group1) + (1|group2)


16
+6, c'est une très bonne réponse. Rappelez-le-moi dans quelques jours et je mettrai une prime à sa place.
gung - Rétablir Monica

2
Excellente explication. Existe-t-il un nom pour un troisième type de projet expérimental dans lequel vous créez des niveaux uniques pour deux facteurs (éventuellement imbriqués), donc si je suivais des cohortes achetant des motos de différents concessionnaires dans différentes villes, comment communiquerais-je à mes lecteurs? créé un facteur de niveau unique interaction(city, dealer)?
AdamO

2
+6, c’est une si bonne réponse que j’ai eu l’impression que je pourrais compléter la prime de @ gung par une autre. En passant, je me bats avec ce qui est probablement une confusion très fondamentale ( voici mon Q ) et j'apprécierais beaucoup votre aide.
amibe dit de réintégrer Monica

1
@RobertLong Il semble que les conceptions en parcelles divisées (mesures répétées) soient souvent appelées "imbriquées", même si elles ne le sont pas vraiment selon votre réponse. Cette incohérence terminologique a probablement contribué à ma confusion dans la question liée. Ce serait bien si vous pouviez clarifier les choses, ici ou là-bas. Je me demande même si je devrais poser une question terminologique distincte (non orientée R) sur ce qui est imbriqué dans les parcelles divisées.
amibe dit de réintégrer Monica

2
Mise à jour de mon commentaire précédent. J'ai vérifié deux anciens livres faisant autorité sur la conception expérimentale: Maxwell et Delaney, 1990, Conception d'expériences et analyse de données, et Montgomery, 1976, Conception et analyse d'expériences. Les deux parlent de dessins imbriqués et de mesures répétées, autrement dit des tracés divisés; les deux n'utilisent le mot "imbriqué" que dans le sens où vous l'utilisez et ne faites jamais référence à des mesures répétées comme imbriquées. Donc, je ne pense pas qu'il y ait une différence de terminologie après tout.
amibe dit de réintégrer Monica
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.