Wir beginnen mit einer Definition der diskrete Gleichverteilung (en. uniform distribution) und im Anschluß erstellen und visualisieren wir diese mit Numpy, Matplotlib und Scipy. Dabei diskutieren wir die Eigenschaften der diskreten Gleichverteilung.
*Definition:* Die diskrete Gleichverteilung ist eine spezielle Wahrscheinlichkeitsverteilung in der Stochastik. Eine diskrete Zufallsvariable X mit endlich vielen Ausprägungen hat eine diskrete Gleichverteilung, wenn die Wahrscheinlichkeit für jede ihrer Ausprägungen x1,x2,x3,...,xn gleich ist. Es gilt dann:
Dazu müssen wir zunächst die folgenden Importe ausführen:
import numpy as np
from numpy.random import randn
import pandas as pd
from scipy import stats
import matplotlib as mpl
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline
Als nächstes werden wir einen perfekten sechsseitiger Würfel mit Numpy erstellen, bei dem jede Zahl von eins bis sechs mit Wahrscheinlichkeit 1/6 fällt. Danach visualisieren wir die Ergebnisse mit Seaborn und Matplotlib.
# Wie führen wir den Wurf eines Würfels aus?
# Definiere jede Zahl des Würferls
roll_options = [1,2,3,4,5,6]
# Definirere den gesamten Wahrscheinlichkeitsraum
tprob = 1
# Wir haben einen perfekten sechsseitiger Würfel, somit hat jede Seite hat die gleiche Wahrscheinlichkeit dass sie geworfen wird
prob_roll = tprob / len(roll_options)
# Visualisiere das Ergebniss mit Seaborn rugplot indem die Höhe gleich der Wahrschenilcihkeit des Wurfes entspricht
uni_plot = sns.rugplot(roll_options,height=prob_roll,c='indianred')
# Gib die Überschrift aus
uni_plot.set_title('Probability Mass Function for Dice Roll')
<matplotlib.text.Text at 0x114ed6b70>
Wir können in dem Beispiel erkennen dass der Wert von f(x) in dem Plot gleich 1/(Anzahl der möglichen Ergebniss) ist.
Was ist dann der Durchschnitt und die Varianz für diese diskrete Gleichverteilung?
Der Durchschnitt ist einfach der Minimum und der Maximum Wert geteilt durch zwei. Also praktisch wie der Durchschnitt zweier Zahlen.
Mit einer Varianz von:
Jetzt schauen wir uns noch an wie man die diskrete Gleichverteilung automatisch mit Scipy erzeugt.
# Imports
from scipy.stats import randint
# Setzte die Ober- und die Untergrenze für den Würfel
low,high = 1,7
# Lese den Durchschnitt und die Varianz aus
mean,var = randint.stats(low,high)
print ('Der Durchschnitt ist %2.1f' %mean)
Der Durchschnitt ist 3.5
# Jetzt können wir ein einfaches Balkendiagramm erstellen
plt.bar(roll_options,randint.pmf(roll_options,low,high))
<Container object of 6 artists>
Es gibt noch sehr viel mehr Literatur zur diskreten Gleichverteilung, die du dir anschauen kannst. Hier sind ein paar Links zu weiteren Erklärungen: