Die Binomialverteilung ist eine der wichtigsten diskreten Wahrscheinlichkeitsverteilungen.
Sie beschreibt die Anzahl der Erfolge in einer Serie von gleichartigen und unabhängigen Versuchen, die jeweils genau zwei mögliche Ergebnisse haben („Erfolg“ oder „Misserfolg“). Solche Versuchsserien werden auch Bernoulli-Prozesse genannt.
Schauen wir uns zunächst ein Beispiel an und danach die Definition der Binomialverteilung.
*** Beispiel 1:*** Zwei Spieler spielen Basketball, Spieler A und Spieler B. Spieler A macht durchschnittlich 11 Würfe pro Spiel und hat eine Trefferquote von 72%. Spieler B mach durchschnittlich 15 Würfe pro Spiel, hat allerdings nur eine Erfolgsrate von 48%.
*** Frage 1:*** Was ist die Wahrscheinlichkeit dass Spieler A durchschnittlich 6 Treffer pro Spiel macht?
*** Frage 2:*** Was ist die Wahrscheinlichkeit dass Spieler B durchschnittlich 6 Treffer pro Spiel macht?
Wir können dieses Experiment binomial klassifizieren sobald die folgenden Bedingungen eintreffen:
1.) Der Prozess besteht aus einer Folge von n Versuchen.
2.) Nur jeweils zwei mögliche Ergebnisse sind für jeden Versuch Möglich. („Erfolg“ oder „Misserfolg“)
3.) Wenn die Wahrscheinlichkeit für den Erfolg 'p' ist, dann ist die Wahrscheinlichkeit für einen Misserfolg gleich q=1-p
4.) Die Versuche sind unabhängig voneinander.
Die Wahrscheinlichkeitsfunktion für eine Binomialverteilung ist dann:
Wobei n= Anzahl der Versuche, k=Anzahl der Erfolge, p=Erfolgs- oder Trefferwahrscheinlichkeit, 1-p=Fehlerwahrscheinlichkeit (Wird oft als q=1-p angegeben).
Die obige Formel kann so verstanden werden: Wir brauchen bei insgesamt 'n' Versuchen genau 'k' Erfolge der Wahrscheinlichkeit $$p^k$$ und haben demzufolge genau n-k Fehlschläge der Wahrscheinlichkeit $$(1-p)^{n-k}$$
Allerdings kann jeder der 'k' Erfolge bei jedem der 'n' Versuche auftreten, sodass wir noch mit der Anzahl $$C(n,k)$$ k-elementigen Teilmengen einer n-elementigen Menge multiplizieren müssen. Denn genau so viele Möglichkeiten gibt es, aus allen 'n' Versuchen die 'k' erfolgreichen auszuwählen.
Ein kurzer Hinweiss, C(n,k) ist die Anzahl aller möglichen Kombinationen von N mit k zu einer bestimmten Zeit.
Das ist gleichbedeutend zu: $$C(n,k) = \frac{n!}{k!(n-k)!}$$
# Spieler A
# Trefferwahrscheinlichkeit für A
p_A = .72
# Anzahl der Würfe von A
n_A = 11
# Mache 6 Würfe
k = 6
# Importiere scipy
import scipy.special as sc
# Definiere C(n,k)
comb_A = sc.comb(n_A,k)
# Berechne die Wahrscheinlichkeit!
answer_A = comb_A * (p_A**k) * ((1-p_A)**(n_A-k))
# Formattiere die Ausgabe in Prozent!
answer_A = 100*answer_A
# Führe die gleichen Schritte für den Spieler B aus
p_B = .48
n_B = 15
comb_B = sc.comb(n_B,k)
answer_B = 100 * comb_B * (p_B**k) * ((1-p_B)**(n_B-k))
#Ausgabe
print (' Die Wahrscheinlichkeit dass Spieler A durchschnittlich 6 Treffer pro Spiel macht ist %1.1f%% ' %answer_A)
print (' \n')
print (' Die Wahrscheinlichkeit dass Spieler B durchschnittlich 6 Treffer pro Spiel macht ist %1.1f%% ' %answer_B)
Die Wahrscheinlichkeit dass Spieler A durchschnittlich 6 Treffer pro Spiel macht ist 11.1% Die Wahrscheinlichkeit dass Spieler B durchschnittlich 6 Treffer pro Spiel macht ist 17.0%
Jetzt wissen wir dass Spieler B, obwohl dieser technisch schlechter ist, eine höhere Wahrscheinlichkeit hat um durchschnitlich 6 Treffer pro Spiel zu erzielen.
Aber einen Moment... was ist bei einer höheren Anzahl an Würfen? Hat die Trefferwahrscheinlichkeit von Spieler A einer größeren Effekt?
Was ist die Trefferwahrscheinlichkeit um 9 Treffer pro Spiel zu erzielen?
Dazu setzten wir die Anzahl der Würfe 'k' auf 9:
k = 9
# Wir ändern die neuen Kombinationen
comb_A = sc.comb(n_A,k)
comb_B = sc.comb(n_B,k)
# Der Rest bleibt gleich
answer_A = 100 * comb_A * (p_A**k) * ((1-p_A)**(n_A-k))
answer_B = 100 * comb_B * (p_B**k) * ((1-p_B)**(n_B-k))
#Ausgabe
print (' Die Wahrscheinlichkeit dass Spieler A durchschnittlich 9 Treffer pro Spiel macht ist %1.1f%% ' %answer_A)
print (' \n')
print (' Die Wahrscheinlichkeit dass Spieler B durchschnittlich 9 Treffer pro Spiel macht ist %1.1f%% ' %answer_B)
Die Wahrscheinlichkeit dass Spieler A durchschnittlich 9 Treffer pro Spiel macht ist 22.4% Die Wahrscheinlichkeit dass Spieler B durchschnittlich 9 Treffer pro Spiel macht ist 13.4%
Jetzt können wir erkennen, daß die Fertigkeiten von Spieler A eine höhere Wahrscheinlichkeit haben um genau 9 Treffer zu erzielen. Wir müssen außerdem noch in betracht ziehen dass wir nach der Wahrscheinlichkeit von genau 9 Treffern fragen. Das ist ein Unterschied zur Frage: "Wie hoch ist die Wahrscheinlichkeit dass dass Spieler A mindestens 9 Treffer erzielt?".
Der Durchschnitt einer Binomialverteilung ist ganz einfach: $$\mu=n*p$$
Das macht Sinn, da die durschnittliche Anzahl der Treffer die Gesamtanzahl der Versuche multipliziert mit der durchschnittlichen Trefferwahrscheinlichkeit sein sollte.
Die Standardabweichung einer Binomialverteilung entspricht dann: : $$\sigma=\sqrt{n*q*p}$$
Als nächstes Können wir fragen: "Was ist die durchschnittliche Anzahl der Treffer die ein Spieler pro Spiel machen wird, +/- der Standardverteilung?"
# Durchschnitt
mu_A = n_A *p_A
mu_B = n_B *p_B
#Standardverteilung
sigma_A = ( n_A *p_A*(1-p_A) )**0.5
sigma_B = ( n_B *p_B*(1-p_B) )**0.5
# Gerundete Ausgaben
print ('Spieler A macht im Durchschnitt %1.0f +/- %1.0f Treffer pro Spiel' %(mu_A,sigma_A))
print ('\n')
print ('Spieler B macht im Durchschnitt %1.0f +/- %1.0f Treffer pro Spiel' %(mu_B,sigma_B))
Spieler A macht im Durchschnitt 8 +/- 1 Treffer pro Spiel Spieler B macht im Durchschnitt 7 +/- 2 Treffer pro Spiel
from scipy.stats import binom
# Wir können stats aufrufen: Mean('m'), variance('v'), skew('s'), and/or kurtosis('k')
mean,var= binom.stats(n_A,p_A)
print (mean)
print (var**0.5)
7.92 1.48916083752
Sieht nach den gleichen Ergebnissen aus, wie die zuvor manuel erstellten.
Schauen wir uns ein weiteres Beispiel an und visualisieren dieses.
Stell dir einen Münzwurf vor. Die Wahrscheinlichkeit um Kopf zu erhalten ist p=0.5 (in diesem Beispiel "Erfolg").
Wie sieht dann die Wahrscheinlichkeitsfunktion aus?
import numpy as np
# Definiere das neue Beispiel
n=10
p=0.5
# Definiere n Erfolge, (Die Indexierung startet bei 0, daher n+1)
x = range(n+1)
# Erstelle die Wahrscheinlichkeitsfunktion
Y = binom.pmf(x,n,p)
# Ausgabe
Y
array([ 0.00097656, 0.00976563, 0.04394531, 0.1171875 , 0.20507813, 0.24609375, 0.20507813, 0.1171875 , 0.04394531, 0.00976563, 0.00097656])
import matplotlib.pyplot as plt
plt.plot(x,Y,'o')
# Überschrift (verwende y=1.08 um die Überschrift über die Grafik zu stellen)
plt.title('Binomialverteilung: 10 Münzwürfe, Die Erfolgswahrscheinlichkeit für Kopf ist p=0.5',y=1.08)
# Achsenbeschriftung
plt.xlabel('Anzahl von Kopf')
plt.ylabel('Wahrscheinlichkeit')
<matplotlib.text.Text at 0x1a131194e0>
Es gibt noch sehr viel mehr Literatur zur Binomialverteilung, die du dir anschauen kannst. Hier sind ein Paar Links zu weiteren Erklärungen:
1.) https://de.wikipedia.org/wiki/Binomialverteilung
2.) http://mars.wiwi.hu-berlin.de/mediawiki/mmstat3/index.php/Binomialverteilung
Danke!