Metropolis-Hastings-Integration - warum funktioniert meine Strategie nicht?

16

Angenommen, ich habe eine Funktion , die ich integrieren möchte: Natürlich unter der Annahme, dass an den Endpunkten auf Null geht, keine Blowups, nette Funktion. Eine Möglichkeit, mit der ich herumgespielt habe, besteht darin, mit dem Metropolis-Hastings-Algorithmus eine Liste der Stichproben aus der zu proportionalen Verteilung zu , in der die Normalisierungskonstante fehlt. das ich , und dann eine Statistik für diese berechnen : g(x)

g(x)dx.
g(x) g ( x ) N = - g ( x ) d x p ( x ) f ( x ) x 1x1,x2,,xng(x)
N=g(x)dx
p(x)f(x)x
1ni=0nf(xi)f(x)p(x)dx.

Da , kann ich , um vom Integral zu streichen , was zu einem Ausdruck der Form Vorausgesetzt also, dass entlang dieser Region zu integriert wird , sollte ich das Ergebnis , das ich einfach als Kehrwert verwenden könnte, um die gewünschte Antwort zu erhalten. Daher könnte ich den Bereich meiner Stichprobe (um die Punkte am effektivsten zu nutzen) und U (x) = 1 / r für jede Stichprobe, die ich gezogen habe, lassen. Auf diese Weise U (x)p(x)=g(x)/Nf(x)=U(x)/g(x)gU(x)11/Nr=xmax-xminU(x)=1/rU(x)

1NU(x)g(x)g(x)dx=1NU(x)dx.
U(x)11/Nr=xmaxxminU(x)=1/rU(x)Wertet außerhalb der Region, in der meine Samples nicht vorhanden sind, auf Null aus, integriert aber in dieser Region auf 1 . Wenn ich nun den erwarteten Wert nehme, sollte ich Folgendes erhalten:
E[U(x)g(x)]=1N1ni=0nU(x)g(x).

Ich habe versucht, dies in R für die Beispielfunktion g (x) = e ^ {- x ^ 2} zu testen g(x)=ex2. In diesem Fall benutze ich Metropolis-Hastings nicht, um die Samples zu generieren, sondern benutze die tatsächlichen Wahrscheinlichkeiten rnorm, um Samples zu generieren (nur zum Testen). Ich verstehe die gewünschten Ergebnisse nicht ganz. Grundsätzlich lautet der vollständige Ausdruck dessen, was ich berechnen würde:

1n(xmaxxmin)i=0n1exi2.
Dies sollte meiner Theorie nach 1/π . Es kommt näher, aber es konvergiert sicherlich nicht in der erwarteten Weise. Mache ich etwas falsch?
ys = rnorm(1000000, 0, 1/sqrt(2))
r = max(ys) - min(ys)
sum(sapply(ys, function(x) 1/( r * exp(-x^2))))/length(ys)
## evaluates to 0.6019741. 1/sqrt(pi) = 0.5641896

Bearbeiten Sie für CliffAB

Der Grund, warum ich den Bereich verwende, ist, dass ich auf einfache Weise eine Funktion definiere, die in dem Bereich, in dem sich meine Punkte befinden, ungleich Null ist, die jedoch im Bereich [- \ infty, \ infty] zu 1 integriert wird . Die vollständige Spezifikation der Funktion lautet: U (x) = \ begin {cases} \ frac {1} {x_ \ max - x_ \ min} & x_ \ max> x> x_ \ min \\ 0 & \ text {else .} \ end {cases} Ich musste U (x) nicht als einheitliche Dichte verwenden. Ich hätte eine andere Dichte verwenden können, die zu 1 integriert ist , zum Beispiel die Wahrscheinlichkeitsdichte P (x) = \ frac {1} {\ sqrt {\ pi}} e ^ {- x ^ 2}. Dies hätte jedoch das Summieren der einzelnen Proben trivial gemacht, d.h. 1[,]

