Wie kann ich die Berechnung der festen Effekte in einem GLMM beschleunigen?

9

Ich mache eine Simulationsstudie, die Bootstrapping-Schätzungen erfordert, die aus einem verallgemeinerten linearen gemischten Modell erhalten wurden (tatsächlich das Produkt von zwei Schätzungen für feste Effekte, eine von einem GLMM und eine von einem LMM). Um die Studie gut durchzuführen, wären etwa 1000 Simulationen mit jeweils 1000 oder 1500 Bootstrap-Replikationen erforderlich. Dies nimmt auf meinem Computer viel Zeit in Anspruch (viele Tage).

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

Um genauer zu sein, ich habe Probanden, die wiederholt auf drei Arten gemessen werden, was zu Variablen X, M und Y führt, wobei X und M stetig und Y binär sind. Wir haben zwei Regressionsgleichungen wobei Y die zugrunde liegende latente kontinuierliche Variable für und die Fehler nicht iid sind. Die Statistik, die wir booten möchten, lautet . Daher erfordert jede Bootstrap-Replikation die Anpassung eines LMM und eines GLMM. Mein R-Code ist (mit 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)
    }

Mir ist klar, dass ich die gleiche Schätzung für erhalte, wenn ich es nur als lineares Modell anpasse, was einige Zeit spart, aber der gleiche Trick funktioniert nicht für .β 2α1β2

Muss ich nur einen schnelleren Computer kaufen? :) :)

BR
quelle
1
@BR was ist der Flaschenhals hier? Grundsätzlich, was braucht Zeit Rprof.
Suncoolsu
1
Eine Möglichkeit besteht darin, den "gemischten" Teil des GLMM einfach zu ignorieren. Passen Sie einfach zu einem gewöhnlichen GLM, die Schätzungen werden sich nicht viel ändern, aber ihre Standardfehler werden sich wahrscheinlich ändern
Wahrscheinlichkeitslogik
@probabilityislogic. Zusätzlich zu Ihrer Bemerkung denke ich auch, ob die Antwort sehr unterschiedlich sein würde, hängt von der Gruppengröße und dem individuellen Verhalten in der Gruppe ab. Wie Gelman und Hill sagen: Die Ergebnisse des Mixed-Effects-Modells liegen zwischen Pooling und No Pooling. (Offensichtlich ist dies für Bayes'sche hierarchische Modelle, aber gemischte Modelle sind eine klassische Methode, um dasselbe zu tun.)
Suncoolsu
@probabilityislogic: Das funktioniert für LMM, aber es scheint für GLMM fehlzuschlagen (was bedeutet, dass ich Modelle mit und ohne zusätzliches M mit denselben Daten ausgeführt habe und am Ende signifikant unterschiedliche Ergebnisse erzielt habe). Es sei denn natürlich, es liegt ein Fehler bei der Implementierung von glmer vor.
BR
@suncoolsu: Der Engpass ist die Schätzung des GLMM, die einige Sekunden dauern kann (insbesondere bei mehreren zufälligen Effekten). Aber machen Sie das 1000 * 1000 Mal, und das sind 280 Stunden Rechenzeit. Das Anbringen eines GLM dauert ungefähr 1/100 der Zeit.
BR

Antworten:

4

Es sollte hilfreich sein, Startwerte anzugeben, obwohl es schwierig ist zu wissen, wie viel. Während Sie Simulation und Bootstrapping durchführen, sollten Sie die "wahren" Werte oder die nicht gebooteten Schätzungen oder beides kennen. Versuchen Sie, diese in der start =Option von zu verwenden glmer.

Sie können auch prüfen, ob die Toleranzen für die Konvergenzerklärung strenger sind als erforderlich. Ich bin mir jedoch nicht sicher, wie ich sie aus der lme4Dokumentation ändern soll .

ein Stop
quelle
4

Zwei weitere Möglichkeiten sollten vor dem Kauf eines neuen Computers in Betracht gezogen werden.

  1. Paralleles Rechnen - Bootstrapping kann einfach parallel ausgeführt werden. Wenn Ihr Computer relativ neu ist, haben Sie wahrscheinlich vier Kerne. Schauen Sie sich die Multicore- Bibliothek in R an.
  2. Cloud Computing ist ebenfalls eine Möglichkeit und relativ billig. Ich habe Kollegen, die die Amazon Cloud zum Ausführen von R-Skripten verwendet haben. Sie fanden, dass es ziemlich kostengünstig war.
csgillespie
quelle
1
Danke für die Antwort. Irgendwie habe ich die Tatsache übersehen, dass ich zwei Kerne habe (mein Computer ist nicht sehr neu). Ich hätte mir Multicore schon vor langer Zeit ansehen sollen.
BR
2

Es könnte möglicherweise ein schnellerer Computer sein. Aber hier ist ein Trick, der funktionieren kann.

Generieren Sie eine Simulation von , jedoch nur unter der Bedingung von , und führen Sie dann OLS oder LMM für die simulierten -Werte aus.YYY

Angenommen, Ihre Link-Funktion ist . Dies sagt aus, wie Sie von der Wahrscheinlichkeit von zum -Wert gelangen, und ist höchstwahrscheinlich die logistische Funktion .g(.)Y=1Yg(z)=log(z1z)

Wenn Sie also eine Bernouli-Stichprobenverteilung für annehmen und dann die Jeffreys vor der Wahrscheinlichkeit verwenden, erhalten Sie einen Beta-Posterior für . Daraus zu simulieren sollte wie Beleuchtung sein, und wenn dies nicht der Fall ist, benötigen Sie einen schnelleren Computer. Darüber hinaus sind die Stichproben unabhängig, sodass Sie keine "Konvergenz" -Diagnose wie in MCMC überprüfen müssen und wahrscheinlich nicht so viele Stichproben benötigen - 100 funktionieren möglicherweise gut für Ihren Fall. Wenn Sie Binomial- , ersetzen Sie einfach die im obigen Posterior durch , die Anzahl der Versuche des Binomials für jedes .YYBernoulli(p)pBeta(Yobs+12,1Yobs+12)Ys1niYi

Sie haben also eine Reihe von simulierten Werten . Anschließend wenden Sie die Verknüpfungsfunktion auf jeden dieser Werte an, um . Passen Sie ein LMM an , was wahrscheinlich schneller ist als das GLMM-Programm. Sie können die ursprünglichen Binärwerte grundsätzlich ignorieren (aber nicht löschen!) Und einfach mit der "Simulationsmatrix" arbeiten ( , wobei die Stichprobengröße und die Anzahl der Simulationen ist).psimYsim=g(psim)YsimN×SNS

In Ihrem Programm würde ich also die Funktion Funktion und durch eine einzige Simultation ersetzen. Sie würden dann eine Art Schleife erstellen, die die Funktion auf jede Simulation , und dann die Durchschnitt als Schätzung von . So etwas wie gmler()lmer()Ylmer()b

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

Lassen Sie mich wissen, wenn ich etwas klarer erklären muss

Wahrscheinlichkeitslogik
quelle
Danke für die Antwort, ich brauche ein bisschen, um sie zu verdauen (und ich habe bereits Pläne für meine Samstagnacht). Es ist so unterschiedlich, dass mir nicht klar ist, ob es die gleiche Antwort wie der GLMM-Ansatz gibt, aber ich muss mehr darüber nachdenken.
BR