Schätzung der Wahrscheinlichkeitsdichte der Summe der gleichförmigen Zufallsvariablen in Python

8

Ich habe zwei Zufallsvariablen X und Y, die gleichmäßig auf dem Simplex verteilt sind:

Ich möchte die Dichte ihrer Summe auswerten:

Nachdem ich das obige Integral ausgewertet habe, ist mein letztes Ziel, das folgende Integral zu berechnen:

Um das erste Integral zu berechnen, erzeuge ich gleichmäßig verteilte Punkte in Simplex und überprüfe dann, ob sie zu der gewünschten Region in dem obigen Integral gehören, und nehme den Bruchteil von Punkten, um die obige Dichte zu bewerten.

Sobald ich die obige Dichte berechnet habe, befolge ich eine ähnliche Prozedur, um das obige Logarithmusintegral zu berechnen, um seinen Wert zu berechnen. Dies war jedoch extrem ineffizient und dauerte so 3-4 Stunden. Kann mir jemand einen effizienten Weg vorschlagen, dies in Python zu lösen? Ich benutze Numpy Paket.

Hier ist der Code

%Vor%     
pikachuchameleon 14.02.2016, 16:55
quelle

1 Antwort

1

Nicht sicher, dass es eine Antwort auf Ihre Frage ist, aber fangen wir an

Hier sind einige Codebeispiele und eine Diskussion, wie man korrekt von Dirichlet (n) (aka Simplex), via gammavariate() oder via -log(U) , wie Sie es gemacht haben, aber mit richtigem Handle für potentielle Ecken, link

Problem mit Ihrem Code, wie ich sehen kann ist, dass, sagen wir, für das Sampling Dimension = 2 Simplex Du erhältst drei (!) einheitliche Zahlen, überspringst sie aber beim Listenverständnis für x . Das ist falsch. Um n-dimensionales Dirichlet zu testen, sollten Sie genau n U (0,1) erhalten und dann transformieren (oder n samples von gammavariate).

Aber, beste Lösung könnte einfach numpy.random.dirichlet() verwenden, sie ist in C geschrieben und könnte die schnellste sein, siehe link .

Der letzte, meiner bescheidenen Meinung nach, schätzen Sie log(PDF(X+Z)) nicht richtig ein. Ok, du findest einige, aber was ist PDF(X+Z) an diesem Punkt?

Macht das

%Vor%

sieht wie PDF aus? Wie hast du es geschafft?

Einfacher Test: Integration von PDF(X+Z) über den gesamten X+Z -Bereich. Hat es 1 produziert?

AKTUALISIEREN

Sieht so aus, als könnten wir verschiedene Ideen haben, was wir Simplex, Dirichlet usw. nennen. Ich bin ziemlich genau mit dieser Definition , wobei in d dim space%% co_de und d simplex sind konvexe Hüllen, die Vertices verbinden. Simplex Dimension ist immer eine weniger als Platz aufgrund der Beziehung zwischen Koordinaten. Im einfachsten Fall ist d-1 = 2, 1-simplex ist ein Segment, das die Punkte (1,0) und (0,1) verbindet, und aus der Dirichlet-Verteilung habe ich das Bild

Im Fall von d = 3 und 2-simplex haben wir dreieckige Verbindungspunkte (1,0,0), (0,1,0) und (0,0,1)

Code, Python

%Vor%     
Severin Pappadeux 15.02.2016 05:05
quelle