Auf einen Blick: NumPy bietet verschiedene statistische Funktionen und Verteilungen, um Stichproben für praktische Anwendungen zu generieren. Wichtige Verteilungen sind Normal, Weibull, Poisson, Binomial und Uniform, die jeweils auf spezifische statistische Analysen zugeschnitten sind.
- NumPy kann reale Ereignisse simulieren, wie Würfelwürfe oder Warteschlangenlängen.
- Statistische Funktionen erleichtern die Analyse von Phänomenen durch Stichproben aus definierten Verteilungen.
NumPy unterstützt viele statistische Verteilungen. Das bedeutet, dass es Stichproben aus einer Vielzahl von Anwendungsfällen generieren kann. Zum Beispiel kann NumPy helfen, statistisch vorherzusagen:
- Die Chancen, eine 7 zu würfeln (also zu gewinnen) in einem Würfelspiel
- Wie wahrscheinlich ist es, dass jemand von einem Auto überfahren wird
- Wie wahrscheinlich ist es, dass Ihr Auto eine Panne bekommt
- Wie viele Leute stehen an der Kasse Schlange
Wir erklären es anhand von Beispielen.
Zufälligkeit & die eigentliche Arbeit
Die NumPy-Funktionen berechnen keine Wahrscheinlichkeit. Stattdessen ziehen sie Stichproben aus der Wahrscheinlichkeitsverteilung der Statistik – was zu einer Kurve führt. Die Kurve kann steil und schmal oder breit sein oder über die Zeit schnell einen kleinen Wert erreichen.
Ihr Muster variiert je nach Art der Statistik:
- Normal
- Weibull
- Poisson
- Binomial
- Uniform
- Und so weiter.
Die meisten Phänomene in der realen Welt sind wirklich zufällig. Wenn wir zum Beispiel Kurzsichtigkeit, Unbeholfenheit und Zerstreutheit außer Acht lassen, ist die Wahrscheinlichkeit, dass jemand von einem Auto angefahren wird, für alle Menschen gleich.
Die Normalverteilung spiegelt dies wider.
Wenn man die Zufallsfunktion in Programmiersprachen verwendet, sagt man, man soll aus der Normalverteilung wählen. Die Stichproben neigen dazu, etwa in einem Mittelpunkt zu schweben, dem sogenannten Mittelwert. Und die Volatilität der Beobachtungen wird als Varianz bezeichnet. Wie der Name schon sagt, wenn sie stark variiert, ist die Varianz groß.
Schauen wir uns diese Verteilungen an.
Normal
Die Argumente für die Normalverteilung sind:
- loc ist der Mittelwert
- Die Skala ist die Quadratwurzel der Varianz, also die Standardabweichung
- Die Größe ist die Stichprobengröße oder die Anzahl der Versuche. 400 bedeutet, 400 Zufallszahlen zu erzeugen. Wir schreiben (400), hätten aber auch 400 schreiben können. Das zeigt, dass die Werte mehr als eine Dimension haben können. Wir wählen hier einfach Zahlen und nicht irgendeine Art von Würfel oder anderen Dimensionen.
Weibull
Poisson
Binomial
Uniform
import numpy as np
import matplotlib.pyplot as plt
arr = np.random.normal(loc=0,scale=1,size=(400,))
plt.plot(arr)
Beachte hier, dass die Zahlen etwa im Mittelwert 0 liegen:
Weibull wird am häufigsten in präventiven Wartungsanwendungen eingesetzt. Im Grunde ist das die Ausfallrate über die Zeit. Bei Maschinen wie Lkw-Komponenten nennt man das Time to Failure. Hersteller veröffentlichen zu Planungszwecken.
Eine Weibull-Verteilung besitzt einen Form - und Skalierungsparameter . Fortsetzung mit dem Lkw-Beispiel:
- Die Form beschreibt, wie schnell im Laufe der Zeit das Bauteil wahrscheinlich versagt, oder die Steilheit der Krümmung.
- NumPy benötigt keine Skalenverteilung. Stattdessen multipliziert man einfach den Weibull-Wert mit der Skala, um die Skalenverteilung zu bestimmen.
import numpy as np
import matplotlib.pyplot as plt
shape=5
arr = np.random.weibull(shape,400)
plt.hist(arr)
Dieses Histogramm zeigt die Anzahl der eindeutigen Beobachtungen oder Frequenzverteilung:
Poisson ist die Wahrscheinlichkeit einer gegebenen Anzahl von Personen in den Linien über einen bestimmten Zeitraum.
Zum Beispiel wird die Wartelänge in einem Supermarkt durch die Poisson-Verteilung bestimmt. Wenn du das weißt, kannst du weiter einkaufen, bis die Schlange kürzer wird, und musst nicht warten. Das liegt daran, dass die Wartelangenlänge im Laufe der Zeit stark variiert. Sie ist nicht den ganzen Tag über gleich. Geh also einkaufen oder schlendere durch den Laden, anstatt in der Schlange zu stehen.
import matplotlib.pyplot as plt
arr = np.random.poisson(2,400)
plt.plot(arr)
Hier sehen wir, dass die Zeilenlänge zwischen 8 und 0 variiert. Die Zahlenfunktion liefert keine Wahrscheinlichkeit. Beachten Sie, dass sie eine Beobachtung zurückgibt, das heißt, sie wählt eine Zahl, die der Weibull-Statistik unterliegt.
Binomial sind diskrete Ergebnisse, wie das Würfeln.
Schauen wir uns das Craps-Spiel an. Du wirfst zwei Würfel und gewinnst, wenn du eine 7 bekommst. Mit diesen Würfen kannst du eine 7 bekommen:
- 1,6
- 2,5
- 3,4
- 4,3
- 5,2
- 6,1
Es gibt also sechs Möglichkeiten zu gewinnen. Es gibt 6*6*36 Möglichkeiten. Die Gewinnchance beträgt also 6/16=1/6.
Um 400 Würfelwürfe zu simulieren, verwenden:
import numpy as np
import matplotlib.pyplot as plt
arr = np.random.binomial(36,1/6,400)
plt.hist(arr)
In den 400 Versuchen wurden etwa dreimal zwei 6er gewürfelt.
Die gleichmäßige Verteilung variiert mit gleicher Wahrscheinlichkeit zwischen einem hohen und einem niedrigen Bereich.
import numpy as np
import matplotlib.pyplot as plt
arr = np.random.uniform(-1,0,1000)
plt.hist(arr)
Verwandte Literatur
Pandas Guide
- Pandas-Einführung & Tutorials für Anfänger
- Pandas: Wie man CSV- und JSON-Dateien liest
- Wie man ein Pandas-Dataframe aus einem Wörterbuch erstellt
- Wie man Daten in Pandas gruppiert, verkettet und zusammenführt
- Pandas-Datentypen
- Umgang mit fehlenden Daten in Pandas: NaN-Werte erklärt
- NumPy-Einführung mit Beispielen
- Verwendung von StringIO, um getrennte Textdateien in NumPy zu lesen
- Verwendung der NumPy-Bincount-Statistikfunktion
- Top NumPy Statistische Funktionen & Verteilungen
Diese Beiträge sind meine eigenen und spiegeln nicht unbedingt die Position, Strategien oder Meinung von BMC wider.