Praktische Statistik für Data Scientists. Peter Bruce
wesentlichen Teil der Daten zu konzentrieren, entfernen wir mit der Funktion subset zunächst Beobachtungen für sehr teure und sehr kleine sowie auch große Wohnungen:
kc_tax0 <- subset(kc_tax, TaxAssessedValue < 750000 &
SqFtTotLiving > 100 &
SqFtTotLiving < 3500)
nrow(kc_tax0)
432693
In pandas filtern wir den Datensatz wie folgt:
kc_tax0 = kc_tax.loc[(kc_tax.TaxAssessedValue < 750000) &
(kc_tax.SqFtTotLiving > 100) &
(kc_tax.SqFtTotLiving < 3500), :]
kc_tax0.shape
(432693, 3)
Abbildung 1-8 zeigt ein Hexagonal-Binning-Diagramm, das die Beziehung zwischen der fertiggestellten Wohnfläche und dem steuerlich geschätzten Wert von Immobilien in King County abbildet. Anstatt einfach die einzelnen Datenpunkte abzubilden, die sich als dunkle, zusammenhängende Wolke darstellen würden, sind sie in sechseckige Felder gruppiert, die so eingefärbt werden, dass die Anzahl der Beobachtungen in diesem Feld widergespiegelt wird. In diesem Diagramm ist der positive Zusammenhang zwischen der Anzahl der fertiggestellten Wohnfläche und dem steuerlich geschätzten Wert deutlich zu erkennen. Ein interessantes Detail ist, dass wir zusätzliche Verdunklungen über dem (dunkelsten) unteren Hauptbereich erkennen können, die auf Häuser schließen lassen, die zwar jenen im Hauptbereich flächenmäßig gleichen, aber einen höheren steuerlich ermittelten Wert aufweisen.
Abbildung 1-8 wurde mit dem beeindruckenden R-Paket ggplot2 erzeugt, das von Hadley Wickham entwickelt wurde [ggplot2]. ggplot2 ist eines von mehreren modernen Softwarepaketen, die zur anspruchsvollen explorativen visuellen Datenanalyse entwickelt wurden (siehe »Mehrere Variablen visualisieren« auf Seite 44):
ggplot(kc_tax0, (aes(x=SqFtTotLiving, y=TaxAssessedValue))) +
stat_binhex(color='white') +
theme_bw() +
scale_fill_gradient(low='white', high='black') +
labs(x='Fertiggestellte Wohnfläche (in Quadratfuß)',
y='Steuerlich geschätzter Wert')
In Python können Hexagonal-Binning-Diagramme mit der pandas-Data-Frame-Methode hexbin leicht erstellt werden:
ax = kc_tax0.plot.hexbin(x='SqFtTotLiving', y='TaxAssessedValue',
gridsize=30, sharex=False, figsize=(5, 4))
ax.set_xlabel('Fertiggestellte Wohnfläche (in Quadratfuß)')
ax.set_ylabel('Steuerlich geschätzter Wert')
Abbildung 1-8: Hexagonal-Binning-Diagramm zur Darstellung des Zusammenhangs zwischen dem steuerlich geschätzten Wert und der fertiggestellten Wohnfläche von Immobilien
In Abbildung 1-9 werden Konturen (Niveau- bzw. Höhenlinien) verwendet, die einem Streudiagramm überlagert sind, um die Beziehung zwischen zwei numerischen Variablen zu visualisieren. Die Höhenlinien bilden im Wesentlichen eine topografische Karte für zwei Variablen ab; jedes Höhenlinienband stellt eine bestimmte Dichte von Punkten dar, die zunimmt, wenn man sich dem »Peak« nähert. Dieses Diagramm offenbart einen ähnlichen Zusammenhang wie das in Abbildung 1-8: Es gibt einen zweiten Peak »nördlich« des Hauptpeaks. Dieses Diagramm wurde ebenfalls mit dem ggplot2-Paket mit der integrierten Funktion geom_density2d erstellt:
ggplot(kc_tax0, aes(SqFtTotLiving, TaxAssessedValue)) +
theme_bw() +
geom_point(alpha=0.1) +
geom_density2d(color='white') +
labs(x='Fertiggestellte Wohnfläche (in Quadratfuß)',
y='Steuerlich geschätzter Wert')
In Python können Sie ein Konturdiagramm mit der seaborn-Funktion kdeplot erzeugen:
ax = sns.kdeplot(kc_tax0.SqFtTotLiving, kc_tax0.TaxAssessedValue, ax=ax)
ax.set_xlabel('Fertiggestellte Wohnfläche (in Quadratfuß)')
ax.set_ylabel('Steuerlich geschätzter Wert')
Abbildung 1-9: Konturdiagramm zur Darstellung des Zusammenhangs zwischen dem steuerlich geschätzten Wert und der fertiggestellten Wohnfläche von Immobilien
Es gibt noch weitere Diagrammtypen, die die Beziehung zwischen zwei numerischen Variablen aufzeigen können, unter anderem Heatmaps. Heatmaps, Hexagonal-Binning- und Konturdiagramme bilden alle eine zweidimensionale Dichtefunktion ab. Daher sind sie die natürlichen Analoga zu Histogrammen und Dichtediagrammen.
Zwei kategoriale Variablen
Einen gebräuchlichen Ansatz, den Zusammenhang zweier kategorialer Variablen zusammenzufassen, bietet die Kontingenztafel – eine Tabelle, die die absoluten Häufigkeiten der verschiedenen Kombinationen der Kategorien (bzw. der Ausprägungen der beiden kategorialen Variablen) angibt. Die Kontingenztabelle in Tabelle 1-8 zeigt den Zusammenhang von zwei kategorialen Daten, zum einen solche, die das Rating eines Privatkredits angeben, und zum anderen solche, die das Ergebnis bzw. den Erfolg hinsichtlich der Rückzahlung dieses Kredits wiedergeben. Sie basiert auf Daten, die vom Lending Club, einem führenden Unternehmen im Peer-to-Peer-Kreditgeschäft, zur Verfügung gestellt wurden. Das Rating bzw. die Einstufung hat die Ausprägungen A (hoch) bis G (niedrig). Die Ausprägung des Ergebnisses der Kreditrückzahlung ist entweder »vollständig bezahlt«, »zurzeit in Rückzahlung«, »verspätet zurückgezahlt« oder »abgeschrieben« (also ein Kreditausfall – der Restbetrag des Darlehens wird voraussichtlich nicht eingetrieben). Die Tabelle zeigt sowohl die absolute als auch – in Bezug auf die jeweiligen Zeilen – die relative Häufigkeit. Besser eingestufte Kredite weisen im Vergleich zu schlechter eingestuften Krediten einen sehr niedrigen Prozentsatz an verspäteten bzw. abgeschriebenen Rückzahlungen auf.
Tabelle 1-8: Kontingenztabelle der Krediteinstufung in Bezug auf den tatsächlichen Status
Zusätzlich zu den absoluten Häufigkeiten können bei Kontingenztafeln auch relative Häufigkeiten für die Spalten- und Gesamtwerte dargestellt werden. Die wahrscheinlich gebräuchlichste Nutzung von Kontingenztafeln sind Pivot-Tabellen in Excel. In R können Kontingenztafeln mithilfe der Funktion CrossTable des Pakets descr erzeugt werden; der folgende Code wurde zur Erstellung von Tabelle 1-8 verwendet:
library(descr)
x_tab <- CrossTable(lc_loans$grade, lc_loans$status,
prop.c=FALSE, prop.chisq=FALSE, prop.t=FALSE)
In Python können wir die Pivot-Tabelle mit