Ich habe Leistungsprobleme mit dem MCMCglmm
Paket in R, um ein Modell mit gemischten Effekten auszuführen. Der Code sieht folgendermaßen aus:
MC1<-MCMCglmm(bull~1,random=~school,data=dt,family="categorical"
, prior=list(R=list(V=1,fix=1), G=list(G1=list(V=1, nu=0)))
, slice=T, nitt=iter, ,burnin=burn, verbose=F)
Die Daten enthalten rund 20.000 Beobachtungen, die in rund 200 Schulen zusammengefasst sind. Ich habe alle nicht verwendeten Variablen aus dem Datenrahmen entfernt und alle anderen Objekte aus dem Speicher entfernt, bevor ich sie ausgeführt habe. Das Problem, das ich habe, ist, dass die Ausführung sehr lange dauert, es sei denn, ich reduziere die Iterationen auf eine unannehmbar kleine Zahl. Bei 50.000 Iterationen dauert es 5 Stunden, und ich habe viele verschiedene Modelle zum Ausführen. Daher würde ich gerne wissen, ob es Möglichkeiten gibt, die Codeausführung zu beschleunigen, oder andere Pakete, die ich verwenden könnte. Ich benutze, MCMCglmm
weil ich Konfidenzintervalle für die zufälligen Effekte haben möchte.
Auf der anderen Seite hatte ich gehofft, später in diesem Jahr einen neuen PC zu bekommen, aber mit ein bisschen Glück könnte ich das vielleicht nach vorne bringen, also habe ich mich gefragt, wie ich am besten eine begrenzte Menge Geld für neue Hardware ausgeben kann - mehr RAM , schnellere CPU usw. Vom Beobachten des Task-Managers aus glaube ich nicht, dass RAM das Problem ist (es wird nie über 50% der physischen Auslastung), aber die CPU-Auslastung wird auch nicht viel über 50%, was mich seltsam findet . Mein aktuelles Setup ist ein Intel Core i5 mit 2,66 GHz, 4 GB RAM und einer Festplatte mit 7200 U / min. Ist es sinnvoll, auf Kosten des zusätzlichen Arbeitsspeichers nur die schnellstmögliche CPU zu erhalten? Ich habe mich auch gefragt, wie sich die CPU-Cache-Größe der Stufe 3 auf statistische Rechenprobleme auswirkt.
Update: Nachdem ich auf meta SO gefragt habe, wurde mir geraten, die Frage neu zu formulieren und auf Superuser zu posten. Dazu muss ich in MCMCglmm näher erläutern, was "unter der Haube" vor sich geht. Bin ich zu Recht der Meinung, dass der Großteil der Rechenzeit für die Optimierung aufgewendet wird - ich meine, das Maximum einer komplizierten Funktion zu finden? Ist Matrixinversion und / oder andere lineare Algebra-Operationen auch eine häufige Operation, die Engpässe verursachen kann? Alle anderen Informationen, die ich der Superuser-Community geben könnte, würden sehr dankbar aufgenommen.
quelle
lmer()
Modellen an große Datenmengen einige Zeit in Anspruch nehmen kann, insbesondere, wenn dies häufig erforderlich ist. Eine Antwort auf Ihre Frage könnte im Parallel-Computing liegen, obwohl andere Benutzer (z. B. @DirkEddelbuettel) hier viel hilfreicher wären als ich. Es besteht auch die Möglichkeit, dass Sie beim Stackoverflow bessere Antworten erhalten.glmer
(wie Sie aus meinen anderen Posts wissen) und das dauert ungefähr 20 Sekunden, aber das Problem ist, dass es keine Vertrauensbereiche oder Standardfehler gibt und aus dem, was ich auf einer Mailingliste lese, den Autor des Archivslme4
Laut Paket kann die Stichprobenverteilung der zufälligen Effekte sehr unterschiedlich sein, sodass diese Statistiken nicht gemeldet werden. Eigentlich habe ich vonMCMCglmm
bisher festgestellt , dass sie sich in meinem Fall dem Normalen nähern (nicht, dass das viel hilft - ich sage nur). Wäre es besser, wenn ich eine Migration auf SO beantrage?Antworten:
Warum läuft es nicht mit dem EC2- Cloud-Computing-Dienst von Amazon oder einem ähnlichen Dienst?
MCMCpack
Wenn ich mich recht entsinne, wird es meistens in C implementiert, sodass es nicht viel schneller wird, es sei denn, Sie verringern die Komplexität Ihres Modells, Iterationen usw. Mit EC2 oder ähnlichen Cloud-Computing-Diensten können Sie mehrere Instanzen haben Spezifikationen, die Sie wünschen, und lassen Sie alle Ihre Modelle auf einmal laufen.quelle