Modelo de efeitos mistos com aninhamento

34

Eu tenho dados coletados de um experimento organizado da seguinte maneira:

Dois locais, cada um com 30 árvores. 15 são tratados, 15 são controle em cada local. De cada árvore, amostramos três pedaços do caule e três pedaços das raízes, de modo que 6 amostras de nível 1 por árvore são representadas por um dos dois níveis de fator (raiz, caule). Então, a partir dessas amostras de caule / raiz, coletamos duas amostras dissecando tecidos diferentes dentro da amostra, o que é representado por um dos dois níveis de fator para o tipo de tecido (tipo de tecido A, tipo de tecido B). Essas amostras são medidas como uma variável contínua. O número total de observações é 720; 2 locais * 30 árvores * (três amostras de caule + três amostras de raiz) * (uma amostra de tecido A + uma amostra de tecido B). Os dados têm esta aparência ...

        ï..Site Tree Treatment Organ Sample Tissue Total_Length
    1        L  LT1         T     R      1 Phloem           30
    2        L  LT1         T     R      1  Xylem           28
    3        L  LT1         T     R      2 Phloem           46
    4        L  LT1         T     R      2  Xylem           38
    5        L  LT1         T     R      3 Phloem          103
    6        L  LT1         T     R      3  Xylem           53
    7        L  LT1         T     S      1 Phloem           29
    8        L  LT1         T     S      1  Xylem           21
    9        L  LT1         T     S      2 Phloem           56
    10       L  LT1         T     S      2  Xylem           49
    11       L  LT1         T     S      3 Phloem           41
    12       L  LT1         T     S      3  Xylem           30

Estou tentando ajustar um modelo de efeitos mistos usando R e lme4, mas sou novo em modelos mistos. Gostaria de modelar a resposta como o Tratamento + Fator de nível 1 (tronco, raiz) + Fator de nível 2 (tecido A, tecido B), com efeitos aleatórios para as amostras específicas aninhadas nos dois níveis.

Em R, estou fazendo isso usando o lmer, da seguinte maneira

fit <- lmer(Response ~ Treatment + Organ + Tissue + (1|Tree/Organ/Sample)) 

Pelo meu entendimento (... o que não é certo e por que estou postando!), O termo:

(1|Tree/Organ/Sample)

Especifica que 'Amostra' está aninhada nas amostras de órgãos, aninhadas na árvore. Esse tipo de aninhamento é relevante / válido? Desculpe se esta questão não está clara. Em caso afirmativo, especifique onde posso elaborar.

Erik
fonte

Respostas:

33

Eu acho que está correto.

  • (1|Tree/Organ/Sample)expande para / é equivalente a (1|Tree)+(1|Tree:Organ)+(1|Tree:Organ:Sample)(onde :denota uma interação).
  • Os fatores fixos Treatment, Organe Tissueautomaticamente se tratado no nível correto.
  • Você provavelmente deve incluir Sitecomo efeito fixo (conceitualmente é um efeito aleatório, mas não é prático tentar estimar a variação entre sites com apenas dois sites); isso reduzirá ligeiramente a variação entre árvores.
  • Você provavelmente deve incluir todos os dados em um quadro de dados e transmiti-lo explicitamente para lmeratravés de um data=my.data.frameargumento.

Você pode encontrar as perguntas frequentes sobre o glmm úteis (focadas nos GLMMs, mas também possuem material relevante para modelos mistos lineares).

Ben Bolker
fonte
E se Erik quisesse especificar uma estrutura de covariância para essas interceptações? Ou seja, pode-se esperar que uma amostra com interceptação de árvore positiva também tenha interceptação de órgão positiva. O aninhamento cuida desse problema automaticamente? Caso contrário, como alguém poderia especificar tal estrutura?
Sheridan Grant
Acho que se você tentar escrever as equações para esse caso, descobrirá que ele foi resolvido.
precisa
13

