Читать книгу Praktische Statistik für Data Scientists - Peter Bruce - Страница 58
Mehrere Variablen visualisieren
ОглавлениеDie Diagrammtypen, die für den Vergleich zweier Variablen verwendet werden – Streu-, Hexagonal-Binning-Diagramme und Box-Plots –, lassen sich allesamt mithilfe des Ansatzes der Konditionierung leicht auf weitere Variablen erweitern. Ein Beispiel hierfür war in Abbildung 1-8 zu sehen, hier wurde die Beziehung zwischen der fertiggestellten Wohnfläche von Immobilien (in Quadratfuß) und ihrem steuerlich geschätzten Wert aufgezeigt. Wir hatten festgestellt, dass es eine Häufung von Immobilien zu geben scheint, die einen höheren steuerlich geschätzten Wert pro Quadratfuß haben. Wenn wir die Daten weiter unterteilen und wie in Abbildung 1-12 zusätzlich die Postleitzahl der jeweiligen Immobilie als Drittvariable berücksichtigen, können wir den Effekt der Lage der Immobilie aufdecken. Jetzt ist das Bild viel klarer: Der steuerlich geschätzte Wert ist bei einigen Postleitzahlen (98105, 98126) viel höher als bei anderen (98108, 98188). Diese Diskrepanz erklärt auch die in Abbildung 1-8 beobachtete Clusterbildung.
Abbildung 1-12: Steuerlich geschätzter Immobilienwert in Abhängigkeit von der fertiggestellten Wohnfläche (in Quadratfuß), nach Postleitzahlen unterteilt
Abbildung 1-12 haben wir mithilfe des ggplot2-Pakets unter Verwendung von facets, d.h. mit einer Drittvariablen (in diesem Fall der Postleitzahl), erstellt:
ggplot(subset(kc_tax0, ZipCode %in% c(98188, 98105, 98108, 98126)),
aes(x=SqFtTotLiving, y=TaxAssessedValue)) +
stat_binhex(color='white') +
theme_bw() +
scale_fill_gradient(low='white', high='blue') +
labs(x='Fertiggestellte Wohnfläche (in Quadratfuß)',
y='Steuerlich geschätzter Wert') +
facet_wrap('ZipCode')
1 Verwenden Sie die ggplot-Funktionen facet_wrap bzw. facet_grid, um die Drittvariable zu spezifizieren.
Die meisten Python-Pakete stützen sich für ihre Visualisierungen auf die Bibliothek matplotlib. Obwohl es prinzipiell auch mit der matplotlib-Bibliothek möglich ist, differenziertere Darstellungen zu erstellen, kann der Code schnell komplex werden. Glücklicherweise bietet seaborn eine relativ einfache Möglichkeit, diese Diagramme zu erzeugen:
zip_codes = [98188, 98105, 98108, 98126]
kc_tax_zip = kc_tax0.loc[kc_tax0.ZipCode.isin(zip_codes),:]
kc_tax_zip
def hexbin(x, y, color, **kwargs):
cmap = sns.light_palette(color, as_cmap=True)
plt.hexbin(x, y, gridsize=25, cmap=cmap, **kwargs)
g = sns.FacetGrid(kc_tax_zip, col='ZipCode', col_wrap=2)
g.map(hexbin, 'SqFtTotLiving', 'TaxAssessedValue',
extent=[0, 3500, 0, 700000])
g.set_axis_labels('Fertiggestellte Wohnfläche (in Quadratfuß)',
'Steuerlich geschätzter Wert')
g.set_titles('Postleitzahl {col_name:.0f}')
1 Verwenden Sie die Argumente col und row, um die Drittvariable anzugeben. Für eine einzelne Drittvariable können Sie das Argument col zusammen mit col_wrap nutzen, um das Facettendiagramm in mehrere Quadranten aufzuteilen.
2 Mit der Methode map wird die Funktion hexbin auf die hinsichtlich der verschiedenen Postleitzahlen untergliederten Teilmengen des ursprünglichen Datensatzes angewandt. Durch die Angabe von extent definieren Sie, wie weit sich die x- und y-Achsen erstrecken sollen.
Das Konzept der Konditionierung von Variablen in grafischen Darstellungen wurde mit Trellis-Grafiken, die von Rick Becker, Bill Cleveland und anderen bei Bell Labs entwickelt wurden, eingeführt [Trellis-Graphics]. Diese Idee hat sich auf verschiedene moderne Visualisierungsprogramme übertragen, wie z.B. dem lattice- [lattice] und dem ggplot2-Paket in R und den seaborn- [seaborn] und Bokeh-Modulen [bokeh] in Python. Drittvariablen stellen ebenfalls einen integralen Bestandteil von Business-Intelligence-Plattformen wie Tableau und Spotfire dar. Mit dem Aufkommen enormer Rechenleistung haben moderne Visualisierungsplattformen die bescheidenen Anfänge der explorativen Datenanalyse weit hinter sich gelassen. Die Schlüsselkonzepte und Werkzeuge, die vor einem halben Jahrhundert entwickelt wurden (z.B. einfache Box-Plots), bilden jedoch immer noch eine Grundlage solcher Systeme.