Ich habe einige Vorlesungen über MCMC gelesen. Ich finde jedoch kein gutes Beispiel für die Verwendung. Kann mir jemand ein konkretes Beispiel geben. Ich kann nur sehen, dass sie eine Markov-Kette führen und sagen, dass ihre stationäre Verteilung die gewünschte Verteilung ist.
Ich möchte ein gutes Beispiel, bei dem es schwierig ist, die gewünschte Verteilung abzutasten. Also erstellen wir eine Markov-Kette. Ich möchte wissen, wie man die Übergangsmatrix so auswählt, dass ihre stationäre Verteilung der Markov-Kette die Zielverteilung ist. Danke
probability
bayesian
mcmc
markov-process
user34790
quelle
quelle
Antworten:
Ein gutes Beispiel für eine Distribution, die sich nur schwer testen lässt, ist das Hard-Core-Modell. Eine Übersicht finden Sie auf dieser Seite:
http://www.mathematik.uni-ulm.de/stochastik/lehre/ss06/markov/skript_engl/node34.html
Dieses Modell definiert eine Verteilung übern×n Gitter für einige feste , wobei Sie an jedem Punkt des Gitters einen Wert von eins oder null haben können. Damit ein Gitter unter dem Hardcore-Modell zulässig ist, dürfen keine zwei benachbarten Punkte auf dem Gitter beide den Wert 1 haben.n
Das folgende Bild zeigt eine beispielhafte zulässige Konfiguration für ein Gitter unter dem Hardcore-Modell. In diesem Bild werden Einsen als schwarze Punkte und Nullen als weiße Punkte dargestellt. Beachten Sie, dass nicht zwei schwarze Punkte nebeneinander liegen.8 × 8
Ich glaube, die Inspiration für dieses Modell stammt aus der Physik. Man kann sich vorstellen, dass jede Position im Gitter ein Teilchen ist und der Wert an dieser Position die elektrische Ladung oder den Spin darstellt.
Wir wollen eine einheitliche Stichprobe aus der Grundgesamtheit der zulässigen Gitter erstellen, dh wenn die Menge der zulässigen Gitter ist, wollen wir e ∈ E so erstellen , dassE e ∈ E
wo ist die Anzahl aller möglichen zulässigen Konfigurationen.| E|
Angesichts der Tatsache, dass wir Gitter berücksichtigen, ist dies bereits eine Herausforderung. Wie können wir | bestimmen ? En × n die Anzahl der zulässigen Gitter? | E|
Eines der schönen Dinge an MCMC ist, dass Sie damit aus Verteilungen abtasten können, bei denen die Normalisierungskonstante schwierig oder unmöglich zu bewerten ist.
Ich lasse Sie das Papier über die Details der Implementierung von MCMC für dieses Problem lesen, aber es ist relativ einfach.
quelle
Ich denke, das beste Beispiel, das ich Ihnen geben kann, ist Folgendes:
Ein Monte-Carlo-Beispiel der Markov-Kette von Murali Haran
Welches enthält einige nützliche Code in R.
Ich denke, dass ich den Artikel hier reproduzieren könnte, aber es macht keinen Sinn.
quelle
Ein weiteres entmutigendes Problem in der Statistik. Die Frage ist alt, aber die einleitenden Beispiele online sind schwer zu bekommen. Lassen Sie mich zwei großartige Beispiele vereinfachen, nur für den Fall, dass jemand, der dem zufälligen Markov-Rundgang durch PageRank folgt, hier von MCMC verwirrt ist und voller Vorfreude auf eine leicht zu verfolgende Antwort ist. Wie wahrscheinlich? Das könnte eine Folgefrage sein.
Die Schwierigkeit besteht darin, zu erkennen, dass es nach Durchlaufen aller mechanischen Schritte nur einen magischen Trick gibt: die binäre Entscheidung , einen vorgeschlagenen Wert zu akzeptieren oder abzulehnen .
mean
sd
rnorm(10000)
eps
runif(1, - eps, eps)
Jeder vorgeschlagene Wert würde sich somit zufällig und innerhalb der Grenzen von vom vorherigen Wert unterscheiden
[- eps,+ eps]
.Geben Sie den Markov-Kernel ein . Wir müssen die Wahrscheinlichkeit eines Übergangs auf den neuen vorgeschlagenen Wert in gewisser Weise einschätzen, ähnlich wie in einer Markov-Übergangsmatrix für einen bestimmten Zustand zu einem bestimmten Zeitpunktich erzählt über die Wahrscheinlichkeit des neuen Zustands zum Zeitpunkt i + 1 . Wenn Sie Zweifel haben, gehen Sie hierher oder fragen Sie die Oma, die auf all die Fragen geachtet hat: "Wie würden Sie Ihrer Nanna die Quantenphysik erklären?" Art von Fragen (sehen die Matrizen nicht gut aus? ;-)).
Um diese Akzeptanzwahrscheinlichkeit in das Bouquet der ermittelten Werte einzubeziehen, vergleichen wir einfach die Höhe desN( 0 , 1 ) Dichte zum vorgeschlagenen neuen Wert (xi + 1 ) zum vorherigen (bereits akzeptierten Wert), (xich ), genau wie dieser:
Und wir nehmen das Verhältnis der beiden Werte:1 , das immer dann auftritt, wenn N( 0 , 1 ) p df beim xi + 1 (Kandidatenwert) ist größer als bei xich , was der automatischen Annahme des vorgeschlagenen Wertes gleichkommt und den
min(1, dnorm(candidate_value)/dnorm(x))
. Da wir eine Wahrscheinlichkeit wollen, kann die resultierende Berechnung nicht übergehenmin(1, ...)
Teil des Codes erklärt. Andernfalls ist die Wahrscheinlichkeit, dassdnorm
der vorgeschlagene Wert akzeptiert wird , umso höher , je näher der Wert am vorherigen Wert liegt.Wir haben also eine Akzeptanzwahrscheinlichkeit, müssen aber eine binäre Entscheidung treffen (den neuen vorgeschlagenen Wert akzeptieren oder ablehnen). Und hier kommt der Zaubertrick: Wenn die berechnete Wahrscheinlichkeit0 zu 1 (so nah wie möglich an einem Münzwurf für einen kontinuierlichen Wert), akzeptieren wir den
min(1, dnorm(candidate_value)/dnorm(x))
größer ist als einerunif(1)
einheitliche Auslosungx[i+1]
Eintrag der Kette und füllen ihn mit dem vorgeschlagenen Wert aus . ansonsten füllen wir es mit einer Wiederholung des vorherigen Wertes aus ,x[i]
... Die Idee wäre, besser zwei gleiche als einen zu weit in den Schwanz hinein.Wir machen das tausende Male und wir sammeln alle diese Werte (nur die akzeptierten und wiederholten Werte), und wenn wir das Histogramm zeichnen, erhalten wir eine schöne normale Kurve mit einer1 und zentriert bei 0 .
sd
Nähe zuNur ein letzter Punkt: Wo fangen wir an? Wahrscheinlich nicht relevant, aber in der Simulation geben wir den ersten Wert als ein0 ,
x = 0; vec[1] = x
bevor Sie alle übrigen Iterationen durchlaufen und den Prozess seinem Verlauf folgen lassen.Dies ist aufregender und bezieht sich auf die Schätzung der Parameter einer linearen Regressionskurve durch Berechnung der logarithmischen Wahrscheinlichkeiten für zufällige Parameter bei gegebenem Datensatz . Die Exegese der Codezeilen wird jedoch in der hier gespeicherten komprimierten Simulation erstellt , wobei sehr ähnliche Schritte wie im ersten Beispiel ausgeführt werden.
quelle
Dieses Youtube Video ist eine wirklich schöne Visualisierung eines einfachen Problems, das mit MCMC gelöst wurde.
Die Verteilung des Interesses ist die hintere Verteilung über mögliche Steigungen und Abschnitte in einer linearen Regression (oberes rechtes Feld). Einige Kombinationen von Steigungen und Abschnitten sind sehr wahrscheinlich (dh sie erzeugen mit hoher Wahrscheinlichkeit die beobachteten Datenpunkte und stimmen mit unseren a priori überein Erwartungen ), daher sollten sie häufig abgetastet werden. Andere Kombinationen sind unwahrscheinlich (z. B. wenn sie einer blauen Linie entsprechen, die nicht durch die Datenpunktwolke verläuft) und sollten weniger häufig abgetastet werden.
Die große Tafel unten links zeigt den Weg der Markov-Kette durch einen zweidimensionalen Raum von Hängen und Abschnitten. Die Histogramme zeigen eindimensionale Zusammenfassungen des bisherigen Fortschritts der Kette. Sobald die Kette lang genug gelaufen ist, haben wir sehr gute Schätzungen der Verteilungen für mögliche Werte der Steigung und des Abschnitts.
In diesem Fall ist MCMC übertrieben, aber es gibt einige Probleme, bei denen es schwierig ist, eine Lösung aufzuschreiben, und es ist sehr sinnvoll, die Möglichkeiten mit einer Markov-Kette zu erkunden, anstatt sie direkt zu lösen.
quelle