U(x)={1xmaxxminxmax>x>xmin0otherwise.
U(x)1
P(x)=1πex2.
1ni=0nP(x)g(x)=1ni=0nexi2/πexi2=1ni=0n1π=1π.

Ich könnte diese Technik für andere Distributionen ausprobieren, die in integriert sind . Ich möchte aber trotzdem wissen, warum es bei einer einheitlichen Verteilung nicht funktioniert.1

Mike Flynn
quelle
Schauen Sie sich das nur kurz an, deshalb bin ich mir nicht sicher, warum Sie sich für range (x) entschieden haben. Vorausgesetzt, es ist gültig, ist es äußerst ineffizient! Der Bereich einer Stichprobe dieser Größe entspricht in etwa der instabilsten Statistik, die Sie erhalten können.
Cliff AB
@CliffAB Es gibt nichts Besonderes an mir, den Bereich zu verwenden, abgesehen davon, dass ich eine gleichmäßige Verteilung auf das Intervall definiere, in dem meine Punkte liegen. Siehe Bearbeitungen.
Mike Flynn
1
Ich werde später genauer darauf eingehen. Es ist jedoch zu berücksichtigen, dass x eine Menge einheitlicher RVs ist und dann als range . Aber wenn x eine Menge von nicht entarteten normalen Wohnmobilen ist, dann als , . ( x ) 1 n Bereich ( x ) n(x)1nrange(x)
Cliff AB
@CliffAB Sie könnten recht gehabt haben, ich denke, der Grund war, dass die Grenzen des Integrals nicht festgelegt wurden, und so wird die Varianz des Schätzers nie konvergieren ...
Mike Flynn

Antworten:

13

Dies ist eine äußerst interessante Frage, die sich auf das Problem bezieht, eine Normalisierungskonstante einer Dichte auf der Grundlage eines MCMC-Ausgangssignals derselben Dichte anzunähern . (Eine Nebenbemerkung ist, dass die korrekte Annahme ist, dass integrierbar ist und es nicht ausreicht, im Unendlichen auf Null zu gehen.)g gggg

Meiner Meinung nach ist der relevanteste Eintrag zu diesem Thema in Bezug auf Ihren Vorschlag ist , ein Papier von Gelfand und Dey (1994, JRSS B ), wo die Autoren einen sehr ähnlichen Ansatz entwickeln finden beim Erzeugen aus . Ein Ergebnis dieser Arbeit ist, dass für jede Wahrscheinlichkeitsdichte [dies ist äquivalent zu Ihrem ] die folgende Identität zeigt, dass eine Stichprobe aus eine

Xg(x)dx
p(x)g(x)α(x)U(x)
{x;α(x)>0}{x;g(x)>0}
Xα(x)g(x)p(x)dx=Xα(x)Ndx=1N
punvoreingenommene Bewertung von durch den Wichtigkeitsabtastungsschätzer Offensichtlich hängen die Leistungen (Konvergenzgeschwindigkeit, Existenz einer Varianz usw.) des Schätzers von der Wahl von [ obwohl seine Erwartung nicht]. In einem Bayes'schen Gerüst besteht eine von Gelfand und Dey befürwortete Wahl darin , die vorherige Dichte zu nehmen . Dies führt zu wobei die Wahrscheinlichkeitsfunktion ist, da1/N
η^=1ni=1nα(xi)g(xi)xiiidp(x)
η^αα=π
α(x)g(x)=1(x)
(x)g(x)=π(x)(x). Leider ist der resultierende Schätzer der harmonische Mittelwertschätzer , der auch der schlechteste Monte-Carlo-Schätzer aller Zeiten genannt wird Radford Neal von der University of Toronto. So klappt es nicht immer gut. Oder auch kaum jemals.
N^=ni=1n1/(xi)

Ihre Vorstellung, den Bereich Ihrer Stichprobe und die Uniform über diesen Bereich zu verwenden, hängt mit dem Problem des harmonischen Mittels zusammen: Dieser Schätzer hat keine Varianz, wenn auch nur wegen der erscheint im Zähler (ich vermute, dass dies für eine unbegrenzte Unterstützung immer der Fall sein könnte!) und konvergiert daher sehr langsam zur Normalisierungskonstante. Wenn Sie beispielsweise Ihren Code mehrmals wiederholen, erhalten Sie nach 10 after Iterationen sehr unterschiedliche Zahlenwerte. Dies bedeutet, dass Sie der Größe der Antwort nicht einmal vertrauen können.(min(xi),max(xi))exp{x2}

Eine generische Lösung für dieses Problem der unendlichen Varianz besteht darin, für eine konzentriertere Dichte zu verwenden, beispielsweise unter Verwendung der Quartile Ihrer Stichprobe , weil dann bleibt über dieses Intervall begrenzt.( q, 25 ( x i ) , q, 75 ( x i ) ) gα(q.25(xi),q.75(xi))g

Wenn Sie Ihren Code an diese neue Dichte anpassen, ist die Annäherung viel näher an :1/π

ys = rnorm(1e6, 0, 1/sqrt(2))
r = quantile(ys,.75) - quantile(ys,.25)
yc=ys[(ys>quantile(ys,.25))&(ys<quantile(ys,.75))]
sum(sapply(yc, function(x) 1/( r * exp(-x^2))))/length(ys)
## evaluates to 0.5649015. 1/sqrt(pi) = 0.5641896

Wir diskutieren diese Methode ausführlich in zwei Artikeln mit Darren Wraith und mit Jean-Michel Marin .

Xi'an
quelle