Efeitos aleatórios cruzados vs aninhados: como eles diferem e como são especificados corretamente no lme4?

88

Aqui está como eu entendi os efeitos aleatórios aninhados x cruzados:

Os efeitos aleatórios aninhados ocorrem quando um fator de nível inferior aparece apenas dentro de um nível específico de um fator de nível superior.

  • Por exemplo, alunos dentro das aulas em um ponto fixo no tempo.
  • Em lme4pensei que representássemos os efeitos aleatórios para dados aninhados de duas maneiras equivalentes:

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

Efeitos aleatórios cruzados significam que um determinado fator aparece em mais de um nível do fator de nível superior.

  • Por exemplo, existem alunos nas aulas medidos ao longo de vários anos.
  • Em lme4, escreveríamos:

    (1|class) + (1|pupil)

No entanto, quando eu estava olhando para um conjunto de dados aninhado específico, notei que ambas as fórmulas de modelo apresentaram resultados idênticos (código e saída abaixo). No entanto, vi outros conjuntos de dados em que as duas fórmulas produziram resultados diferentes. Então, o que está acontecendo aqui?

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
Joe King
fonte

Respostas:

148

(Esta é uma resposta bastante longa, há um resumo no final)

Você não está errado ao entender quais efeitos aleatórios aninhados e cruzados estão no cenário que você descreve. No entanto, sua definição de efeitos aleatórios cruzados é um pouco restrita. Uma definição mais geral de efeitos aleatórios cruzados é simplesmente: não aninhada . Veremos isso no final desta resposta, mas a maior parte da resposta se concentrará no cenário que você apresentou, das salas de aula nas escolas.

Primeira nota que:

O aninhamento é uma propriedade dos dados, ou melhor, do design experimental, não do modelo.

Além disso,

Os dados aninhados podem ser codificados de pelo menos duas maneiras diferentes, e esse é o cerne do problema encontrado.

O conjunto de dados no seu exemplo é bastante grande, então usarei outro exemplo de escolas da Internet para explicar os problemas. Mas primeiro, considere o seguinte exemplo simplificado:

insira a descrição da imagem aqui

Aqui temos aulas aninhadas nas escolas, o que é um cenário familiar. O ponto importante aqui é que, entre cada escola, as classes têm o mesmo identificador, mesmo sendo distintas se estiverem aninhadas . Class1aparece em School1, School2e School3. No entanto, se os dados estiverem aninhados, então Class1in nãoSchool1 é a mesma unidade de medida que in e . Se fossem iguais, teríamos a seguinte situação:Class1School2School3

insira a descrição da imagem aqui

o que significa que todas as turmas pertencem a todas as escolas. O primeiro é um design aninhado e o último é um design cruzado (alguns também podem chamá-lo de associação múltipla), e nós os formularíamos lme4usando:

(1|School/Class) ou equivalente (1|School) + (1|Class:School)

e

(1|School) + (1|Class)

respectivamente. Devido à ambiguidade de haver aninhamento ou cruzamento de efeitos aleatórios, é muito importante especificar o modelo corretamente, pois esses modelos produzirão resultados diferentes, como mostraremos a seguir. Além disso, não é possível saber, apenas examinando os dados, se aninhamos ou cruzamos efeitos aleatórios. Isso só pode ser determinado com o conhecimento dos dados e do projeto experimental.

Mas primeiro vamos considerar um caso em que a variável Class é codificada exclusivamente nas escolas:

insira a descrição da imagem aqui

