Ich möchte die Auswahl des Einbrennens für eine MCMC-Kette automatisieren, z. B. durch Entfernen der ersten n Zeilen basierend auf einer Konvergenzdiagnose.
Inwieweit kann dieser Schritt sicher automatisiert werden? Selbst wenn ich die Autokorrelation, die mcmc-Ablaufverfolgung und die pdfs noch zweimal überprüfe, wäre es schön, wenn die Auswahl der Einbrennlänge automatisiert wäre.
Meine Frage ist allgemein, aber es wäre großartig, wenn Sie Einzelheiten zum Umgang mit einem R mcmc.object angeben könnten. Ich benutze die Pakete rjags und coda in R.
Antworten:
Hier ist ein Ansatz bei der Automatisierung. Feedback sehr geschätzt. Dies ist ein Versuch, die anfängliche Sichtprüfung durch eine Berechnung zu ersetzen, gefolgt von einer anschließenden Sichtprüfung gemäß der Standardpraxis.
Diese Lösung enthält tatsächlich zwei mögliche Lösungen: Zuerst das Einbrennen berechnen, um die Kettenlänge zu entfernen, bevor ein bestimmter Schwellenwert erreicht ist, und dann die Autokorrelationsmatrix verwenden, um das Ausdünnungsintervall zu berechnen.
Das mcmc-Objekt kann hier heruntergeladen werden: jags.out.Rdata
--aktualisieren--
Wie in R implementiert, ist die Berechnung der Autokorrelationsmatrix langsamer als wünschenswert (in einigen Fällen> 15 min), in geringerem Maße auch die Berechnung des GR-Schrumpffaktors. Es gibt eine Frage, wie Sie Schritt 4 beim Stackoverflow beschleunigen können hier
--Update Teil 2--
zusätzliche Antworten:
Es ist nicht möglich, eine Konvergenz zu diagnostizieren, sondern nur einen Mangel an Konvergenz (Brooks, Giudici und Philippe, 2003).
Die Funktion autorun.jags aus dem Paket runjags automatisiert die Berechnung der Lauflängen- und Konvergenzdiagnose. Die Überwachung der Kette wird erst gestartet, wenn die Gelman-Rubindiagnose unter 1,05 liegt. Er berechnet die Kettenlänge mithilfe der Raftery- und Lewis-Diagnose.
Gelman et al. (Gelman 2004 Bayesian Data Analysis, S. 295, Gelman und Shirley, 2010 ) geben an, dass sie einen konservativen Ansatz zum Verwerfen der ersten Hälfte der Kette verwenden. Obwohl dies eine relativ einfache Lösung ist, reicht dies in der Praxis aus, um das Problem für meinen speziellen Satz von Modellen und Daten zu lösen.
quelle
autorun.jags
die...
erlaubt Parameter an die weitergegeben werdenadd.summary
Funktion. Dieadd.summary
Funktion hat ein Argumentpsrf.target
mit einem Standardwert von 1,05