Wie können wir aus einer geometrischen Mischung simulieren?

20

Wenn bekannte Dichten sind, aus denen ich simulieren kann, dh für die ein Algorithmus verfügbar ist. und wenn das Produkt integrierbar ist, gibt es einen generischen Ansatz, um aus dieser Produktdichte unter Verwendung von zu simulieren Simulatoren aus dem 's?k i = 1 f i ( x ) α if1,,fkf i

i=1kfi(x)αiα1,,αk>0
fi
Xi'an
quelle
2
Ohne zusätzliche Annahmen erscheint dies unwahrscheinlich. (Der Einfachheit halber sei Sei klein. Angenommen, jedem ist ein Intervall in dem und , außerhalb dessen 0 \ lt f_i \ lt \ epsilon und I_i \ cap I_j = \ emptyset für i \ ne j . Dann würden die separaten Generatoren fast immer Werte in I_i erzeugen , aber die Wahrscheinlichkeit von \ prod f_i könnte sich irgendwo konzentrieren , was scheinbar nichts damit zu tun hat die I_I .) Also, was können Sie uns über dieε > 0 f i I i f i1 Pr i ( I i ) > 1 - εαi=1ϵ>0fiIifich1Prich(ichich)>1-ϵ0<fich<ϵichichichj=ichjichichfichichichfich ?
Whuber
1
(+10) Richtig! Die Verwendung eines kleineren αich würde jedoch dazu führen, dass alle Elemente abgeflacht werden und somit eine Überlappung ihrer effektiven Stützen begünstigt wird ...
Xi'an,
1
Wie auch immer, die Dichtheit wird ein Problem sein, so würde ich eine Transformation (ODER bevorzugte Stichprobe) durchführen, um die Dichtheit aufzuheben, bevor zufällige Stichproben erzeugt werden. Es gibt einen konstruktiven Ansatz, den ich vor einiger Zeit gelesen habe. Abschnitt 10.7 von link.springer.com/chapter/10.1007/978-1-4612-0209-7_10. Nicht sicher, ob die Diskretisierung auch hier angewendet werden kann.
Henry.L

Antworten:

3

Nun, natürlich gibt es den Akzeptanz-Zurückweisungs-Algorithmus, den ich für Ihr Beispiel implementieren würde als:

  1. (Initialisierung) Finden Sie für jedes . Bearbeiten Sie den folgenden Kommentar von Xi'an: Wählen Sie die Verteilung die dem kleinsten .A i = sup x { Π k j = 1 f j ( x ) α j / f i ( x ) } f i A iichEINich=supx{Πj=1kfj(x)αj/fich(x)}fichEINich
  2. Generiere aus .f ixfich
  3. Berechne .α=Πi=jkfj(x)αj/(Aifi(x))
  4. Generiere .uU(0,1)
  5. Wenn , gebe , sonst gehe zu 2.xuαx

Abhängig von den Distributionen haben Sie möglicherweise eine sehr niedrige Akzeptanzrate. Die erwartete Anzahl der Iterationen entspricht dem ausgewählten (unter der Annahme kontinuierlicher Verteilungen), sodass Sie zumindest im Voraus gewarnt werden.Aich

Bogenschütze
quelle
3
(+1) In der Tat eine Lösung! Angenommen, die Grenzen existieren für alle 's. Oder sogar ein . Der Vergleich der kann auch bei der Auswahl des effizientesten hilfreich sein . i i A i f iAiiiAifich
Xi'an
1
Ich hatte nicht daran gedacht, aber Sie haben natürlich Recht, die selbst sind sehr informativ, da sie auch der erwarteten Anzahl von Iterationen entsprechen, die zur tatsächlichen Generierung der Zufallszahl erforderlich sind, wenn Sie sich durchgehend an ein . Sie sollten also die Verteilung mit dem kleinsten auswählen, die Sie ständig verwenden möchten . Ich bearbeite die Antwort, damit Ihr Punkt nicht in Kommentaren verloren geht. i A iAiiAich
Jbowman
Das heißt, es wird angenommen, dass alle richtig normalisiert sind [um zu einem zu integrieren], was nicht unbedingt ein Standardvorkommen ist. fich
Xi'an