John Kruschke erklärt in seinem Buch Doing Bayesian Data Analysis, dass bei der Verwendung von JAGS von R
... die Schätzung des Modus aus einem MCMC-Sample kann ziemlich instabil sein, da die Schätzung auf einem Glättungsalgorithmus basiert, der für zufällige Unebenheiten und Welligkeiten im MCMC-Sample empfindlich sein kann. ( Bayesianische Datenanalyse durchführen , Seite 205, Abschnitt 8.2.5.1)
Obwohl ich den Metropolis-Algorithmus und genaue Formen wie Gibbs-Sampling kenne, kenne ich den ebenfalls angedeuteten Glättungsalgorithmus nicht und weiß nicht, warum die Schätzung des Modus aus dem MCMC-Sample instabil ist. Kann jemand einen intuitiven Einblick geben, was der Glättungsalgorithmus tut und warum er die Schätzung des Modus instabil macht?
Antworten:
Ich habe das Buch nicht zur Hand, daher bin ich mir nicht sicher, welche Glättungsmethode Kruschke verwendet, aber für die Intuition betrachten Sie diese Darstellung von 100 Proben aus einer Standardnormalen zusammen mit Schätzungen der Gaußschen Kerneldichte unter Verwendung verschiedener Bandbreiten von 0,1 bis 1,0. (Kurz gesagt, Gaußsche KDEs sind eine Art geglättetes Histogramm: Sie schätzen die Dichte, indem sie für jeden Datenpunkt einen Gaußschen Wert addieren, dessen Mittelwert beim beobachteten Wert liegt.)
Sie können sehen, dass der Modus im Allgemeinen unter dem bekannten Wert von 0 liegt, selbst wenn durch das Glätten eine unimodale Verteilung erstellt wird.
Weiter ist hier eine grafische Darstellung des geschätzten Modus (y-Achse) nach Kernbandbreite, der zum Schätzen der Dichte unter Verwendung derselben Stichprobe verwendet wird. Hoffentlich gibt dies einen Anhaltspunkt dafür, wie sich die Schätzung mit den Glättungsparametern ändert.
quelle
Sean Easter gab eine nette Antwort; Das machen die R-Skripte in Kruschkes Buch so. Die
plotPost()
Funktion ist im genannten R-Skript definiertDBDA2E-utilities.R
. Es zeigt den geschätzten Modus an. Innerhalb der Funktionsdefinition gibt es diese zwei Zeilen:Die
density()
Funktion wird mit dem Basisstatistikpaket von R ausgeliefert und implementiert einen Kernel-Dichtefilter der beschriebenen Art Sean Easter. Es gibt optionale Argumente für die Bandbreite des Glättungskerns und für die Art des zu verwendenden Kernels. Der Standardwert ist ein Gaußscher Kernel und es gibt eine gewisse Magie, eine gute Bandbreite zu finden. Diedensity()
Funktion gibt ein Objekt mit einer benannten Komponente zurücky
, die die geglätteten Dichten bei verschiedenen Werten aufweistx
. In der zweiten Codezeile oben wird nur derx
Wert gefunden, bei demy
das Maximum erreicht ist.quelle