Stichprobenkosten von gegenüber

9

Ich bin auf das folgende Simulationsproblem : Bei einer Menge bekannter reeller Zahlen wird eine Verteilung auf durch wobei den positiven Teil von . Ich kann mir zwar einen Metropolis-Hastings-Sampler vorstellen, der auf diese Verteilung abzielt, aber ich frage mich, ob es einen effizienten direkten Sampler gibt, der die große Anzahl von Nullwahrscheinlichkeiten ausnutzt, um die Reihenfolge des Algorithmus von auf zu verringern .{ - 1 , 1 } d P ( X = ( x 1 , , x d ) ) ( x 1 ω 1 + + x d ω d ) + ( z ) + z O ( 2 d ) O ( d ){ω1,,ωd}{1,1}d

P(X=(x1,,xd))(x1ω1++xdωd)+
(z)+zO(2d)O(d)
Xi'an
quelle

Antworten:

4

Hier ist ein ziemlich offensichtlicher rekursiver Sampler, der im besten Fall ist (in Bezug auf die Gewichte ), im schlimmsten Fall jedoch exponentiell.ω iO(d)ωi

Angenommen, wir haben bereits und möchten auswählen . Wir müssen berechnen und wähle mit der Wahrscheinlichkeit Der Nenner ist für jede gültige Auswahl von Stichproben ungleich Null . x i w ( x 1 , , x i - 1 , x ix1,,xi1xix i = 1 w ( x 1 , , x i - 1 , 1 )

w(x1,,xi1,xi)=xi+1{1,1}xd{1,1}(j=1dωjxj)+
xi=1x1,,xi-1
w(x1,,xi1,1)w(x1,,xi1,1)+w(x1,,xi1,1).
x1,,xi1

Nun stellt sich natürlich die Frage, wie berechnet wird .w(x1,,xi)

Wenn wir das , dann für jedes mit führenden Einträgen , und so wird : & ohgr; x 0 x x 1 : i w Σ x i + 1Σ x d & ohgr; xC:=j=1iωjxjj=i+1d|ωj|ωx0xx1:iw

xi+1xdωx=ω(xi+1xdx)=j=1iωj(xi+1xdxj)2dixj+j=i+1dωj(xi+1xdxj)0=2diC.

Im umgekehrten Fall, , haben wir das und damit .Cj=i+1d|ωj|ωx0w(x1,,xi)=0

Andernfalls müssen wir mit .w(x1,,xi)=w(x1,,xi,1)+w(x1,,xi,1)

Angenommen, der Speicher ist kein Problem und wir können alle Unterberechnungen in , in einem Baum zwischenspeichern - bis zu dem Punkt, an dem wir einen der "netten" Fälle treffen, danach jeden Anrufe dauern konstant. (Wir müssen sowieso diesen ganzen Baum berechnen, um auszuwählen .) Sobald dieser Baum von Berechnungen erstellt ist, benötigt der Sampler nur noch Zeit. Die Frage ist, wie lange es dauert, den Baum zu bauen, oder wie groß er ist.w(1)w(1)x1wO(d)


Wir werden die "netten" Fälle natürlich schneller wenn die sortiert sind, .ωiω1ω2ωd

Im besten Fall . Dann treffen wir sofort einen "schönen" Fall für entweder oder , so dass die Baumkonstruktion konstante Zeit benötigt und der gesamte Sampler Zeit benötigt.|ω1|>j=2d|ωj|w(1)w(1)wO(d)

Im schlimmsten (sortierten) Fall ist . Dann ist die Frage: Wie groß ist der Gesamtbaum?ω1=ω2==ωd

Nun, die ersten Pfade, die beendet werden müssen, sind natürlich und der Länge . Der Baum ist daher bis zu dieser Tiefe vollständig und enthält daher mindestens Knoten. (Es hat mehr; Sie können es wahrscheinlich mit einem Argument finden, wie es bei den Ruinenproblemen von Spielern verwendet wurde, aber ich konnte es in zwei Minuten Googeln nicht finden und es ist mir egal -  ist schlecht genug....)(1,1,,1)(1,1,,1)d/2O(2d/2)2d/2

Wenn Ihre Einstellung nur wenige sehr große , ist dies wahrscheinlich ein einigermaßen praktischer Ansatz. Wenn die alle von ähnlicher Größe sind, ist es wahrscheinlich immer noch exponentiell und für große zu teuer .ω iωiωid

Dougal
quelle
Vielen Dank für diese Art der Eliminierung nach Viterbi. Wenn Sie "Im umgekehrten Fall" schreiben, Ich nehme an, Sie meinen nicht die Ergänzung des ersten FallsC id j = i + 1 | ω j |
Cij=i+1d|ωj|
Cij=i+1d|ωj|
Xi'an
1
Nein, nicht die Ergänzung: Wenn es sehr groß ist, wissen Sie, dass die Kürzung nicht angewendet wird, wenn es sehr klein ist, wird es immer angewendet, und dazwischen müssen Sie zurückgreifen, um herauszufinden, wann es angewendet wird oder nicht.
Dougal