Question:
glmer vs lmer, quel est le meilleur pour un résultat binomial?
JeanDrayton
2016-08-19 11:22:35 UTC
view on stackexchange narkive permalink

J'essaie d'adapter un modèle à effets mixtes avec un résultat binaire. J'ai un effet fixe (Offset) et un effet aléatoire (chambre, avec plusieurs points de données provenant de chaque chambre).

Dans le manuel "The R Book", (2007), pg 604, Crawley suggère d'utiliser la fonction lmer avec une famille binomiale pour l'analyse de données binomiales où chaque participant apporte des réponses multiples (analogues à chacune de mes chambres contribuant à des résultats multiples). Sur la base de cet exemple, j'ai utilisé le script suivant pour mes données:

  ball = lmer (Buried ~ Offset + (1 | Chamber), family = binomial, data = ballData)  

Quand j'exécute ce modèle, j'obtiens cet avertissement:

  appeler lmer avec 'family' est obsolète; veuillez utiliser glmer () à la place  

Lorsque je change mon code comme suit, le modèle fonctionne:

  ball = glmer (Buried ~ Offset + (1 | Chamber), family = binomial, data = ballData)  

Sur la base d'autres questions / réponses que j'ai lues sur Cross Validated, lmer ne doit être utilisé que pour les données où le résultat est normalement distribué, et glmer est la fonction correcte à utiliser pour un résultat binomial. Mes questions sont:

1) Quelqu'un pourrait-il clarifier l'écart entre les conseils de Crawleys et le fait que lmer ne fonctionnerait pas pour moi (ni, sur la base de ce que j'ai lu sur CVed, il n'est pas recommandé d'utiliser cette fonction pour les données binomiales)

2) Glmer est-il vraiment la fonction correcte à utiliser pour modéliser un résultat binomial avec des facteurs aléatoires?

3) En supposant que glmer est la bonne fonction à utiliser, je souhaite comparer un modèle avec et sans effets aléatoires pour déterminer si l'inclusion d'effets aléatoires améliore l'ajustement du modèle. Je comprends que glmer estime les paramètres du modèle via le maximum de vraisemblance. Quelle fonction puis-je utiliser pour créer un modèle sans effets aléatoires pour un résultat binaire utilisant le maximum de vraisemblance? Je jouais avec glm mais le fichier d'aide de cette fonction indique que la méthode d'estimation est repondérée de manière itérative aux moindres carrés (ce qui me dépasse, mais ce n'est pas ML ...)

Deux réponses:
Robert Long
2016-08-19 21:51:39 UTC
view on stackexchange narkive permalink

1) Dans les versions précédentes du package lme4 , vous pouviez exécuter lmer en utilisant la famille binomial . Cependant, tout cela a été d'appeler glmer , et cette fonctionnalité a maintenant été supprimée. Donc, au moment de la rédaction de cet article, Crawley avait raison.

2) Oui, glmer est la fonction correcte à utiliser avec un résultat binaire.

3) glm peut adapter un modèle pour des données binaires sans effets aléatoires. Cependant, il est incorrect de comparer un modèle équipé de glm à un modèle équipé de glmer en utilisant un test basé sur la vraisemblance car les probabilités ne sont pas comparables. D'après votre description, vous avez des mesures répétées dans les chambres. Donc, en supposant que vous avez suffisamment de chambres et que celles-ci peuvent être considérées comme un échantillon aléatoire d'une plus grande population de chambres, alors a priori vous devez conserver les interceptions aléatoires pour Chamber contrôler une éventuelle non-indépendance des observations au sein des chambres. Vous pouvez considérer les interceptions aléatoires comme faisant partie du plan expérimental.

D'un autre côté, si la variance de l'effet aléatoire est très petite et / ou l'inférence ou les prédictions pour le glm et le modèle glmer sont en grande partie les mêmes, alors peu importe ce que vous utilisez de toute façon.

en fait, je pense que les probabilités sont maintenant comparables entre `glm` et` lmer` - mais je pense que votre conseil de garder l'effet aléatoire est quand même correct
Merci Robert pour vos conseils.Je ne suis pas trop intéressé par les effets aléatoires, je veux juste contrôler la non indépendance des réponses provenant de la même chambre.La variance associée aux interceptions aléatoires (regroupées par chambre) est assez petite, et les modèles avec et sans les termes aléatoires me donnent la même réponse pour mon effet fixe.Mais je garderai les interceptions aléatoires pour contrôler la non indépendance des données.Je vous remercie :)
Jim
2016-08-20 00:06:46 UTC
view on stackexchange narkive permalink

Pour 2, oui, vous devriez utiliser glmer ou glm pour les résultats binomiaux. Si vous avez un peu plus de temps pour attendre que le modèle s'adapte --- et surtout si vous êtes intéressé par l'inférence pour vos effets aléatoires --- je vous suggère d'utiliser rstanarm :: stan_glmer () et rstanarm :: stan_glm respectivement, qui utilisent la même syntaxe. L'énorme avantage ici est que vos estimations d'incertitude proviennent d'un véritable postérieur. Vos prédictions comprendront également l'incertitude des paramètres. Un conseil cependant: assurez-vous de mettre vos données à l'échelle pour qu'elles soient à un seul chiffre.

Soyez averti que la densité postérieure des effets aléatoires a tendance à être biaisée, donc l'utilisation de méthodes basées sur la vraisemblance (comme dans lme4) aura tendance à vous donner de mauvaises estimations d'effets aléatoires.

3) Le package loo permet la comparaison de vos ajustements de stan_ en utilisant une approximation pour la validation croisée sans un. Je recommande de jeter un oeil.

https://cran.r-project.org/web/packages/rstanarm/vignettes/glmer.html

hmm.pourriez-vous développer sur (1) "assurez-vous que vos données soient à un seul chiffre" (quels problèmes cela causerait-il à `rstanarm`?) et (2)" l'utilisation de méthodes basées sur la vraisemblance (comme dans lme4) aura tendance àvous donner de mauvaises estimations d'effets aléatoires "?
Merci pour vos pensées Jim.Je suis tout à fait nouveau dans r et je me suis un peu perdu dans votre réponse.Pourriez-vous clarifier ce que fait la fonction rstanarm :: stan?
Ben - les modèles d'interception / de pente variables ont tendance à avoir des probabilités folles si vous avez des nombres avec des ordres de grandeur différents.Il peut donc être utile de mettre à l'échelle - disons, entre -10 et 10.
JeanDrayton: le paquet `rstanarm` implémente les mêmes modèles dans` lme4`, mais les estime en utilisant des techniques bayésiennes.Pour les modèles d'intersection / pente variables, le principal avantage est que vous obtenez de meilleures estimations des différentes intersections et pentes.Pour les utiliser, téléchargez simplement `rstanarm` et remplacez votre appel à` glmer () `par` stan_glmer () `, et cela devrait fonctionner correctement.


Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 3.0 sous laquelle il est distribué.
Loading...