Demystifizierung von Statistik und Wahrscheinlichkeit in Data Science
Published on
Statistik und Wahrscheinlichkeit bilden das Fundament von Data Science. Das Verständnis dieser Konzepte ermöglicht es uns, die Werkzeuge zur Analyse, Interpretation und Schlussfolgerung aus den massiven Datensätzen, mit denen wir täglich umgehen, zu nutzen. In diesem Artikel werden wichtige Konzepte, praktische Beispiele und Python-Code-Schnipsel untersucht, um jeden Punkt zu veranschaulichen.
Wahrscheinlichkeitsverteilung
Die Wahrscheinlichkeitsverteilung beschreibt, wie die Wahrscheinlichkeiten über die Werte der Zufallsvariablen verteilt sind. Bei diskreten Variablen verwenden wir häufig die Gleichverteilung, bei der jedes Ergebnis die gleiche Wahrscheinlichkeit hat.
Um dies zu veranschaulichen, betrachten wir einen fairen sechsseitigen Würfel. Die Wahrscheinlichkeitsverteilung der Ergebnisse wäre gleichmäßig, wobei jede Zahl von 1 bis 6 die gleiche Wahrscheinlichkeit von 1/6 hat.
import numpy as np
outcomes = [1, 2, 3, 4, 5, 6]
probabilities = np.full(6, 1/6)
print(f'Wahrscheinlichkeitsverteilung eines fairen Würfels:')
for outcome, probability in zip(outcomes, probabilities):
print(f'P(X={outcome}) = {probability}')
Bei der Arbeit mit kontinuierlichen Variablen, wie beispielsweise der Ankunftszeit eines Busses, verwenden wir Wahrscheinlichkeitsdichtefunktionen (PDFs). PDFs geben die Wahrscheinlichkeit an, dass eine Variable innerhalb eines bestimmten Wertebereichs liegt.
Ein Beispiel für eine bekannte kontinuierliche Wahrscheinlichkeitsverteilung ist die Normalverteilung, auch als Gaußverteilung bekannt. Sie wird durch ihre glockenförmige Kurve charakterisiert.
import matplotlib.pyplot as plt
import numpy as np
# Generiere Zufallsstichproben aus einer Normalverteilung
mu = 0 # Mittelwert
sigma = 1 # Standardabweichung
samples = np.random.normal(mu, sigma, 1000)
# Zeige das Histogramm der Stichproben an
plt.hist(samples, bins=30, density=True, alpha=0.7)
plt.xlabel('Wert')
plt.ylabel('Wahrscheinlichkeitsdichte')
plt.title('Normalverteilung')
plt.show()
Mittelwert, Varianz und Standardabweichung
Der Mittelwert ist der Durchschnittswert einer Datenmenge. Er wird berechnet, indem alle Werte summiert und durch die Anzahl der Werte dividiert werden.
Die Varianz misst, wie weit jede Zahl in der Menge vom Mittelwert entfernt ist. Sie quantifiziert die Streuung oder Verteilung der Daten. Die Standardabweichung ist die Quadratwurzel der Varianz und liefert ein Maß für die Variation in der Datenmenge.
import numpy as np
data = np.random.normal(0, 1, 1000) # Generiere eine Normalverteilung mit einem Mittelwert von 0 und einer Standardabweichung von 1
mean = np.mean(data)
variance = np.var(data)
std_dev = np.std(data)
print(f'Mittelwert: {mean:.2f}')
print(f'Varianz: {variance:.2f}')
print(f'Standardabweichung: {std_dev:.2f}')
Modalwert, Median und Quartile
Der Modalwert ist der Wert, der in einem Datensatz am häufigsten vorkommt. Er gibt den Spitzenwert oder den häufigsten Wert in der Verteilung an.
Der Median ist der mittlere Wert, der den oberen und unteren Teil einer Datenstichprobe trennt. Er ist nützlich, wenn man es mit schiefen Daten oder Ausreißern zu tun hat.
Quartile teilen eine nach Rang geordnete Datenstichprobe in vier gleiche Teile auf. Das erste Quartil (Q1) ist der Wert, unter dem 25% der Daten fallen, das zweite Quartil (Q2) ist der Median, und das dritte Quartil (Q3) ist der Wert, unter dem 75% der Daten fallen.
import numpy as np
data = np.array([3, 7, 1, 5, 2, 9, 4, 6, 8, 2])
mode = np.argmax(np.bincount(data))
median = np.median(data)
q1 = np.percentile(data, 25)
q3 = np.percentile(data, 75)
print(f'Modalwert: {mode}')
print(f'Median: {median}')
print(f'Erstes Quartil (Q1): {q1}')
print(f'Drittes Quartil (Q3): {q3}')
Realwelt-Daten und Normalverteilung
Realwelt-Daten folgen oft einer Normalverteilung. Zum Beispiel können die Gewichte von Baseballspielern einer Normalverteilung mit bestimmtem Mittelwert und Standardabweichung folgen. Indem wir diese Parameter kennen, können wir zufällige Stichproben generieren, die potenzielle Gewichte von Baseballspielern simulieren.
import numpy as np
mean = 180
std_dev = 10
sample_size = 1000
weights = np.random.normal(mean, std_dev, sample_size)
print(f'Stichproben-Gewichte potenzieller Baseballspieler:')
print(weights[:10])
Konfidenzintervalle
Konfidenzintervalle geben einen Bereich an, innerhalb dessen sich der wahre Wert eines Bevölkerungsparameters mit einer bestimmten Konfidenz befindet. Sie sind entscheidend für die Schätzung des Mittelwerts und der Varianz einer Population anhand einer Stichprobe.
Um ein Konfidenzintervall zu berechnen, müssen wir den Stichprobenmittelwert, die Stichprobenstandardabweichung, die Stichprobengröße und das gewünschte Konfidenzniveau kennen. Nehmen wir an, wir möchten ein 95%iges Konfidenzintervall für den Mittelwert einer normalverteilten Variablen berechnen.
import numpy as np
from scipy.stats import norm
data = np.random.normal(0, 1, 100) # Generiere eine Stichprobe aus einer Normalverteilung
konfidenzniveau = 0.95
stichprobenmittelwert = np.mean(data)
stichprobenstandardabweichung = np.std(data)
stichprobengröße = len(data)
z_score = norm.ppf((1 + konfidenzniveau) / 2)
fensterbreite = z_score * (stichprobenstandardabweichung / np.sqrt(stichprobengröße))
konfidenzintervall = (stichprobenmittelwert - fensterbreite, stichprobenmittelwert + fensterbreite)
print(f'95% Konfidenzintervall: {konfidenzintervall}')
Hypothesentests
Hypothesentests ermöglichen es uns, Schlussfolgerungen über die Population zu ziehen, indem wir die Unterschiede zwischen beobachteten Stichprobendaten und den Ergebnissen, die wir unter der Nullhypothese erwarten würden, untersuchen, die oft keine Wirkung oder keinen Unterschied vorschlägt.
Ein gängiger Hypothesentest ist der t-Test, der verwendet wird, um die Mittelwerte von zwei Stichproben zu vergleichen. Die SciPy-Bibliothek bietet die Funktion ttest_ind
für die Durchführung von t-Tests.
from scipy.stats import ttest_ind
stichprobe1 = np.random.normal(0, 1, 100)
stichprobe2 = np.random.normal(1, 1, 100)
t_statistik, p-wert = ttest_ind(stichprobe1, stichprobe2)
```python
print(f'T-Statistik: {t_statistic:.2f}')
print(f'P-Wert: {p_value:.2f}')
Kovarianz und Korrelation
Kovarianz misst, wie sich zwei Variablen zueinander bewegen. Sie gibt uns die Richtung der Beziehung zwischen den Variablen an. Korrelation hingegen gibt uns nicht nur die Richtung, sondern auch die Stärke der Beziehung.
import numpy as np
data1 = np.array([1, 2, 3, 4, 5])
data2 = np.array([5, 4, 3, 2, 1])
kovarianz = np.cov(data1, data2)[0, 1]
korrelation = np.corrcoef(data1, data2)[0, 1]
print(f'Kovarianz: {kovarianz:.2f}')
print(f'Korrelation: {korrelation:.2f}')
Das Verständnis von Wahrscheinlichkeit und Statistik ist grundlegend für jeden Data Scientist. Diese Konzepte bieten uns die Werkzeuge und Techniken zur Analyse von Daten, zur Informationsgewinnung und zur Ableitung aussagekräftiger Erkenntnisse. Durch die Anwendung dieser Prinzipien und die Nutzung der leistungsstarken Python-Bibliotheken können wir das volle Potenzial der Data Science nutzen.
Fazit
Zusammenfassend ist das Verständnis von statistischen und probabilistischen Konzepten für jeden, der im Bereich der Data Science arbeitet, entscheidend. Durch das Beherrschen dieser Konzepte sind Sie gut gerüstet, um aussagekräftige Erkenntnisse aus Daten zu ziehen, robuste Machine-Learning-Modelle zu entwerfen und fundierte Entscheidungen zu treffen.