Li essa pergunta e a resposta do Dr. Bolker e tentei replicar os dados (sem me importar muito, francamente, com o que "comprimento" representa em termos ou unidades biológicas e depois encaixar o modelo conforme acima. Estou publicando os resultados aqui compartilhar e buscar feedback sobre a provável presença de mal-entendidos.

O código que eu usei para gerar esses dados fictícios pode ser encontrado aqui e o conjunto de dados tem a estrutura interna do OP:

     site     tree treatment organ sample tissue    length
1    L       LT01         T  root      1  phloem  108.21230
2    L       LT01         T  root      1  xylem   138.54267
3    L       LT01         T  root      2  phloem   68.88804
4    L       LT01         T  root      2  xylem   107.91239
5    L       LT01         T  root      3  phloem   96.78523
6    L       LT01         T  root      3  xylem    88.93194
7    L       LT01         T  stem      1  phloem  101.84103
8    L       LT01         T  stem      1  xylem   118.30319

A estrutura é a seguinte:

 'data.frame':  360 obs. of  7 variables:
     $ site     : Factor w/ 2 levels "L","R": 1 1 1 1 1 1 1 1 1 1 ...
 $ tree     : Factor w/ 30 levels "LT01","LT02",..: 1 1 1 1 1 1 1 1 1 1 ...
     $ treatment: Factor w/ 2 levels "C","T": 2 2 2 2 2 2 2 2 2 2 ...
 $ organ    : Factor w/ 2 levels "root","stem": 1 1 1 1 1 1 2 2 2 2 ...
     $ sample   : num  1 1 2 2 3 3 1 1 2 2 ...
 $ tissue   : Factor w/ 2 levels "phloem","xylem": 1 2 1 2 1 2 1 2 1 2 ...
     $ length   : num  108.2 138.5 68.9 107.9 96.8 ...

O conjunto de dados foi "manipulado" (o feedback aqui seria bem-vindo) da seguinte maneira:

  1. Pois treatment, existe um efeito fixo com duas interceptações distintas para tratamento versus controle ( 100versus 70) e sem efeitos aleatórios.
  2. Defino os valores para tissueefeitos fixos proeminentes com interceptações muito diferentes para phloemversus xylem( 3versus 6) e efeitos aleatórios com a sd = 3.
  3. organN(0 0,3)sd = 36rootstem
  4. Pois treetemos apenas efeitos aleatórios com a sd = 7.
  5. Pois sampleeu tentei configurar apenas efeitos aleatórios com sd = 5.
  6. Para sitetambém apenas efeitos aleatórios com sd = 3.

Não houve declives, devido à natureza categórica das variáveis.

Os resultados do modelo de efeitos mistos:

fit <- lmer(length ~ treatment + organ + tissue + (1|tree/organ/sample), data = trees) 

estavam:

 Random effects:
 Groups              Name        Variance  Std.Dev. 
 sample:(organ:tree) (Intercept) 9.534e-14 3.088e-07
 organ:tree          (Intercept) 0.000e+00 0.000e+00
 tree                (Intercept) 4.939e+01 7.027e+00
 Residual                        3.603e+02 1.898e+01
Number of obs: 360, groups:  sample:(organ:tree), 180; organ:tree, 60; tree, 30

Fixed effects:
            Estimate Std. Error       df t value Pr(>|t|)    
(Intercept)  79.8623     2.7011  52.5000  29.567  < 2e-16 ***
treatmentT   21.4368     3.2539  28.0000   6.588 3.82e-07 ***
organstem     0.1856     2.0008 328.0000   0.093    0.926    
tissuexylem   3.1820     2.0008 328.0000   1.590    0.113    
---
Signif. codes:  0***0.001**0.01*0.05 ‘.’ 0.1 ‘ ’ 1

Como funcionou:

  1. Pois treatmenta interceptação sem tratamento foi 79.8623(estabeleci uma média de 70), e com o tratamento foi 79.8623 + 21.4368 = 101.2991(estabelecemos uma média de 100.
  2. Pois tissuehavia uma 3.1820contribuição para a cortesia de interceptação de xylem, e eu havia estabelecido uma diferença entre phloeme xylemde 3. Os efeitos aleatórios não fizeram parte do modelo.
  3. Pois organ, amostras do stemaumento da interceptação em 0.1856- eu não havia estabelecido diferença nos efeitos fixos entre steme root. O desvio padrão do que eu queria agir como efeitos aleatórios não foi refletido.
  4. Os treeefeitos aleatórios com um SD de 7surgiram muito bem como 7.027.
  5. Quanto a sample, a inicial sdde 5foi subestimada como 3.088.
  6. site não fazia parte do modelo.

Portanto, no geral, parece que o modelo corresponde à estrutura dos dados.

Antoni Parellada
fonte