Beruflich Dokumente
Kultur Dokumente
1 Statistik Refresher
Florian Wahl
Technische Hochschule Deggendorf
Zentrum für Akademische Weiterbildung
Hochschulzertifikatskurs Data Analytics mit Python
2 Verschiedene Variablentypen
Wie in der Vorlesungseinführung erwähnt gibt es verschiedene Datentypen. Hier nochmals eine
kurze Zusammenfassung: - Kategorische Variablen beschreiben Merkmale deren Ausprägungen
harte Grenzen haben. Dabei gibt es 2 Untergruppen: - Bei nominalen Variablen gibt es keine
Ordnung oder Rangfolge zwischen den Werten (z.B. Blutgruppe, Religion, Ort, PLZ) - Bei ordi-
nalen Variablen gibt es eine Ordnung (z.B. Energieeffizienzklasse, Noten, Ticketklasse) - Kardinale
Variablen beschreiben Zahlenwerte, bei denen die Abstände (Differenzen zwischen 2 Werten) Sinn
ergeben (z.B. Abstand, Preis, Temperatur)
Wichtig ist hierbei, dass sich alle Variablentypen in einer Zahl abbilden lassen, dies macht jedoch
Differenzen zwischen zwei Werten nicht automatisch sinnvoll. Bevor arithmetische Berechnungen
angestellt werden, sollte immer hinterfragt werden, ob es sinnvoll ist dies zu tun.
3 Statistische Maße
3.1 Lagemaße
3.1.1 Mittelwert
Lagemaße beschreiben wo die Daten “liegen”. Das bekannteste Lagemaß ist der Mittelwert. Dieser
berechnet sich wiefolgt:
x1 + x2 + x2 + . . . + xn ∑ xi
n
x̄ = = . (1)
n n
i=1
Leider ist der Mittelwert nur für kardinale Variablen geeignet, und auch nur dann, wenn die Daten
nicht zu sehr Streuen.
1
[1]: import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
sns.stripplot(ds1, ax=ax1)
sns.stripplot(ds2, ax=ax2)
sns.stripplot(ds3, ax=ax3)
ax3.set_xlabel("Wert")
ax1.legend()
2
3.1.2 Median
Ein weiteres beliebtes Lagemaß ist der Median. Er teilt die Daten so, dass die Hälfte der Daten
größer oder gleich, und die andere Hälfte der Daten kleiner oder gleich des Medians sind. Dies kann
man durch Sortieren erreichen.
[3]: daten = [2, 9, 3, 5, 7, 4, 2]
print("Länge der Daten ist {}.".format(len(daten)))
daten.sort()
print(daten)
print("Der Median ist {}.".format(daten[3]))
print("Kontrolle: Der Median ist {}".format(np.median(daten)))
3.1.3 Häufigkeitstabellen
Da der Mittelwert nur bei kardinalen und der Median nur bei kardinalen und ordinalen Variablen
Sinn ergibt, wird für nominale Variablen oftmals eine Häufigkeitstabelle in absoluter oder relativer
Form erstellt. Pandas kann dies mit der Methode count_values().
[4]: import pandas as pd
df = sns.load_dataset("titanic")
df.head()
[4]: survived pclass sex age sibsp parch fare embarked class \
0 0 3 male 22.0 1 0 7.2500 S Third
1 1 1 female 38.0 1 0 71.2833 C First
2 1 3 female 26.0 0 0 7.9250 S Third
3 1 1 female 35.0 1 0 53.1000 S First
4 0 3 male 35.0 0 0 8.0500 S Third
[5]: df.survived.value_counts()
[5]: 0 549
1 342
3
Name: survived, dtype: int64
[6]: df.survived.value_counts(normalize=True)
[6]: 0 0.616162
1 0.383838
Name: survived, dtype: float64
[7]: df.embark_town.value_counts(normalize=True)
3.1.4 Quantile
Das x% Quantil teilt die Daten so auf, dass x% der Daten darunter und der Rest darüber liegen.
Ein besonderer Fall der Quantile ist der Median, welcher das 50% Quantil ist. Das 25% und 75%
Quantil sind im Boxplot eingezeichnet. In pandas lassen sich Quantile mit der quantile Methode
berechnen.
[8]: df.age.quantile(.25)
[8]: 20.125
[9]: 80.0
[10]: df.age.min()
[10]: 0.42
3.2 Streumaße
Streumaße geben an wie sich die Daten verteilen. Sind die Daten weit gestreut, oder liegen alle
Punkte nah beieinander?
[11]: ds1 = np.random.normal(0, 1, 100)
ds2 = np.random.normal(0, 2, 100)
4
ds3 = np.random.normal(0, 4, 100)
sns.stripplot(ds1, ax=ax1)
sns.stripplot(ds2, ax=ax2)
sns.stripplot(ds3, ax=ax3)
ax3.set_xlabel("Wert")
Die Standardabweichung ist das wichtigste Streumaß. Sie berechnet sich wie folgt:
√
(x1 − x̄)2 + (x2 − x̄)2 + (x3 − x̄)2 + . . . + (xn x̄)2
σ= (2)
n−1
Die Varianz ist das Quadrat der Standardabweichung. In pandas kann die Standardabweichung
mit der Method std und die Varianz mit der Methode var berechnet werden.
Bei Normalverteilten Daten gilt, dass ca. 68% innerhalb einer Standardabweichung vom Mittel-
wert liegen, ca. 95% innerhalb 2 Standardabweichungen und ca. 99.7% der Werte innerhalb 3
Standardabweichungen.
5
[12]: df.age.std()
[12]: 14.526497332334042
[13]: df.age.var()
[13]: 211.01912474630802
sns.stripplot(nd, ax=ax)
ax.axvline(nd.mean(), lw=2, ls="--", c="r", label="$\mu{}$")
ax.legend()
[15]: 192/200
[15]: 0.96
6
3.2.2 Interquartilsabstand
Ein weiteres Streumaß ist der Interquartilsabstand. Er ist definiert als der Bereich vom 25% bis
75% Quantils. Interquartilsabstand und Median haben den Vorteil, dass sie weniger stark von
Ausreißern verfälscht werden.
[16]: df.age.quantile(.75) - df.age.quantile(.25)
[16]: 17.875
[17]: f, ax = plt.subplots(1)
sns.stripplot(nd, ax=ax)
ax.axvline(nd.median(), lw=2, ls="--", c="r", label="Median")
ax.axvline(nd.quantile(.75), lw=2, ls="-", c="g", label="75% Quantil")
ax.axvline(nd.quantile(.25), lw=2, ls="-", c="g", label="25% Quantil")
ax.legend()
Die describe Methode bei pandas bietet einen schnellen Überblick über die wichtigsten Kenn-
zahlen.
7
[18]: df.age.describe()
[19]: df.age.plot.box()