Como escolher a biblioteca nlme ou lme4 R para modelos de efeitos mistos?

85

Eu tenho encaixar alguns modelos de efeitos mistos (particularmente modelos longitudinais) usando lme4em Rmas gostaria de realmente dominar os modelos e o código que se passa com eles.

No entanto, antes de mergulhar com os dois pés (e comprar alguns livros), quero ter certeza de que estou aprendendo a biblioteca certa. Eu usei lme4até agora porque achei mais fácil do que isso nlme, mas se nlmefor melhor para meus propósitos, acho que devo usá-lo.

Tenho certeza de que nenhum dos dois é "melhor" de uma maneira simplista, mas eu valorizaria algumas opiniões ou pensamentos. Meus principais critérios são:

  1. fácil de usar (eu sou psicólogo por treinamento e não sou particularmente versado em estatística ou codificação, mas estou aprendendo)
  2. boas características para ajustar dados longitudinais (se houver uma diferença aqui, mas é para isso que eu os uso principalmente)
  3. bons resumos gráficos (fáceis de interpretar), mais uma vez não tenho certeza se há uma diferença aqui, mas muitas vezes produzo gráficos para pessoas ainda menos técnicas que eu, portanto, bons gráficos claros são sempre bons (gosto muito da função xyplot na estrutura () por esta razão).

Como sempre, espero que essa pergunta não seja muito vaga e agradeço antecipadamente por qualquer sabedoria!

Chris Beeley
fonte

Respostas:

68

Ambos os pacotes de usar Latticecomo o back-end, mas nlmetem algumas características interessantes como groupedData()e lmList()que estão faltando em lme4(IMO). De uma perspectiva prática, os dois critérios mais importantes parecem, no entanto, que

  1. lme4estende nlme- se a outras funções de link: in nlme, você não pode ajustar resultados cuja distribuição não é gaussiana, lme4pode ser usado para ajustar a regressão logística de efeitos mistos, por exemplo.
  2. em nlme, é possível especificar a matriz de variância-covariância para os efeitos aleatórios (por exemplo, um AR (1)); não é possível entrar lme4.

Agora, lme4pode facilmente lidar com um número muito grande de efeitos aleatórios (daí o número de indivíduos em um determinado estudo), graças à sua parte C e ao uso de matrizes esparsas. O nlmepacote foi um pouco substituído pelo lme4que não esperarei que as pessoas gastem muito tempo desenvolvendo complementos nlme. Pessoalmente, quando tenho uma resposta contínua no meu modelo, costumo usar os dois pacotes, mas agora sou versado no lme4caminho para ajustar o GLMM.

Ao invés de comprar um livro, dê uma olhada pela primeira vez no Doug Bates' projecto de livro sobre R-forja: lme4: efeitos mistos Modelagem com R .

chl
fonte
5
@ 2) mais precisamente, lme4é possível especificar uma estrutura de covariância diagonal (ou seja, efeitos aleatórios independentes) ou matrizes de covariância não estruturadas (ou seja, todas as correlações devem ser estimadas) ou matrizes de covariância parcialmente diagonal e parcialmente não estruturada para os efeitos aleatórios. Eu também acrescentaria uma terceira diferença de recursos que pode ser mais relevante para muitas situações de dados longitudinais: nlmevamos especificar estruturas de variância-covariância para os resíduos (ou seja, autocorrelação espacial ou temporal ou heterocedasticidade), lme4não.
Fab10
@fabians (+1) Ah, obrigado! Não percebeu lme4permite escolher diferentes estruturas de VC. Seria melhor que você o adicionasse em sua própria resposta, juntamente com outras idéias que possa ter. Eu vou votar. BTW, eu também percebi que também lmList()está disponível lme4. Parece que me lembro de alguma discussão sobre isso no R-sig-ME.
chl
Alguma alternativa mais rápida? Preciso ajustar modelos com grandes conjuntos de dados e levar meia quase uma hora no meu computador. Existem muitos pacotes de regressão rápida, mas nenhum parece ser capaz de lidar com efeitos aleatórios.
skan
52

Como chl apontou, a principal diferença é que tipo de estrutura de variância-covariância você pode especificar para os efeitos aleatórios. Em lme4você pode especificar:

  • estruturas de covariância diagonal (ou seja, impor efeitos aleatórios mutuamente não correlacionados por meio de sintaxe ~ (1 | group)+ (0 + x1 | group) + (0 + x2 | group))
  • ou matrizes de covariância não estruturadas (ou seja, todas as correlações são estimadas ~ (1 + x1 + x2 | group))
  • ou covariância parcialmente diagonal, parcialmente não estruturada ( y ~ (1 + x1 | group) + (0 + x2 | group), onde você estimaria uma correlação entre a interceptação aleatória e a inclinação aleatória de x1, mas não há correlações entre a inclinação aleatória de x2e a interceptação aleatória e entre a inclinação aleatória de x2e a inclinação aleatória de x1).

nlmeoferece uma classe muito mais ampla de estruturas de covariância para os efeitos aleatórios. Minha experiência é que a flexibilidade de lme4é suficiente para a maioria das aplicações, no entanto.

Eu também adicionaria uma terceira diferença de recursos que pode ser mais relevante para muitas situações de dados longitudinais: nlme vamos especificar estruturas de variância-covariância para os resíduos (ou seja, autocorrelação espacial ou temporal ou heterocedasticidade ou variabilidade dependente de covariável) no weightsargumento (cf ?varFunc), enquanto lme4apenas permite pesos anteriores fixos para as observações.

Uma quarta diferença é que pode ser difícil nlmeajustar efeitos aleatórios cruzados (parcialmente), enquanto isso não é um problema lme4.

Você provavelmente vai ficar bem se continuar lme4.

fabianos
fonte
1
Com a possível exceção (como você apontou) de poder incorporar a autocorrelação temporal no nlme, mas não no lme4. Se o conjunto de dados for grande o suficiente e se os dados tiverem esse tipo de estrutura, isso poderá ser uma grande vantagem do nlme.
Ben Bolker
22

Outros resumiram muito bem as diferenças. Minha impressão é que lme4é mais adequado para conjuntos de dados em cluster, especialmente quando você precisa usar efeitos aleatórios cruzados. No entanto, para projetos de medidas repetidas (incluindo muitos projetos longitudinais), nlmeé a ferramenta, pois apenas nlmesuporta a especificação de uma estrutura de correlação para os resíduos. Você faz isso usando o argumento correlationsou corcom um corStructobjeto. Também permite modelar a heterocedasticidade usando um varFuncobjeto.

AlefSin
fonte
13

Na verdade, existem vários pacotes em R para ajustar modelos de efeitos mistos além lme4e nlme. Existe um wiki interessante, dirigido pelo grupo de interesse especial R para modelos mistos, que possui uma FAQ muito boa e uma página comparando os diferentes pacotes .

Quanto às minhas opiniões sobre o uso efetivo do lme4e nlme: eu achei lme4geralmente mais fácil de usar devido à sua extensão direta da sintaxe básica da fórmula R. (Se você precisar trabalhar com modelos de aditivos generalizados, o gamm4pacote estenderá essa sintaxe mais uma etapa e você terá uma boa curva de aprendizado.) Como outros já mencionaram, lme4pode lidar com modelos generalizados (outras funções de link e distribuições de erros), enquanto nlmeO foco da função de link gaussiano permite fazer algumas coisas que são muito difíceis no caso geral (especificar a estrutura de covariância e certas coisas dependentes do cálculo dos graus de liberdade, como valores-p, o último dos quais encorajo você a mudar longe de!).

Livius
fonte