Récemment, j'ai essayé d'ajuster de nombreux modèles d'effets aléatoires à des ensembles de données relativement importants. Disons environ 50 000 personnes (ou plus) observées jusqu'à 25 points temporels. Avec un échantillon aussi important, nous incluons de nombreux prédicteurs pour lesquels nous ajustons - peut-être une cinquantaine d'effets fixes. Je modélise le modèle sur un résultat binaire en utilisant lme4::glmer
dans R, avec des intercepteurs aléatoires pour chaque sujet. Je ne peux pas entrer dans les détails sur les données, mais le format de base de la commande glmer
que j'ai utilisée était :
fit <- glmer(outcome ~ treatment + study_quarter + dd_quarter + (1|id),
family = "binomial", data = dat)
où study_quarter
et dd_quarter
sont des facteurs avec environ 20 niveaux chacun.
Lorsque j'essaie d'ajuster ce modèle dans R, cela prend environ 12 à 15 heures et renvoie une erreur indiquant qu'il n'a pas convergé. J'ai fait beaucoup de dépannage (par exemple, en suivant ces directives), sans amélioration. Et la convergence n'est même pas proche à la fin (le gradient maximal est d'environ 5 à 10, alors que le critère de convergence est de 0,001 je pense).
J'ai alors essayé d'ajuster le modèle dans Stata, en utilisant la commande melogit. Le modèle a été ajusté en moins de 2 minutes, sans problèmes de convergence. La commande Stata correspondante est
melogit outcome treatment i.study_quarter i.dd_quarter || id:
Qu'est-ce qui se passe ? Est-ce que Stata dispose simplement d'un meilleur algorithme d'ajustement, ou mieux optimisé pour les modèles et les ensembles de données volumineux ? C'est vraiment surprenant à quel point les temps d'exécution étaient différents.