Effetti casuali incrociati vs nidificati: in che modo differiscono e come vengono specificati correttamente in lme4?


88

Ecco come ho compreso gli effetti casuali nidificati o incrociati:

Gli effetti casuali nidificati si verificano quando un fattore di livello inferiore appare solo all'interno di un determinato livello di un fattore di livello superiore.

  • Ad esempio, gli alunni delle classi in un determinato momento.
  • In lme4ho pensato che rappresentiamo gli effetti casuali per i dati nidificati in uno dei due modi equivalenti:

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

Effetti casuali incrociati indicano che un dato fattore appare in più di un livello del fattore di livello superiore.

  • Ad esempio, ci sono alunni all'interno delle classi misurati per diversi anni.
  • In lme4, vorremmo scrivere:

    (1|class) + (1|pupil)

Tuttavia, quando stavo guardando un particolare set di dati nidificato, ho notato che entrambe le formule del modello davano risultati identici (codice e output di seguito). Tuttavia, ho visto altri set di dati in cui le due formule hanno prodotto risultati diversi. Quindi cosa sta succedendo qui?

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

Risposte:


148

(Questa è una risposta abbastanza lunga, c'è un riassunto alla fine)

Non ti sbagli nel comprendere quali sono gli effetti casuali nidificati e incrociati nello scenario che descrivi. Tuttavia, la tua definizione di effetti casuali incrociati è un po 'stretta. Una definizione più generale di effetti casuali incrociati è semplicemente: non nidificata . Vedremo questo alla fine di questa risposta, ma la maggior parte della risposta si concentrerà sullo scenario che hai presentato, delle aule all'interno delle scuole.

Prima nota che:

L'annidamento è una proprietà dei dati, o meglio del disegno sperimentale, non del modello.

Anche,

I dati nidificati possono essere codificati in almeno 2 modi diversi e questo è al centro del problema riscontrato.

Il set di dati nel tuo esempio è piuttosto grande, quindi userò un altro esempio di scuole da Internet per spiegare i problemi. Ma prima, considera il seguente esempio troppo semplificato:

inserisci qui la descrizione dell'immagine

Qui abbiamo classi nidificate nelle scuole, che è uno scenario familiare. Il punto importante qui è che, tra ogni scuola, le classi hanno lo stesso identificatore, anche se sono distinte se nidificate . Class1appare in School1, School2e School3. Tuttavia, se i dati sono nidificati, allora Class1in nonSchool1 è la stessa unità di misura di in e . Se fossero uguali, avremmo questa situazione:Class1School2School3

inserisci qui la descrizione dell'immagine

il che significa che ogni classe appartiene a ogni scuola. Il primo è un disegno nidificato e il secondo è un disegno incrociato (alcuni potrebbero anche chiamarlo appartenenza multipla), e noi li formuleremmo lme4usando:

(1|School/Class) o equivalentemente (1|School) + (1|Class:School)

e

(1|School) + (1|Class)

rispettivamente. A causa dell'ambiguità del fatto che ci siano annidamenti o incroci di effetti casuali, è molto importante specificare correttamente il modello poiché questi modelli produrranno risultati diversi, come mostreremo di seguito. Inoltre, non è possibile sapere, semplicemente ispezionando i dati, se abbiamo annidato o incrociato effetti casuali. Questo può essere determinato solo con la conoscenza dei dati e il disegno sperimentale.

Ma prima consideriamo un caso in cui la variabile Class è codificata in modo univoco tra le scuole:

inserisci qui la descrizione dell'immagine

Non c'è più alcuna ambiguità riguardo al nidificazione o all'attraversamento. L'annidamento è esplicito. Vediamo ora questo con un esempio in R, dove abbiamo 6 scuole (etichettate I- VI) e 4 classi all'interno di ogni scuola (etichettate acome 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

Da questa tabulazione incrociata possiamo vedere che ogni ID di classe appare in ogni scuola, il che soddisfa la tua definizione di effetti casuali incrociati (in questo caso abbiamo effetti casuali incrociati completamente , piuttosto che parzialmente , perché ogni classe si verifica in ogni scuola). Quindi questa è la stessa situazione che abbiamo avuto nella prima figura sopra. Tuttavia, se i dati sono realmente nidificati e non incrociati, è necessario indicare esplicitamente 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

Come previsto, i risultati differiscono perché m0è un modello nidificato mentre m1è un modello incrociato.

Ora, se introduciamo una nuova variabile per l'identificatore di 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 tabulazione incrociata mostra che ogni livello di classe si verifica solo in un livello di scuola, secondo la tua definizione di annidamento. Questo è anche il caso dei tuoi dati, tuttavia è difficile dimostrarlo con i tuoi dati perché è molto scarso. Entrambe le formulazioni del modello produrranno ora lo stesso output (quello del modello nidificato m0sopra):

> 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

Vale la pena notare che gli effetti casuali incrociati non devono verificarsi all'interno dello stesso fattore - in quanto sopra la traversata era completamente all'interno della scuola. Tuttavia, questo non deve essere il caso, e molto spesso non lo è. Ad esempio, rimanendo fedeli allo scenario scolastico, se invece delle lezioni all'interno delle scuole abbiamo alunni all'interno delle scuole e fossimo interessati anche ai dottori con cui erano registrati gli alunni, allora avremmo anche nidificazione degli alunni all'interno dei dottori. Non c'è nidificazione delle scuole all'interno dei medici o viceversa, quindi questo è anche un esempio di effetti casuali incrociati e diciamo che scuole e dottori sono incrociati. Uno scenario simile in cui si verificano effetti casuali incrociati è quando le singole osservazioni sono nidificate contemporaneamente in due fattori, il che si verifica comunemente con le cosiddette misure ripetutedati oggetto . In genere ogni soggetto viene misurato / testato più volte con / su articoli diversi e questi stessi articoli vengono misurati / testati da soggetti diversi. Pertanto, le osservazioni sono raggruppate all'interno di soggetti e all'interno di oggetti, ma gli oggetti non sono nidificati all'interno di soggetti o viceversa. Ancora una volta, diciamo che i soggetti e gli oggetti sono incrociati .

Sommario: TL; DR

La differenza tra effetti casuali incrociati e nidificati è che si verificano effetti casuali nidificati quando un fattore (variabile di raggruppamento) appare solo all'interno di un determinato livello di un altro fattore (variabile di raggruppamento). Questo è specificato in lme4con:

(1|group1/group2)

dove group2è nidificato all'interno group1.

Gli effetti casuali incrociati sono semplicemente: non nidificati . Ciò può verificarsi con tre o più variabili di raggruppamento (fattori) in cui un fattore è nidificato separatamente in entrambi gli altri o con due o più fattori in cui le singole osservazioni sono nidificate separatamente all'interno dei due fattori. Questi sono specificati lme4con:

(1|group1) + (1|group2)


16
+6, questa è davvero una bella risposta. Ricordamelo tra un paio di giorni e ci darò una taglia.
gung - Ripristina Monica

2
Spiegazione eccellente. Esiste un nome per un terzo tipo forse di design sperimentale in cui crei livelli unici per due fattori (forse nidificati), quindi se seguissi le coorti acquistando motociclette da rivenditori diversi all'interno di città diverse, come potrei comunicare ai lettori che sostanzialmente creato un fattore di livello singolo interaction(city, dealer)?
AdamO

2
+6, questa è una risposta così grande che ho sentito di poter aggiungere la generosità di @ gung con un'altra. A proposito, sto lottando con quella che probabilmente è una confusione molto semplice ( ecco la mia Q ) e apprezzerei molto il tuo aiuto.
ameba dice di reintegrare Monica il

1
@RobertLong Sembra che i disegni a trama divisa (misure ripetute) siano spesso chiamati "nidificati" anche se non sono realmente nidificati in base a questa tua risposta. Questa incoerenza terminologica ha probabilmente contribuito alla mia confusione nella domanda collegata. Sarebbe bello se potessi chiarirlo, qui o là. Sto anche pensando se dovrei pubblicare una domanda terminologica separata (non orientata alla R) su ciò che è nidificato in grafici divisi.
ameba dice di reintegrare Monica il

2
Aggiornamento al mio commento precedente. Ho controllato due libri antichi e autorevoli sul design sperimentale: Maxwell e Delaney, 1990, Designing Experiments and Analyzing Data, e Montgomery, 1976, Design and Analysis of Experiments. Entrambi parlano di progetti nidificati ed entrambi parlano di misure ripetute, ovvero diagrammi divisi; entrambi usano la parola "nidificato" solo nel senso in cui la si utilizza e non si riferiscono mai a misure ripetute come nidificate. Quindi non penso che ci sia alcuna differenza terminologica dopo tutto.
ameba dice di reintegrare Monica il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.