Comment accélérer le calcul des effets fixes dans un GLMM?

9

Je fais une étude de simulation qui nécessite des estimations d'amorçage obtenues à partir d'un modèle mixte linéaire généralisé (en fait, le produit de deux estimations pour les effets fixes, une à partir d'un GLMM et l'autre à partir d'un LMM). Pour bien faire l'étude, il faudrait environ 1000 simulations avec 1000 ou 1500 réplications bootstrap à chaque fois. Cela prend beaucoup de temps sur mon ordinateur (plusieurs jours).

How can I speed up the computation of these fixed effects?

Pour être plus précis, j'ai des sujets qui sont mesurés de manière répétée de trois manières, donnant lieu aux variables X, M et Y, où X et M sont continus et Y est binaire. Nous avons deux équations de régression où Y est la variable continue latente sous-jacente pour et les erreurs ne sont pas iid. La statistique que nous voulons démarrer est . Ainsi, chaque réplication bootstrap nécessite l'ajustement d'un LMM et d'un GLMM. Mon code R est (en utilisant lme4)

M=α0+α1X+ϵ1
Y=β0+β1X+β2M+ϵ2
Y
α1β2
    stat=function(dat){
        a=fixef(lmer(M~X+(X|person),data=dat))["X"]
        b=fixef(glmer(Y~X+M+(X+M|person),data=dat,family="binomial"))["M"]
        return(a*b)
    }

Je me rends compte que j'obtiens la même estimation pour si je l' comme un modèle linéaire, ce qui fait gagner du temps, mais la même astuce ne fonctionne pas pour .α1β2

Dois-je simplement acheter un ordinateur plus rapide? :)

BR
la source
1
@BR quel est le col de la bouteille ici? Fondamentalement, ce qui prend du temps Rprof.
suncoolsu
1
Une façon consiste simplement à ignorer la partie "mixte" du GLMM. Il suffit de tenir un GLM ordinaire, les estimations ne changent pas beaucoup, mais leurs erreurs standards seront probablement
probabilityislogic
@probabilityislogic. En plus de votre remarque, je pense également que la différence entre les réponses dépendra de la taille du groupe et du comportement individuel du groupe. Comme le disent Gelman et Hill: les résultats du modèle à effets mixtes se situeraient entre le regroupement et l'absence de regroupement. (Évidemment, c'est pour les modèles hiérarchiques bayésiens, mais les modèles mixtes sont une manière classique de faire de même.)
suncoolsu
@probabilityislogic: Cela fonctionne pour LMM, mais cela semble échouer pour GLMM (ce qui signifie que j'ai exécuté des modèles avec et sans le M supplémentaire sur les mêmes données et que j'ai obtenu des résultats sensiblement différents). À moins, bien sûr, qu'il n'y ait une erreur dans la mise en œuvre de glmer.
BR
@suncoolsu: le goulot d'étranglement est l'estimation du GLMM, qui peut prendre quelques secondes (surtout avec plusieurs effets aléatoires). Mais faites cela 1000 * 1000 fois, et c'est 280 heures de calcul. La pose d'un GLM prend environ 1/100 du temps.
BR

Réponses:

4

Cela devrait aider à spécifier les valeurs de départ, bien qu'il soit difficile de savoir combien. Lorsque vous effectuez une simulation et un amorçage, vous devez connaître les «vraies» valeurs ou les estimations non amorcées ou les deux. Essayez d'utiliser ceux de l' start =option glmer.

Vous pouvez également envisager de vérifier si les tolérances pour déclarer la convergence sont plus strictes que vous n'en avez besoin. Je ne sais pas cependant comment les modifier à partir de la lme4documentation.

un arrêt
la source
4

Deux autres possibilités sont également à considérer, avant d'acheter un nouvel ordinateur.

  1. Informatique parallèle - l'amorçage est facile à exécuter en parallèle. Si votre ordinateur est raisonnablement neuf, vous avez probablement quatre cœurs. Jetez un œil à la bibliothèque multicœur de R.
  2. Le cloud computing est également une possibilité et raisonnablement bon marché. J'ai des collègues qui ont utilisé le cloud amazon pour exécuter des scripts R. Ils ont trouvé que c'était assez rentable.
csgillespie
la source
1
Merci d'avoir répondu. D'une certaine manière, j'ai oublié le fait que j'ai deux cœurs (mon ordinateur n'est pas très nouveau). J'aurais dû regarder le multicœur il y a longtemps.
BR
2

Ce pourrait être un ordinateur plus rapide. Mais voici une astuce qui peut fonctionner.

Générez une simultanéation de , mais seulement conditionnelle à , puis faites juste OLS ou LMM sur les valeurs simulées .YYY

Supposons que votre fonction de liaison soit . cela indique comment vous obtenez de la probabilité de à la valeur , et est très probablement la fonction logistique .g(.)Y=1Yg(z)=log(z1z)

Donc, si vous supposez une distribution d'échantillonnage bernouli pour , puis utilisez les jeffreys avant pour la probabilité, vous obtenez une bêta postérieure pour . La simulation à partir de cela devrait être comme l'éclairage, et si ce n'est pas le cas, vous avez besoin d'un ordinateur plus rapide. De plus, les échantillons sont indépendants, donc pas besoin de vérifier les diagnostics de "convergence" comme dans MCMC, et vous n'avez probablement pas besoin d'autant d'échantillons - 100 peuvent fonctionner correctement pour votre cas. Si vous avez des binomiaux , remplacez simplement le du postérieur ci-dessus par , le nombre d'essais du binôme pour chaque .YYBernoulli(p)pBeta(Yobs+12,1Yobs+12)Ys1niYi

Vous avez donc un ensemble de valeurs simulées . Vous appliquez ensuite la fonction de lien à chacune de ces valeurs, pour obtenir . Ajustez un LMM à , ce qui est probablement plus rapide que le programme GLMM. Vous pouvez fondamentalement ignorer les valeurs binaires d'origine (mais ne les supprimez pas!), Et simplement travailler avec la "matrice de simulation" ( , où est la taille de l'échantillon et est le nombre de simulations).psimYsim=g(psim)YsimN×SNS

Donc, dans votre programme, je remplacerais la fonction fonction , et par une seule simultation, vous créeriez alors une sorte de boucle qui applique la fonction à chaque simulation, puis prend la moyenne comme l'estimation de . Quelque chose comme gmler()lmer()Ylmer()b

a=
b=0
do s=1,,S
best=lmer(Ys)
b=b+1s(bestb)
end
return(ab)

Faites-moi savoir si j'ai besoin d'expliquer quelque chose de plus clair

probabilitéislogique
la source
Merci pour la réponse, ça va me prendre un peu pour la digérer (et j'ai déjà des projets pour mon samedi soir). Il est suffisamment différent pour qu'il ne soit pas clair pour moi qu'il donne la même réponse que l'approche GLMM, mais je dois y réfléchir davantage.
BR