(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:
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 . Class1
aparece em School1
, School2
e School3
. No entanto, se os dados estiverem aninhados, então Class1
in nãoSchool1
é a mesma unidade de medida que in e . Se fossem iguais, teríamos a seguinte situação:Class1
School2
School3
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 lme4
usando:
(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:
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 a
como 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 m0
acima):
> 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 group2
está 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)