Não há mais ambiguidade em relação ao aninhamento ou cruzamento. O aninhamento é explícito. Vamos agora ver isso com um exemplo em R, onde temos 6 escolas (rotuladas I- VI) e 4 classes dentro de cada escola (rotuladas acomo 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

Podemos ver nesta tabulação cruzada que todo código de classe aparece em todas as escolas, o que satisfaz a sua definição de efeitos aleatórios cruzados (neste caso, temos efeitos aleatórios cruzados totalmente , ao contrário de parcialmente , porque todas as classes ocorrem em todas as escolas). Portanto, esta é a mesma situação que tivemos na primeira figura acima. No entanto, se os dados são realmente aninhados e não cruzados, precisamos informar explicitamente 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

Como esperado, os resultados diferem porque m0é um modelo aninhado enquanto m1é um modelo cruzado.

Agora, se introduzirmos uma nova variável para o identificador 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

A tabulação cruzada mostra que cada nível de classe ocorre apenas em um nível da escola, conforme sua definição de aninhamento. Esse também é o caso dos seus dados, no entanto, é difícil mostrar isso com os seus dados, porque são muito escassos. As duas formulações do modelo agora produzirão a mesma saída (a do modelo aninhado m0acima):

> 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 a pena notar que os efeitos aleatórios cruzados não precisam ocorrer dentro do mesmo fator - acima, o cruzamento foi completamente dentro da escola. No entanto, isso não precisa ser o caso, e muitas vezes não é. Por exemplo, aderindo a um cenário escolar, se, em vez de aulas nas escolas, tivermos alunos nas escolas e também nos interessarmos pelos médicos com os quais os alunos estavam registrados, também teríamos aninhamento de alunos nos médicos. Não há aninhamento de escolas dentro dos médicos, ou vice-versa, então esse também é um exemplo de efeitos aleatórios cruzados, e dizemos que escolas e médicos são cruzados. Um cenário semelhante onde ocorrem efeitos aleatórios cruzados é quando observações individuais são aninhadas em dois fatores simultaneamente, o que geralmente ocorre com as chamadas medidas repetidasdados do item de assunto . Normalmente, cada sujeito é medido / testado várias vezes com / em itens diferentes e esses mesmos itens são medidos / testados por sujeitos diferentes. Assim, as observações são agrupadas nos assuntos e nos itens, mas os itens não são aninhados nos assuntos ou vice-versa. Mais uma vez, dizemos que assuntos e itens são cruzados .

Resumo: TL; DR

A diferença entre efeitos aleatórios cruzados e aninhados é que os efeitos aleatórios aninhados ocorrem quando um fator (variável de agrupamento) aparece apenas dentro de um nível específico de outro fator (variável de agrupamento). Isso é especificado em lme4:

(1|group1/group2)

onde group2está aninhado dentro group1.

Os efeitos aleatórios cruzados são simplesmente: não aninhados . Isso pode ocorrer com três ou mais variáveis ​​de agrupamento (fatores) em que um fator é aninhado separadamente nos outros, ou com dois ou mais fatores em que observações individuais são aninhadas separadamente nos dois fatores. Eles são especificados em lme4:

(1|group1) + (1|group2)

Robert Long
fonte
16
+6, esta é uma resposta muito boa. Lembre-me daqui a alguns dias e eu colocarei uma recompensa nele.
gung
2
Excelente explicação. Existe um nome para um possivelmente terceiro tipo de desenho experimental em que você cria níveis únicos para dois fatores (possivelmente aninhados); portanto, se eu seguisse coortes comprando motocicletas de revendedores diferentes em cidades diferentes, como comunicaria aos leitores que basicamente criou um fator de nível único interaction(city, dealer)?
AdamO 08/08/16
2
+6, essa é uma ótima resposta que achei que poderia complementar a recompensa de @ gung com outra. A propósito, estou lutando com o que provavelmente é uma confusão muito básica ( aqui está o meu Q ) e agradeceria muito sua ajuda.
Ameba
1
@RobertLong Parece que os projetos de plotagem dividida (medidas repetidas) costumam ser chamados de "aninhados", mesmo que não sejam realmente aninhados de acordo com a sua resposta. Essa inconsistência terminológica provavelmente contribuiu para minha confusão na questão vinculada. Seria ótimo se você pudesse esclarecer, aqui ou ali. Estou até pensando se devo postar uma pergunta terminológica separada (não orientada para R) sobre o que está aninhado em parcelas subdivididas.
Ameba
2
Atualize para o meu comentário anterior. Eu verifiquei dois livros antigos e oficiais sobre design experimental: Maxwell e Delaney, 1990, Designing Experiments and Analyzing Data, e Montgomery, 1976, Design and Analysis of Experiments. Ambos falam sobre projetos aninhados e ambos falam sobre medidas repetidas, também conhecidas como parcelas subdivididas; ambos usam a palavra "aninhado" apenas no sentido em que você está usando e nunca se referem a medidas repetidas como aninhadas. Portanto, não acho que exista diferença de terminologia, afinal.
Ameba