Interpretando efeitos aleatórios aninhados

Oct 10 2020

Eu estava brincando com alguns dados e tive dificuldade em entender o significado dos efeitos aninhados.

Aqui está um exemplo de conjunto de dados (autoestima2 do pacote datarium)

dat <- structure(list(id = structure(c(1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 
9L, 10L, 11L, 12L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 
12L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 1L, 2L, 
3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 1L, 2L, 3L, 4L, 5L, 
6L, 7L, 8L, 9L, 10L, 11L, 12L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 
9L, 10L, 11L, 12L), .Label = c("1", "2", "3", "4", "5", "6", 
"7", "8", "9", "10", "11", "12"), class = "factor"), treatment = structure(c(1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("ctr", "Diet"), class = "factor"), 
    time = c("t1", "t1", "t1", "t1", "t1", "t1", "t1", "t1", 
    "t1", "t1", "t1", "t1", "t1", "t1", "t1", "t1", "t1", "t1", 
    "t1", "t1", "t1", "t1", "t1", "t1", "t2", "t2", "t2", "t2", 
    "t2", "t2", "t2", "t2", "t2", "t2", "t2", "t2", "t2", "t2", 
    "t2", "t2", "t2", "t2", "t2", "t2", "t2", "t2", "t2", "t2", 
    "t3", "t3", "t3", "t3", "t3", "t3", "t3", "t3", "t3", "t3", 
    "t3", "t3", "t3", "t3", "t3", "t3", "t3", "t3", "t3", "t3", 
    "t3", "t3", "t3", "t3"), val = c(83, 97, 93, 92, 77, 72, 
    92, 92, 95, 92, 92, 79, 84, 100, 91, 91, 74, 76, 90, 89, 
    93, 90, 93, 80, 77, 95, 92, 92, 73, 65, 89, 87, 91, 84, 92, 
    69, 86, 99, 91, 92, 76, 75, 87, 89, 94, 93, 92, 80, 69, 88, 
    89, 89, 68, 63, 79, 81, 84, 81, 91, 62, 88, 97, 92, 95, 72, 
    76, 87, 88, 93, 95, 91, 78)), row.names = c(NA, -72L), class = c("tbl_df", 
"tbl", "data.frame"))
 dat %>% arrange(id)
# A tibble: 72 x 4
   id    treatment time    val
   <fct> <fct>     <chr> <dbl>
 1 1     ctr       t1       83
 2 1     Diet      t1       84
 3 1     ctr       t2       77
 4 1     Diet      t2       86
 5 1     ctr       t3       69
 6 1     Diet      t3       88
 7 2     ctr       t1       97
 8 2     Diet      t1      100
 9 2     ctr       t2       95
10 2     Diet      t2       99
# ... with 62 more rows
dat$id %>% unique [1] 1 2 3 4 5 6 7 8 9 10 11 12 Levels: 1 2 3 4 5 6 7 8 9 10 11 12 > dat$treatment %>% unique
[1] ctr  Diet
Levels: ctr Diet
> dat$time %>% unique
[1] "t1" "t2" "t3"

Este é um desenho de medidas repetidas, o que significa que cada participante (id) passou por tratamento-ctr e tratamento-Dieta, nos três momentos (t1, t2, t3).

Se eu fosse analisar isso dentro da estrutura de modelos mistos, eu faria:

library(lme4)
mod1 <- lmer(val ~ treatment*time + (1|id), data = dat) %>% anova
mod1
Analysis of Variance Table
               npar Sum Sq Mean Sq F value
treatment         1 316.68  316.68  41.037
time              2 258.69  129.35  16.762
treatment:time    2 266.36  133.18  17.258

Se eu estiver certo, este modelo analisa os principais efeitos e interação de tratamento e tempo, enquanto controla o fato de que os pontos de dados não são independentes (os mesmos participantes devem ter resultados mais semelhantes em vários grupos de design do que participantes diferentes).

Digamos que especificamos mais dois modelos:

> mod2 <- lmer(val ~ treatment*time + (1|treatment:id), data = dat) %>% anova
mod2
Analysis of Variance Table
               npar  Sum Sq Mean Sq F value
treatment         1   6.518   6.518   1.432
time              2 258.694 129.347  28.417
treatment:time    2 266.361 133.181  29.259

> mod3 <- lmer(val ~ treatment*time + (1|id) + (1|treatment:id), data = dat) %>% anova
mod3
Analysis of Variance Table
               npar  Sum Sq Mean Sq F value
treatment         1  70.738  70.738  15.541
time              2 258.694 129.347  28.417
treatment:time    2 266.361 133.181  29.259
  1. O mod2 especifica que as mesmas pessoas para o mesmo tratamento devem ser mais semelhantes do que outras?
  2. Que tipo de dependência o mod3 sugere? Qual é a diferença do mod2?
  3. Precisamos ao menos especificar dependência no sentido de (1|treatment:id)já considerarmos o tratamento como um efeito fixo? O que ganhamos adicionalmente especificando isso como um efeito aleatório aninhado?

Respostas

7 RobertLong Oct 10 2020 at 15:22

Será que mod2especificar que as mesmas pessoas para mesmo tratamento deve ser mais semelhantes do que os outros?

mod2implica que você repetiu medidas dentro de cada combinação de treatmente id. Pela sua descrição, não parece ser o caso.

Que tipo de dependência o mod3 sugere? Qual é a diferença do mod2?

mod3também está ajustando interceps aleatórios para id, o que implica que treatmentestá aninhado em id. Novamente, este não é o caso aqui.

Precisamos ao menos especificar dependência no sentido de (1 | tratamento: id) se já consideramos o tratamento como um efeito fixo?

Como você parece estar interessado no efeito fixo para treatment, não faz sentido incluí-lo também como um fator de agrupamento para interceptações aleatórias como parte de uma interação.

O que ganhamos adicionalmente especificando isso como um efeito aleatório aninhado?

Não ganhamos nada. Como não temos efeitos aleatórios aninhados, os erros padrão para as estimativas de efeitos fixos estarão errados.