Gekreuzte versus verschachtelte zufällige Effekte: Wie unterscheiden sie sich und wie werden sie in lme4 korrekt angegeben?


88

Hier ist, wie ich verschachtelte vs. gekreuzte zufällige Effekte verstanden habe:

Verschachtelte zufällige Effekte treten auf, wenn ein Faktor der unteren Ebene nur innerhalb einer bestimmten Ebene eines Faktors der oberen Ebene erscheint.

  • Zum Beispiel Schüler in Klassen zu einem festgelegten Zeitpunkt.
  • In lme4ich dachte , dass wir die zufälligen Effekte für verschachtelte Daten in einem von zwei gleichwertigen Arten darstellen:

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

Durchgestrichene zufällige Effekte bedeuten, dass ein bestimmter Faktor in mehr als einer Ebene des Faktors der oberen Ebene erscheint.

  • Zum Beispiel gibt es Schüler in Klassen, die über mehrere Jahre verteilt sind.
  • In lme4würden wir schreiben:

    (1|class) + (1|pupil)

Als ich mir jedoch ein bestimmtes verschachteltes Dataset ansah, stellte ich fest, dass beide Modellformeln identische Ergebnisse lieferten (Code und Ausgabe unten). Ich habe jedoch andere Datensätze gesehen, bei denen die beiden Formeln unterschiedliche Ergebnisse erbrachten. Also, was ist hier los?

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

Antworten:


148

(Dies ist eine ziemlich lange Antwort, es gibt eine Zusammenfassung am Ende)

Sie verstehen nicht falsch, was verschachtelte und gekreuzte zufällige Effekte in dem von Ihnen beschriebenen Szenario sind. Ihre Definition von gekreuzten zufälligen Effekten ist jedoch etwas eng. Eine allgemeinere Definition von gekreuzten zufälligen Effekten lautet einfach: nicht verschachtelt . Wir werden uns dies am Ende dieser Antwort ansehen, aber der Großteil der Antwort konzentriert sich auf das von Ihnen vorgestellte Szenario mit Klassenräumen in Schulen.

Beachten Sie zuerst, dass:

Das Verschachteln ist eine Eigenschaft der Daten oder vielmehr des experimentellen Designs, nicht des Modells.

Ebenfalls,

Verschachtelte Daten können auf mindestens zwei verschiedene Arten codiert werden. Dies ist der Kern des Problems, das Sie gefunden haben.

Der Datensatz in Ihrem Beispiel ist ziemlich groß, daher werde ich ein anderes Schulbeispiel aus dem Internet verwenden, um die Probleme zu erklären. Betrachten Sie zunächst das folgende stark vereinfachte Beispiel:

Bildbeschreibung hier eingeben

Hier haben wir Klassen in Schulen verschachtelt, was ein bekanntes Szenario ist. Der wichtige Punkt dabei ist, dass die Klassen zwischen den einzelnen Schulen dieselbe Kennung haben, obwohl sie sich unterscheiden, wenn sie verschachtelt sind . Class1erscheint in School1, School2und School3. Jedoch , wenn die Daten verschachtelt sind dann Class1in School1ist nicht die gleiche Maßeinheit Class1in School2und School3. Wenn sie gleich wären, hätten wir diese Situation:

Bildbeschreibung hier eingeben

Das bedeutet, dass jede Klasse zu jeder Schule gehört. Ersteres ist ein verschachteltes Design, und Letzteres ist ein gekreuztes Design (manche nennen es auch Mehrfachmitgliedschaft), und wir würden dies folgendermaßen formulieren lme4:

(1|School/Class) oder äquivalent (1|School) + (1|Class:School)

und

(1|School) + (1|Class)

beziehungsweise. Aufgrund der Mehrdeutigkeit, ob zufällige Effekte verschachtelt oder gekreuzt werden, ist es sehr wichtig, das Modell korrekt anzugeben, da diese Modelle unterschiedliche Ergebnisse liefern, wie nachfolgend gezeigt wird. Darüber hinaus ist es nicht möglich, allein durch Überprüfung der Daten zu erkennen, ob wir zufällige Effekte verschachtelt oder gekreuzt haben. Dies kann nur mit Kenntnis der Daten und ermittelt werden des Versuchsaufbaus .

Betrachten wir zunächst einen Fall, in dem die Klassenvariable schulübergreifend eindeutig codiert ist:

Bildbeschreibung hier eingeben

Beim Verschachteln oder Überkreuzen gibt es keine Unklarheiten mehr. Die Verschachtelung ist explizit. Lassen Sie uns dies nun an einem Beispiel in R sehen, wo wir 6 Schulen (mit I- gekennzeichnet VI) und 4 Klassen in jeder Schule (mit abis gekennzeichnet d) haben:

> 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

Aus dieser Kreuztabelle können wir ersehen, dass jede Klassen-ID in jeder Schule erscheint, was Ihrer Definition von gekreuzten zufälligen Effekten entspricht (in diesem Fall haben wir vollständig gekreuzte zufällige Effekte im Gegensatz zu teilweise gekreuzten Effekten, da jede Klasse in jeder Schule vorkommt). Das ist also die gleiche Situation, die wir in der ersten Abbildung oben hatten. Wenn die Daten jedoch wirklich verschachtelt und nicht gekreuzt sind, müssen wir explizit mitteilen 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

