Hej Leute,

heute gibt es Schlangenhappen zum Abendbrot. Ich habe für euch ein kleines Python-Skript geschrieben, um anhand einer Würfelsimulation ein paar Konzepte zu demonstrieren.

Ok, wir fangen langsam an. Eine zufällige Zahl erzeugen geht ganz einfach mit der Library random über die Funktion randint, welche auch alle möglichen weiteren Wahrscheinlichkeitsverteilungen, z.B Normal-, Beta- oder Binomialverteilung.

Klassen in Python

Klassen kennt ihr vielleicht aus anderen objektorientierten Programmiersprachen (OOP). Eine Klasse ist im Prinzip der Datentyp eines Objekts und besteht aus Attributen und Methoden. Unsere Klasse heißt Wuerfel und soll – Überraschung – einen Würfel widerspiegeln. Ich erzeuge einen Würfel, indem ich ein neues Objekt der Klasse erzeuge. Das ruft nun den Konstruktor auf. Dabei gebe ich entweder nur die Anzahl Seiten an – die Wahrscheinlichkeit ist dann eine Gleichverteilung, d.h. jede Seite ist gleich wahrscheinlich – oder ich gebe explizit die Wahrscheinlichkeiten der einzelnen Seiten an.

Mit den get- und set-Funktionen können die Attribute, sprich Variablen, der Klasse abgerufen oder gesetzt werden.

Und natürlich soll der Würfel auch etwas machen, nämlich gewürfelt werden. Die Funktion wuerfeln erzeugt eine Zufallsstichprobe der Größe n.

Ist der Würfel fair?

Man spricht von einem fairen Würfel, wenn alle Seiten auf lange Sicht gleich häufig auftreten. Es muss also eine Gleichverteilung vorliegen. Um das statistisch zu testen, benötigen wir zuerst eine Stichprobe, die wir ja schnell mit unserer Funktion wuerfeln erzeugen können. Nun werden die absoluten Häufigkeiten der einzelnen Zahlen mit der Funktion unique aus der library numpy ermittelt. Numpy ist übrigens eine super wichtige Bibliothek, die effeziente Berechnungen ermöglicht und die man als Data Scientist unbedingt gut kennen sollte.

Auf die Häufigkeiten lassen wir nun einen Chi²-Test los. Die Nullhypothese geht von einer Gleichverteilung aus. Ist es sehr unwahrscheinlich, dass die Stichprobe – gegeben die Nullhypthese – gezogen wird, bekommen wir einen kleinen p-Wert. Liegt der p-Wert nun unter einer vorher festgelegten Grenze alpha, z.B. alpha =0,01, wird die Nullhypothese abgelehnt. In unserem Fall heißt das, dass der Würfel also nicht fair ist.

 

Der Python-Code für die Würfelsimulation

Und nun endlich der Code

Happy coding,
Euer Holger