Читать книгу R für Data Science - Hadley Wickham - Страница 40
Statistische Transformationen
ОглавлениеAls Nächstes wenden wir uns Balkendiagrammen zu. Solche Diagramme sehen einfach aus, doch sie sind unter anderem deshalb interessant, weil sie raffinierte Zusammenhänge aufdecken können. Sehen Sie sich ein einfaches Balkendiagramm an, wie es mit geom_bar() gezeichnet wurde. Das folgende Diagramm zeigt die Gesamtanzahl von Diamanten im Datenset diamonds an, gruppiert nach cut. Das Datenset diamonds ist Bestandteil von ggplot2 und enthält zu etwa 54.000 Diamanten Informationen wie Preis (price), Karat (carat), Farbe (color), Reinheit (clarity) und Schliff (cut). Das Diagramm zeigt, dass es mehr Diamanten mit hochwertigen Schliffen gibt als solche mit minderwertigen Schliffen:
ggplot(data = diamonds) +
geom_bar(mapping = aes(x = cut))
Auf der x-Achse zeigt das Diagramm den Schliff (cut), einer Variablen von diamonds. Auf der y-Achse wird die Anzahl (count) dargestellt, wobei aber count keine Variable in diamonds ist! Woher stammt nun count? Viele Diagramme, wie zum Beispiel Streudiagramme, stellen die Rohdaten des Datensets dar. Andere Diagramme, wie zum Beispiel Balkendiagramme, berechnen neue Werte, die dann im Diagramm wiedergegeben werden.
Balkendiagramme, Histogramme und Häufigkeitspolygone kategorisieren die Daten und stellen dann die Anzahlen in den Kategorien als Diagramm dar, das heißt die Anzahl der Punkte, die in jede Kategorie fallen.
Glättungsfunktionen passen ein Modell an die Daten an und stellen dann die Vorhersagen aus dem Modell grafisch dar.
Boxplots berechnen eine robuste Zusammenfassung der Verteilung und zeigen einen speziell formatierten Kasten an.
Der Algorithmus, mit dem die neuen Werte für eine Grafik berechnet werden, heißt stat, was kurz für statistische Transformation steht. Die folgende Abbildung beschreibt, wie dieser Vorgang mit geom_bar() funktioniert:
Um zu erfahren, welcher stat ein geom verwendet, sehen Sie sich den Standardwert für das Argument stat an. Zum Beispiel zeigt ?geom_bar, dass für stat der Standardwert count eingestellt ist. Das heißt, geom_bar() verwendet stat_count(). Die Funktion stat_count() ist auf derselben Seite wie geom_bar() dokumentiert, und wenn Sie nach unten scrollen, finden Sie einen Abschnitt »Computed variables« (berechnete Variablen). Hier sehen Sie, dass die Funktion zwei neue Variablen berechnet: count und prop. Im Allgemeinen können Sie geom-Funktionen und stat-Funktionen synonym verwenden. Zum Beispiel können Sie das obige Diagramm mit stat_count() anstelle von geom_bar() neu erstellen:
ggplot(data = diamonds) +
stat_count(mapping = aes(x = cut))
Das funktioniert, weil jedes geometrische Objekt eine standardmäßige statistische Transformation hat und jede statistische Transformation ein standardmäßiges geometrisches Objekt. Das heißt, Sie können in der Regel geom-Objekte verwenden, ohne sich um die zugrunde liegende statistische Transformation kümmern zu müssen. Es gibt drei Gründe, warum Sie eine statistische Transformation explizit verwenden müssen:
Sie wollen die standardmäßige statistische Transformation überschreiben. Im folgenden Code habe ich die stat in geom_bar() von count (dem Standardwert) in identity geändert. Dadurch kann ich die Höhe der Balken auf die Rohdaten einer y-Variablen abbilden. Wenn Menschen, die nur gelegentlich damit zu tun haben, über Balkendiagramme sprechen, meinen sie manchmal leider den Typ des Balkendiagramms, bei dem die Höhe des Balkens bereits in den Daten präsent ist, oder das vorherige Balkendiagramm, in dem sich die Höhe des Balkens aus der Anzahl der (gezählten) Zeilen ergibt.
demo <- tribble(
~a, ~b,
"bar_1", 20,
"bar_2", 30,
"bar_3", 40
)
ggplot(data = demo) +
geom_bar(
mapping = aes(x = a, y = b), stat = "identity"
)
(Machen Sie sich nichts daraus, dass <- oder tribble() bisher noch nicht zu sehen war. Vielleicht können Sie die Bedeutung dieser Elemente aus dem Kontext erschließen. Und was sie genau bewirken, lernen Sie bald kennen!)
Sie wollen die Standardzuordnung von transformierten Variablen zu visuellen Eigenschaften ändern, zum Beispiel ein Balkendiagramm mit dem Verhältnis statt der Anzahl anzeigen:
ggplot(data = diamonds) +
geom_bar(
mapping = aes(x = cut, y = ..prop.., group = 1)
)
Welche Variablen von stat berechnet werden, finden Sie im Hilfeabschnitt unter »Computed variables«.
Sie möchten die Aufmerksamkeit mehr auf die statistische Transformation in Ihrem Code lenken, zum Beispiel mit stat_summary() die y-Werte für jeden eindeutigen x-Wert summieren, um die Aufmerksamkeit auf die Summierung zu lenken, die Sie berechnen:
ggplot(data = diamonds) +
stat_summary(
mapping = aes(x = cut, y = depth),
fun.ymin = min,
fun.ymax = max,
fun.y = median
)
ggplot2 bringt über 20 einsatzbereite statistische Transformationen mit. Jede statistische Transformation ist eine Funktion, sodass Sie auf die übliche Art Hilfe erhalten, zum Beispiel mit ?stat_bin. Eine vollständige Liste der statistischen Transformationen finden Sie auf dem ggplot2-Spickzettel.