GLMMの固定効果の計算を高速化するにはどうすればよいですか?


9

私はシミュレーション研究を行っています。これは、一般化線形混合モデルから取得した推定値(実際には、固定効果の2つの推定値の1つ(GLMMとLMMの1つ)の積)を必要とします。調査を適切に行うには、毎回1000または1500のブートストラップレプリケーションで約1000のシミュレーションが必要です。これには、私のコンピューターでかなりの時間がかかります(数日)。

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

より具体的には、私は3つの方法で繰り返し測定され、変数X、M、およびYを発生させる被験者があります。ここで、XとMは連続で、Yはバイナリです。我々は2つの回帰方程式持っ Yところための基礎となる潜在連続変数であるとIIDされないエラー。 ブートストラップしたい統計はです。したがって、各ブートストラップ複製には、LMMとGLMMのフィッティングが必要です。私のRコードは(lme4を使用)Y * = β 0 + β 1 X + β 2 M + ε 2 * Y α 1 β 2

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)
    }

線形モデルとして近似しただけでもは同じ推定値になるので、時間は節約できますが、では同じトリックが機能しません。β 2α1β2

より高速なコンピュータを購入する必要があるだけですか?:)


1
@BRここでボトルネックは何ですか?基本的にで何が時間がかかっているのかRprof
suncoolsu

1
1つの方法は、GLMMの「混合」部分を単に無視することです。通常のGLMにちょうど適合すれば、推定値はそれほど変化しませんが、標準誤差はおそらく変化します
確率論的

@probabilityislogic。あなたの発言に加えて、答えが大きく異なるかどうかは、グループの規模やグループ内の個人の行動によっても異なると思います。ゲルマンとヒルが言うように:混合効果モデルの結果は、プーリングとプーリングなしの間になります。(これはベイジアン階層モデル用ですが、混合モデルは同じことを行う古典的な方法です。)
suncoolsu

@probabilityislogic:これはLMMで機能しますが、GLMMでは失敗するようです(つまり、同じデータで余分なMを使用した場合と使用しない場合のモデルを実行したところ、結果が大幅に異なりました)。もちろん、glmerの実装にエラーがない限り。
BR

@suncoolsu:ボトルネックはGLMMの推定であり、数秒かかる場合があります(特にいくつかのランダムな効果がある場合)。しかし、それを1000 * 1000回実行すると、280時間の計算になります。GLMのフィッティングには、約1/100の時間がかかります。
BR

回答:


4

開始値を指定するのに役立つはずですが、どれくらいかはわかりません。シミュレーションとブートストラップを行うときは、「真の」値またはブートストラップされていない推定値、あるいはその両方を知っている必要があります。のstart =オプションでそれらを使用してみてくださいglmer

また、収束を宣言するための許容範囲が必要以上に厳しいかどうかを調べることを検討することもできます。lme4ただし、ドキュメントからそれらを変更する方法はわかりません。


4

新しいコンピュータを購入する前に、他の2つの可能性も考慮してください。

  1. 並列計算-ブートストラップは簡単に並列実行できます。コンピューターがかなり新しい場合は、おそらく4つのコアがあります。Rのマルチコアライブラリをご覧ください。
  2. クラウドコンピューティングも可能であり、かなり安価です。アマゾンクラウドを使用してRスクリプトを実行している同僚がいます。彼らはそれが非常に費用効果が高いことを発見しました。

1
答えてくれてありがとう。どういうわけか、私は2つのコアを持っているという事実を見落としました(私のコンピューターはあまり新しくありません)。ずっと前にマルチコアを見ていたはずです。
BR

2

それはおそらくより速いコンピュータかもしれません。しかし、これはうまくいくかもしれない一つのトリックです。

YYY

g(.)Y=1Yg(z)=log(z1z)

YYBernoulli(p)pBeta(Yobs+12,1Yobs+12)Ys1niYi

psimYsim=g(psim)YsimN×SNS

gmler()lmer()Ylmer()b

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

もう少し明確に説明する必要がある場合はお知らせください


答えてくれてありがとう。消化するのに少し時間がかかります(土曜日の夜の予定はすでにあります)。GLMMアプローチと同じ答えを出すかどうかははっきりしないほど十分に異なりますが、もっと考えなければなりません。
BR
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.