Berechnen einer Binomialwahrscheinlichkeit für große Zahlen

8

Ich möchte Binomialwahrscheinlichkeiten auf Python berechnen. Ich habe versucht, die Formel anzuwenden:

%Vor%

Einige der Wahrscheinlichkeiten, die ich bekomme, sind unendlich. Ich habe einige Werte überprüft, für die p = inf. Für eine von ihnen, n = 450.000 und k = 17. Dieser Wert muss größer als 1e302 sein. Dies ist der Maximalwert, der von Floats behandelt wird.

Ich habe dann versucht, sum(np.random.binomial(n,p,numberOfTrials)==valueOfInterest)/numberOfTrials

zu verwenden

Dies zeichnet numberOfTrials-Beispiele und berechnet die durchschnittliche Anzahl der Male, die der Wert valueOfInterest gezeichnet wird.

Dies erhöht keinen unendlichen Wert. Ist dies jedoch ein gültiger Weg? Und warum würde dieser Weg keinen unendlichen Wert aufbringen, während die Berechnung der Wahrscheinlichkeiten funktioniert?

    
bigTree 05.03.2014, 15:23
quelle

4 Antworten

6

Arbeiten Sie in der Log-Domäne, um Kombinations- und Potenzierungsfunktionen zu berechnen und sie dann auf den Exponenten zu heben.

In etwa so:

%Vor%

Entfernt numerischen Überlauf / Überlauf wegen großer Zahlen. In Ihrem Beispiel mit n=450000 und p = 0.5, k = 17 wird p_log = -311728.4 , i zurückgegeben. e., der Logarithmus der endgültigen Wahrscheinlichkeit ist ziemlich klein und daher tritt ein Unterlauf auf, während np.exp genommen wird. Sie können jedoch immer noch mit der log-Wahrscheinlichkeit arbeiten.

    
Sudeep Juvekar 05.03.2014, 15:43
quelle
6

Weil Sie scipy verwenden, dachte ich, ich würde erwähnen, dass scipy bereits statistische Verteilungen implementiert hat. Beachten Sie auch, dass, wenn n so groß ist, die Binomialverteilung durch die Normalverteilung gut angenähert wird (oder Poisson, wenn p sehr klein ist).

%Vor%     
Bi Rico 05.03.2014 16:48
quelle
3

Ich denke, Sie sollten alles tun, was Sie mit Logarithmen berechnen:

%Vor%     
hivert 05.03.2014 15:46
quelle
0

Um Multiplizität wie Null um Unendlichkeit zu vermeiden, verwenden Sie Schritt für Schritt die Multiplikation.

%Vor%     
quelle