Читать книгу Praktische Statistik für Data Scientists - Peter Bruce - Страница 23
Beispiel: Lagemaße für Einwohnerzahlen und Mordraten
ОглавлениеTabelle 1-2 zeigt einen Auszug der ersten paar Zeilen eines Datensatzes, der Informationen zu den Einwohnerzahlen und Mordraten für jeden US-Bundesstaat enthält (Zensus 2010). Die Einheit für die Mordrate wurde mit »Morde pro 100.000 Personen pro Jahr« gewählt.
Tabelle 1-2: Die ersten Zeilen des data.frame, der Auskunft über die Einwohnerzahlen und Mordraten der einzelnen Bundesstaaten gibt
Berechnen Sie den Mittelwert, den getrimmten Mittelwert und den Median für die Einwohnerzahlen in R:1
> state <- read.csv('state.csv')
> mean(state[['Population']])
[1] 6162876
> mean(state[['Population']], trim=0.1)
[1] 4783697
> median(state[['Population']])
[1] 4436370
In Python können wir zur Berechnung des Mittelwerts und des Medians die pandas-Methoden des Data Frame verwenden. Den getrimmten Mittelwert erhalten wir durch die Funktion trim_mean aus dem Modul scipy.stats:
state = pd.read_csv('state.csv')
state['Population'].mean()
trim_mean(state['Population'], 0.1)
state['Population'].median()
Der Mittelwert ist größer als der getrimmte Mittelwert, der wiederum größer als der Median ist.
Dies liegt daran, dass der getrimmte Mittelwert die fünf größten und fünf kleinsten Bundesstaaten ausschließt (trim=0.1 entfernt 10% an beiden Enden der Verteilung). Wenn wir die durchschnittliche Mordrate für das Land berechnen wollen, müssen wir dazu den gewichteten Mittelwert oder den Median heranziehen, um die unterschiedlich hohe Anzahl an Einwohnern in den Bundesstaaten zu berücksichtigen. Da R in seiner Standardbibliothek keine Funktion für den gewichteten Median umfasst, müssen wir zu diesem Zweck zunächst das Paket matrixStats installieren:
> weighted.mean(state[['Murder.Rate']], w=state[['Population']])
[1] 4.445834
> library('matrixStats')
> weightedMedian(state[['Murder.Rate']], w=state[['Population']])
[1] 4.4
Bei Python ist die Funktion zur Berechnung des gewichteten Mittelwerts im NumPy-Paket enthalten. Für den gewichteten Median können wir speziell das Paket wquantiles (https://oreil.ly/4SIPQ) verwenden:
np.average(state['Murder.Rate'], weights=state['Population'])
wquantiles.median(state['Murder.Rate'], weights=state['Population'])
Im vorliegenden Fall sind der gewichtete Mittelwert und der gewichtete Median in etwa gleich groß.