Wie erwartet unterscheiden sich die Ergebnisse, da m0es sich dabei um ein verschachteltes Modell handeltm1 ein gekreuztes Modell handelt.

Wenn wir nun eine neue Variable für die Klassenkennung einführen:

> 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

Die Kreuztabelle zeigt, dass jede Klassenstufe gemäß Ihrer Definition der Verschachtelung nur in einer Schulstufe vorkommt. Dies ist auch bei Ihren Daten der Fall, es ist jedoch schwierig, dies bei Ihren Daten zu zeigen, da diese sehr spärlich sind. Beide Modellformulierungen erzeugen nun die gleiche Ausgabe (die des m0obigen verschachtelten Modells ):

> 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

Es ist anzumerken, dass gekreuzte zufällige Effekte nicht innerhalb desselben Faktors auftreten müssen - oben war die Kreuzung vollständig innerhalb der Schule. Dies muss jedoch nicht der Fall sein und ist es sehr oft auch nicht. Wenn wir uns zum Beispiel an ein Schulszenario halten und statt Schulklassen Schüler in Schulen haben und uns auch für die Ärzte interessieren, bei denen die Schüler registriert sind, dann haben wir auch eine Verschachtelung von Schülern in Ärzten. Es gibt keine Verschachtelung von Schulen innerhalb von Ärzten oder umgekehrt, daher ist dies auch ein Beispiel für gekreuzte zufällige Effekte, und wir sagen, dass Schulen und Ärzte gekreuzt sind. Ein ähnliches Szenario, in dem gekreuzte zufällige Effekte auftreten, besteht darin, dass einzelne Beobachtungen gleichzeitig in zwei Faktoren verschachtelt sind, was häufig bei sogenannten wiederholten Messungen der Fall istBetreff-Artikel- Daten. In der Regel wird jedes Objekt mehrmals mit / an verschiedenen Objekten gemessen / getestet, und dieselben Objekte werden von verschiedenen Objekten gemessen / getestet. Daher werden Beobachtungen in Subjekten und in Elementen zusammengefasst, aber Elemente werden nicht in Subjekten verschachtelt oder umgekehrt. Wieder sagen wir, dass Themen und Gegenstände gekreuzt sind .

Zusammenfassung: TL; DR

Der Unterschied zwischen gekreuzten und verschachtelten Zufallseffekten besteht darin, dass verschachtelte Zufallseffekte auftreten, wenn ein Faktor (Gruppierungsvariable) nur innerhalb einer bestimmten Ebene eines anderen Faktors (Gruppierungsvariable) auftritt. Dies wird angegeben in lme4mit:

(1|group1/group2)

wo group2ist in verschachtelt group1.

Gekreuzte zufällige Effekte sind einfach: nicht verschachtelt . Dies kann bei drei oder mehr Gruppierungsvariablen (Faktoren) auftreten, bei denen ein Faktor in beiden anderen Faktoren separat verschachtelt ist, oder bei zwei oder mehr Faktoren, bei denen einzelne Beobachtungen innerhalb der beiden Faktoren separat verschachtelt sind. Diese sind angegeben in lme4mit:

(1|group1) + (1|group2)


16
+6, das ist eine wirklich schöne Antwort. Erinnere mich in ein paar Tagen daran und ich werde ein Kopfgeld darauf setzen.
gung

2
Hervorragende Erklärung. Gibt es einen Namen für eine möglicherweise dritte Art von experimentellem Design, bei der Sie eindeutige Ebenen für zwei Faktoren erstellen (möglicherweise verschachtelt)? Wenn ich also Kohorten folgte, die Motorräder von verschiedenen Händlern in verschiedenen Städten kauften, wie würde ich den Lesern mitteilen, dass ich im Grunde genommen bin einen einstufigen Faktor erstellt interaction(city, dealer)?
AdamO

2
+6, das ist eine so großartige Antwort, dass ich das Gefühl hatte, ich könnte @ gungs Kopfgeld mit einem anderen aufladen. Übrigens kämpfe ich mit einer sehr grundlegenden Verwirrung ( hier ist meine Frage ) und würde mich sehr über Ihre Hilfe freuen.
Amöbe

1
@RobertLong Es scheint, dass Entwürfe mit geteiltem Plot (wiederholte Messungen) oft als "verschachtelt" bezeichnet werden, obwohl sie nicht wirklich gemäß Ihrer Antwort verschachtelt sind. Diese terminologische Inkonsistenz hat wahrscheinlich zu meiner Verwirrung in der verknüpften Frage beigetragen. Wäre toll, wenn ihr es hier oder dort klären könntet. Ich überlege mir sogar, ob ich eine separate (nicht R-orientierte) terminologische Frage zu dem stellen soll, was in geteilten Darstellungen verschachtelt ist.
Amöbe

2
Update zu meinem vorherigen Kommentar. Ich habe zwei alte und maßgebliche Bücher zum experimentellen Design durchgesehen: Maxwell und Delaney, 1990, Experimente entwerfen und Daten analysieren, und Montgomery, 1976, Design und Analyse von Experimenten. Beide sprechen über verschachtelte Designs und beide über wiederholte Kennzahlen, auch Split-Plots genannt. Beide verwenden das Wort "verschachtelt" nur in dem Sinne, in dem Sie es verwenden, und bezeichnen wiederholte Kennzahlen niemals als verschachtelt. Ich glaube also, dass es doch keinen terminologischen Unterschied gibt.
Amöbe
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.