Ein praktisches Beispiel für MCMC

14

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

user34790
quelle
Die grundlegende Markov-Kettentheorie wird verwendet, um zu zeigen, dass ein bestimmtes Probenahmeschema eine stationäre Verteilung aufweist, die die gewünschte gemeinsame Verteilung ist. Für das einfachste Beispiel simuliert der Vanille-Gibbs-Sampler vollständige bedingte Verteilungen. Die entsprechenden Übergangskerne zusammengenommen, wenn sie die Konvergenzbedingungen erfüllen (die oft einfach zu zeigen sind), haben leicht die gemeinsame Verteilung als stationäre Verteilung. Ähnliches gilt für Metropolis Hastings und so weiter. Es hört sich so an, als würden die Vorträge, die Sie sich
ansehen,

Antworten:

3

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 über n×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

Beispiel zulässige Konfiguration für ein $ 8 \ mal 8 $ Gitter unter dem Hardcore-Modell

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 , dassEeE

p(e)=1|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×ndie 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.

Max S.
quelle
2

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.

anxoestevez
quelle
2

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.

FIRST EXAMPLE:

N(0,1)

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 .

xmean0sd 1rnorm(10000)

epsϵxichxich+1runif(1, - eps, eps)xich.

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 ich+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 des N(0,1)Dichte zum vorgeschlagenen neuen Wert (xich+1) zum vorherigen (bereits akzeptierten Wert), (xich), genau wie dieser:

Und wir nehmen das Verhältnis der beiden Werte: min(1, dnorm(candidate_value)/dnorm(x)). Da wir eine Wahrscheinlichkeit wollen, kann die resultierende Berechnung nicht übergehen1, das immer dann auftritt, wenn N(0,1) pdf beim xich+1 (Kandidatenwert) ist größer als bei xich, was der automatischen Annahme des vorgeschlagenen Wertes gleichkommt und den min(1, ...)Teil des Codes erklärt. Andernfalls ist die Wahrscheinlichkeit, dass dnormder 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 Wahrscheinlichkeit min(1, dnorm(candidate_value)/dnorm(x))größer ist als eine runif(1)einheitliche Auslosung0 zu 1(so nah wie möglich an einem Münzwurf für einen kontinuierlichen Wert), akzeptieren wir den x[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 einer sdNähe zu1und zentriert bei 0.

Nur 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] = xbevor Sie alle übrigen Iterationen durchlaufen und den Prozess seinem Verlauf folgen lassen.

SECOND EXAMPLE:

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.

Antoni Parellada
quelle
Ein paar kleinere Korrekturen sind nötig: " Länder hier sind durch CMCMs verwirrt " ... muss umgedreht werden . " Rosenbluth-Hats " .... braucht wohl ein extra "s" drin . Ich würde sagen, dass das erste Beispiel nicht gerade "schwer abzutasten" ist (wie die Frage fragt). Ihre beiden Beispiele scheinen Metropolis-Hastings zu sein (was sicherlich wichtig ist), aber MCMC ist mehr als das. Beispielsweise verwenden sehr viele Leute Gibbs-Sampling, häufig über JAGS / BUGS / etc. Keine Entscheidung bezüglich der Annahme des vorgeschlagenen Schritts - Sie bewegen sich immer.
Glen_b
Ich habe das fehlende "s", die isomere CMCM-Schreibweise, korrigiert. Der möglicherweise ungerechtfertigte Hyperlink zu YouTube, mit dem das Namensproblem behoben wurde, wurde entfernt. Erklärt, warum ich mich entschlossen habe, das erste Beispiel trotz der spezifischen Anforderung der (alten) Frage zu erläutern. Ich weiß es zu schätzen, dass Sie auf all diese Probleme aufmerksam gemacht haben. Ich bin mir nicht sicher über die Auswirkungen Ihrer letzten Zeile.
Antoni Parellada
Es ist einfach ein Verweis auf die Zeile " Es gibt nur einen Zaubertrick: die binäre Entscheidung, einen vorgeschlagenen Wert zu akzeptieren oder abzulehnen ". um darauf hinzuweisen, dass es nicht eine Eigenschaft aller MCMC-Algorithmen ist. Das bedeutet nicht, dass es ein Problem mit Ihrer Antwort gibt. Sie können es als Klarstellung betrachten, wenn Sie möchten. Das Isomerenbit war gut.
Glen_b
1

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.

David J. Harris
quelle