Usando lmer para previsão

18

Olá, tenho dois problemas que parecem candidatos naturais a modelos multiníveis / mistos, que nunca usei. O mais simples, e que espero tentar como introdução, é o seguinte: Os dados se parecem com muitas linhas do formulário

x y innergroup outergroup

onde x é uma covariável numérica na qual desejo regredir y (outra variável numérica), cada y pertence a um grupo interno e cada grupo interno é aninhado em um grupo externo (ou seja, todo o y em um determinado grupo interno pertence ao mesmo grupo externo) . Infelizmente, o grupo interno possui muitos níveis (muitos milhares) e cada nível tem relativamente poucas observações de y, então pensei que esse tipo de modelo poderia ser apropriado. Minhas perguntas são

  1. Como escrevo esse tipo de fórmula multinível?

  2. Uma vez que o lmer se encaixa no modelo, como proceder para prever a partir dele? Eu ajustei alguns exemplos de brinquedos mais simples, mas não encontrei uma função predict (). A maioria das pessoas parece mais interessada em inferência do que em predição com esse tipo de técnica. Como tenho vários milhões de linhas, os cálculos podem ser um problema, mas sempre posso cortá-los conforme apropriado.

Não precisarei fazer o segundo por um tempo, mas é melhor começar a pensar e brincar com ele. Eu tenho dados semelhantes como antes, mas sem x, e agora é uma variável binomial do formulário . y também exibe muita sobredispersão, mesmo dentro de grupos internos. A maioria dos não é maior que 2 ou 3 (ou menos), portanto, para derivar estimativas das taxas de sucesso de cada , tenho usado o estimador de retração beta-binomial , onde e(n,nk)nyi(α+ki)/(α+β+ni)αβsão estimados pelo MLE para cada grupo interno separadamente. Isso tem sido um pouco adequado, mas a escassez de dados ainda me atormenta, então eu gostaria de usar todos os dados disponíveis. De uma perspectiva, esse problema é mais fácil, pois não há covariável, mas, por outro, a natureza binomial torna-o mais difícil. Alguém tem alguma orientação de nível alto (ou baixo!)?

grg s
fonte
Verifique se os parênteses que inseri na fórmula de contração estão onde você pretendia que eles estivessem.
whuber
1
A 2ª parte da sua pergunta (com uma variável binária) não deve ser uma pergunta separada?
chl

Respostas:

17

A relação de fatores de expressão usando fórmulas R segue a notação de Wilkinson, em que '*' denota cruzamento e '/' aninhamento, mas existem algumas particularidades na maneira como a fórmula para modelos de efeitos mistos, ou mais geralmente aleatórios, é tratada. Por exemplo, dois efeitos aleatórios cruzados podem ser representados como (1|x1)+(1|x2). Interpretei sua descrição como um caso de aninhamento, assim como as classes são aninhadas nas escolas (aninhadas nos estados etc.); portanto, lmerseria uma fórmula básica com (a menos que seja indicado o contrário, uma gaussianfamília é usada por padrão):

y ~ x + (1|A:B) + (1|A)

onde A e B correspondem aos seus fatores internos e externos, respectivamente. B está aninhado dentro de A e ambos são tratados como fatores aleatórios. No pacote nlme mais antigo , isso corresponderia a algo como lme(y ~ x, random=~ 1 | A/B). Se A fosse considerado um fator fixo, a fórmula deveria ser lida y ~ x + A + (1|A:B).

Mas vale a pena verificar com mais precisão as especificações de D. Bates para o pacote lme4 , por exemplo, em seu próximo livro, lme4: Modelagem de Efeitos Mistos com R , ou os diversos folhetos disponíveis na mesma página. Em particular, não é um exemplo de tais relações do assentamento em Fitting lineares mistos de efeitos modelos, o pacote lme4 em R . Tutorial de John Maindonald também fornece uma boa visão geral: A Anatomia de um Modelo de Análise de Mixed, com Pacote lme4 de R . Por fim, a seção 3 da vinheta R sobre a implementação do lme4 inclui um exemplo da análise de uma estrutura aninhada.

Não há predict()função no lme4(essa função agora existe, veja o comentário abaixo), e você deve calcular os valores individuais previstos usando os efeitos fixos estimados (ver ?fixef) e aleatórios (ver ?ranef), mas consulte também este tópico sobre a falta da função de previsão no lme4 . Você também pode gerar uma amostra da distribuição posterior usando a mcmcsamp()função Às vezes, pode colidir, no entanto. Consulte a lista de discussão sig-me para obter informações mais atualizadas.

chl
fonte
3
Para atualização: lme4agora inclui uma predizer a função inside-r.org/packages/cran/lme4/docs/predict.mermod
Bar
A documentação para predict.merMod agora está disponível aqui: rdocumentation.org/packages/lme4/versions/1.1-12/topics/…
DirtStats
10

O pacote ez contém a função ezPredict (), que obtém previsões de modelos mais recentes, nos quais a previsão é baseada apenas nos efeitos fixos. É realmente apenas um invólucro em torno da abordagem detalhada no wiki do glmm .

Mike Lawrence
fonte
5

Eu usaria a função "logit.mixed" em Zelig , que é um wrapper para o lime4 e torna muito conveniente fazer previsões e simulações.

Shige
fonte
Parece haver nenhum método predcit () para logit.mixed em zelig ..
nassimhddd
3

A versão de desenvolvimento do lme4 possui uma função de previsão incorporada (predict.merMod). Pode ser encontrado em https://github.com/lme4/lme4/ .

O código para instalar os "Binários de desenvolvimento quase atualizados do repositório lme4 r-forge" pode ser encontrado na página acima e é:

install.packages("lme4", repos=c("http://lme4.r-forge.r-project.org/repos", getOption("repos")["CRAN"]))
Martin P
fonte
1
note que essa não é mais a versão de desenvolvimento, predictestá disponível há alguns anos.
Ben Bolker 15/05
1

Stephen Raudenbush tem um capítulo de livro no Manual de Análise Multinível sobre " Muitos Pequenos Grupos ". Se você está interessado apenas nos efeitos de x em y e não tem interesse em efeitos de nível superior, sua sugestão é simplesmente estimar um modelo de efeitos fixos (ou seja, uma variável dummy para todos os possíveis agrupamentos de nível superior).

Não sei como isso é aplicável à previsão, mas imagino que parte do que ele escreve é ​​aplicável ao que você está tentando realizar.

Andy W
fonte