5  Daten verbildlichen

Schlüsselwörter

Statistik, Prognose, Modellierung, R, Datenanalyse, Regression

5.1 Lernsteuerung

Abb. Abbildung 1.3 zeigt den Standort dieses Kapitels im Lernpfad und gibt damit einen Überblick über das Thema dieses Kapitels im Kontext aller Kapitel.

5.1.1 Lernziele

  • Sie können erläutern, wann und wozu das Visualisieren statistischer Inhalte sinnvoll ist.
  • Sie kennen typische Arte von Datendiagrammen.
  • Sie können typische Datendiagramme mit R visualisieren.
  • Sie können zentrale Ergebnisse aus Datendiagrammen herauslesen.

5.1.2 Benötigte R-Pakete

library(tidyverse)
library(easystats)
library(DataExplorer)  # nicht vergessen zu installieren
library(ggpubr)  # optional
library(ggstatsplot)  # optional

5.1.3 Benötigte Daten

Zuerst definieren wir den Pfad, wo wir die Daten finden, s. Listing 5.1. Dann importieren wir die Mariokart-Daten.

Listing 5.1: Pfad zu den Mariokart-Daten
mariokart_path <- paste0(
  "https://vincentarelbundock.github.io/Rdatasets",
  "/csv/openintro/mariokart.csv")

mariokart <- read.csv(mariokart_path)

5.1.4 R-Code zum Copy-Pasten

Sie finden den R-Code für jedes Kapitel hier. \(\square\)

5.1.5 Quiz zum Einstieg

Vielleicht fordert Sie die Lehrkraft zu einem Einstiegsquiz auf, etwas mittels der Plattform antworte.jetzt. Alternativ überlegen Sie sich selber 10 Quiz-Aufgaben zum Stoff des letzten Kapitels.

5.1.6 Wozu das alles?

Große Aufgaben warten … (imgflip, 2024)

🥷 Wir müssen die Galaxis retten, Kermit.

🐸 Schlock

5.2 Ein Dino sagt mehr als 1000 Worte

Es heißt, ein Bild sage mehr als 1000 Worte. Schon richtig, aber ein Dinosaurier sagt auch mehr als 1000 Worte, s. Abbildung 5.1. In Abbildung 5.1 sieht man verschiedene “Bilder”, also Datensätze: etwa einen Dino und einmal einen Kreis. Obwohl die Bilder grundverschiedene sind, sind die zentralen statistischen Kennwerte (praktisch) identisch. In die gleiche Bresche schlägt “Anscombes Quartett” (Anscombe, 1973), s. Abbildung 5.2: Es zeigt vier Datensätze, in denen die zentralen Statistiken fast identisch sind,
also Mittelwerte, Streuungen, Korrelationen. Aber die Streudiagramme sind grundverschieden. Anscombes Beispiel zeigt (zugespitzt): Eine Visualisierung enthüllt, was der Statistik (als Kennzahl) verhüllt bleibt.

Abbildung 5.1: Dinosaurier und Kreis: Gleiche statistischen Kennwerte (Fitzmaurice, 2017)
Wichtig

Statistische Diagramme können Einblicke geben, die sich nicht (leicht) in grundlegenden Statistiken (Kennwerten) abbilden. \(\square\)

Abbildung 5.2: Anscombes Quartet: Gleiche statistischen Kennwerte in vier Datensätzen

Unter visueller Cortex ist sehr leistungsfähig. Wir können ohne Mühe eine große Anzahl an Informationen aufnehmen und parallel verarbeiten. Aus diesem Grund sind Datendiagramme eine effektive und einfache Art, aus Daten Erkenntnisse zu ziehen.

Tipp

Nutzen Sie Datendiagramme umfassend; sie sind einfach zu verstehen und doch sehr mächtig.

5.2.1 Datendiagramm

Ein Datendiagramm (kurz: Diagramm) ist ein Diagramm, das Daten und Statistiken zeigt, mit dem Zweck, Erkenntnisse daraus zu ziehen.

Beispiel 5.1 (Aus der Forschung: Ein aufwändiges (und ansprechendes) Datendiagramm)  

Auf Basis des Korruptionsindex von Transparency International (2017) erstellt Wilke (2019/2024) ein Diagramm zum Zusammenhang vom Entwicklungsindex (Lebenserwartung, Bildung, Einkommen; vgl. Hou et al. (2015)) und Korruption, jeweils auf Landesebene, s. Abbildung 5.3.

Es finden sich in der Literatur (im Internet) viele weitere Beispiele für handwerklich meisterhaft erstelle Datendiagramme, die in vielen Fällen mit R erstellt werden (vgl. Scherer et al., 2019).

 

Abbildung 5.3: Der Zusammenhang von Entwicklungindex und und Korruption

5.2.2 Ein Bild hat nicht so viele Dimensionen

Abbildung 5.4 zeigt ein Bild mit mehreren (5) Variablen, die jeweils einer “Dimension” entsprechen. Wie man (nicht) sieht, wird es langsam unübersichtlich. Offenbar kann man in einem Bild nicht beliebig viele Variablen sinnvoll reinquetschen. Die “Dimensionalität” eines Diagramms hat ihre Grenzen, vielleicht bei 4-6 Variablen.

Abbildung 5.4: Ein Diagramm kann nur eine begrenzte Anzahl von Variablen zeigen. Wenn Sie dieses Bild nicht checken: Prima. Genau das soll das Bild zeigen.

Möchten wir den Zusammenhang von vielen Variablen, z.B. mehr als 5, verstehen, kommen wir mit Bildern nicht weiter. Dann brauchen wir andere Werkzeuge: statistics to the rescue.

Hinweis

Bei klaren Zusammenhängen und wenig Variablen braucht man keine (aufwändige) Statistik. Ein Bild (Datendiagramm) ist dann (oft) ausreichend. Man könnte sagen, dass es Statistik nur deshalb gibt, weil unser Auge mit mehr als ca. 4-6 Variablen nicht gleichzeitig umgehen kann.

Übungsaufgabe 5.1 Wie viele Variablen sind in Abbildung 5.4 dargestellt?1

5.3 Nomenklatur von Datendiagrammen

Tabelle 5.1 zeigt eine – sehr kurze Nomenklatur – an Datendiagrammen. Weitere Nomenklaturen sind möglich, aber wir halten hier die Sache einfach. Wer an Vertiefung interessiert ist, findet bei data-to-vis einen Überblick über verschiedene Typen an Diagrammen, sogar in Form einer systematischen Nomenklatur: https://www.data-to-viz.com/.

Tabelle 5.1: Ein (sehr kurze) Nomenklatur von Datendiagrammen
Erkenntnisziel qualitativ quantitativ
Verteilung Balkendiagramm Histogramm und Dichtediagramm
Zusammenhang gefülltes Balkendiagramm Streudiagramm
Unterschied gefülltes Balkendiagramm Boxplot
Hinweis

Wir arbeiten hier mit dem Datensatz mariokart. Hilfe bzw. ein Data-Dictionary (Codebook) finden Sie hier.

5.4 Verteilungen verbildlichen

5.4.1 Verteilung: nominale Variable

Definition 5.1 (Verteilung) Eine (Häufigkeits-)Verteilung einer Variablen \(X\) schlüsselt auf, wie häufig jede Ausprägung von \(X\) ist.\(\square\)

Beispiel 5.2 Tabelle 5.2 zeigt die Häufigkeitsverteilung von cond (condition, also der Zustand des Artikels, neu oder gebraucht) aus dem Datensatz mariokart. Die Variable hat 5 Ausprägungen; z.B. kommt die Ausprägung new 59 mal vor.\(\square\)

Tabelle 5.2: Häufigkeitsverteilung von cond aus dem Datensatz mariokart
cond n
new 59
used 84

Zugegeben, das Datendiagramm von cond ist nicht so aufregend, s. Abbildung 5.5. Wie man sieht, besteht so ein Diagramm als Balken, daher heißt es Balkendiagramm (synonym: Säulendiagramm). Man kann so ein Diagramm um 90° drehen; keine Ausrichtung ist unbedingt besser als die andere.

Definition 5.2 (Balkendiagramm) Ein Balkendiagramm ist eine grafische Darstellung von Werten, zumeist für die Häufigkeiten bestimmter Kategorien (Ausprägungen nominaler Variablen). Dabei werden rechteckige Balken verwendet werden, und die Länge eines Balkens ist proportional zur dargestellten Häufigkeit. \(\square\)

(a) horizontale Balken
(b) vertikale Balken
Abbildung 5.5: Häufigkeitsverteilung der Variable cond

Es gibt viele Methoden, sich mit R ein Balkendiagramm ausgeben zu lassen. Eine einfache, komfortable ist die mit dem Paket DataExplorer, s. Abbildung 5.5; wir betrachten gleich die Syntax.

Zuerst importieren wir die Daten, s. ?lst-mariokart-path.

Außerdem nicht vergessen, das Paket DataExplorer mit dem Befehle library zu starten. (Natürlich müssen Sie das Paket einmalig installiert haben, bevor Sie es starten können.) In diesem Paket “wohnen” die Befehle, die wir zum Erstellen der Datendiagramme nutzen werden. Listing 5.2 zeigt die Syntax, um ein Balkendiagramm zu erstellen. Auf der Hilfeseite der Funktion finden Sie weitere Details zur Funktion.

Listing 5.2: Syntax zur Erstellung eines Balkendiagramms
library(DataExplorer)
mariokart <- read.csv(mariokart_path)

mariokart %>% 
  select(cond) %>% 
  plot_bar()
Abbildung 5.6: Ein Balkendiagramm. Unglaublich.

Die Syntax ist in Listing 5.2 abgedruckt (Zur Erinnerung: %>% nennt man die “Pfeife und lässt sich als”und dann” übersetzen, vgl. Kapitel 4.4). Übersetzen wir die Syntax ins Deutsche:

Nimm den Datensatz mariokart *und dann*
  wähle die Spalte cond *und dann*
  zeichne ein Balkendiagramm.

Übungsaufgabe 5.2 (Spalten wählen für das Balkendiagramm) Hätten wir andere Spalten ausgewählt, so würde das Balkendiagramm die Verteilung jener Variablen zeigen. Ja, Sie können auch mehrere Variablen auf einmal auswählen. Probieren Sie das doch mal aus!

Übungsaufgabe 5.3 (Visualisieren Sie die Verteilung von stock_photo!)  

mariokart |> 
  select(stock_photo) |> 
  plot_bar()

5.4.2 Verteilung: quantitative Variable

5.4.2.1 Histogramm

Bei einer quantitativen Variablen mit vielen Ausprägungen wäre ein Balkendiagramm nicht so aussagekräftig, s. Abbildung 5.7 (links). Es gibt einfach zu viele Ausprägungen.

Die Lösung: Wir reduzieren die Anzahl der Ausprägungen, in dem wir auf ganze Dollar runden. Oder, um noch weniger Ausprägungen zu bekommen, können wir einfach Gruppen definieren, z.B.

  • Gruppe 1: 0-5 Dollar
  • Gruppe 2: 6-10 Dollar
  • Gruppe 2: 11-15 Dollar …

In Abbildung 5.7 (rechts) sind z.B. die Ausprägungen des Verkaufspreis (total_pr) in in Gruppen der Breite von 5 Dollar aufgeteilt worden. Zusätzlich sind noch die einzelnen Werte als schwarze Punkte gezeigt.

(a) Balkendiagramm
(b) Histogramm
Abbildung 5.7: Balkendiagramm vs. Histogramm für den Gesamtpreis (total_pr)

Definition 5.3 (Histogramm) Ein Histogramm ist ein Diagramm zur Darstellung der Häufigkeitsverteilung einer quantitativen Variablen. Die Daten werden in Gruppen (Klassen) eingeteilt, die dann durch einen Balken (pro Klasse) dargestellt sind. Die Höhe der Balken zeigt die Häufigkeit der Daten in dieser Gruppe/in diesem Balken (bei konstanter Balkenbreite).

Es gibt keine klare Regel, in wie viele Balken ein Histogramm gegliedert sein sollte. Nur: Es sollten nicht sehr viele und nicht sehr wenig sein, s. Abbildung 5.8 links bzw. Abbildung 5.8, rechts.

(a) Zu viele Gruppen (Balken)
(b) Zu wenige Gruppen (Balken)
Abbildung 5.8: Nicht zu wenig und nicht zu viele Balken im Balkendiagramm

Zur Erstellung eines Histogramms können Sie die Syntax Listing 5.3 nützen, vgl. Abbildung 5.9, links.

Listing 5.3: Syntax zur Erstellung eines Histogramms
mariokart %>% 
  select(total_pr) %>% 
  filter(total_pr < 100) %>%  # ohne Extremwerte
  plot_histogram()
(a) Histogramm
(b) Dichtediagramm
Abbildung 5.9: Eine stetige Verteilung verbildlichen

Übungsaufgabe 5.4 (Visualisieren Sie die Verteilung von ship_pr anhand eines Histogramms!)  

mariokart |> 
  select(ship_pr) |> 
  plot_histogram()

5.4.2.2 Dichtediagramm

Abbildung 5.10 fügt zu ?fig-balken-total-pr-hist ein Dichtediagramm hinzu (rote Linie). Ein Dichtediagramm ähnelt einem “glattgeschmirgeltem” Histogramm.

Definition 5.4 (Dichtediagramm) Ein Dichtediagramm visualisiert die Verteilung einer stetigen Variablen. Im Gegensatz zum Histogramm wird der Verlauf der Kurve geglättet, so kann Rauschen (Zufallsschwankung) besser ausgeblendet werden. (Mit Dichte ist die Anzahl der Beobachtungen pro Einheit der Variablen auf der X-Achse gemeint.)

Abbildung 5.10: Histogramm (graue Balken) und Dichtediagramm (orange Linie) für total_pr

Übungsaufgabe 5.5 Erstellen Sie das Diagramm Abbildung 5.9, rechtes Teildiagramm!2\(\square\)

5.4.2.3 Eigenschaften von Verteilungen

Verteilungen unterscheiden sich z.B. einerseits in ihrem “typischen” oder “mittleren” Wert (vgl. Kapitel 6.5) und anderseits in ihrer Streuung (vgl. Kapitel 7.4.) (Diagramme von) Verteilungen können symmetrisch oder schief (nicht symmetrisch) sein, s. Abbildung 5.11.

(a) Symmetrisch (Normal)
(b) Schief
Abbildung 5.11: Symmetrische vs. schiefe Verteilung, verbildlicht

Abbildung 5.12 zeigt verschiedene Formen von Verteilungen. “Bimodal” meint “zweigipflig” und “multimodal” entsprechend “mehrgipflig”.3

Abbildung 5.12: Verschiedene Verteilungsformen

Übungsaufgabe 5.6 (Verteilungform von total_pr?) Benennen Sie die am besten passende Verteilungsform für die Variable total_pr.

Lösung

Die Verteilung ist rechtsschief.

mariokart |> 
  select(total_pr) |> 
  plot_density()

5.4.3 Normalverteilung

Eine Normalverteilung ist eine bestimmte Art von Verteilung einer quantitativen Variablen. Aber sie ist besonders wichtig, und ist daher hier herausgestellt.

Eine Normalverteilung sehen Sie in Abbildung 5.11, links. Sie hat u.a. folgende Eigenschaften:

  • symmetrisch
  • glockenförmig
  • stetig
  • eingipflig (unimodal)
  • Mittelwert, Median und Modus sind identisch

Beispiel 5.3 Beispiele für normalverteilte Variablen sind Körpergröße von Männern oder Frauen, IQ-Werte, Prüfungsergebnisse, Messfehler, Lebensdauer von Glühbirnen, Gewichte von Brotlaiben, Milchproduktion von Kühen, Brustumfang schottischer Soldaten (Lyon, 2014).\(\square\)

Definition 5.5 (Normalverteilung) Eine Normalverteilung ist eine spezielle Art von Verteilung einer quantitativen Variablen. Sie ist symmetrisch, glockenförmig, stetig, unimodal und hat Mittelwert, Median und Modus identisch. Sie lässt sich durch zwei Parameter vollständig beschreiben: Mittelwert (\(\mu\)) und Streuung (\(\sigma\)). \(\square\)

Die Normalverteilung ist von hoher Bedeutung, da sich diese Verteilung unter (recht häufigen) Bedingungen zwangsläufig ergeben muss.

Definition 5.6 (Entstehung einer Normalverteilung) Wenn sich eine Variable \(X\) als Summe mehrerer, unabhängiger, etwa gleich starker Summanden, dann kann man erwarten, dass sich diese Variable \(X\) tendenziell normalverteilt. \(\square\)

Dieses Phänomen kann man gut anhand des Galton-Bretts veranschaulichen.

Parameter der Normalverteilung

Eine Normalverteilung lässt sich exakt beschreiben anhand zweier Parameter: ihres zentralen Werts (Mittelwerts), \(\mu\), und ihrer Streuung (Standardabweichung), \(\sigma\). \(\square\)

Abbildung 5.13 zeigt interaktive Beispiele für Normalverteilung. Wählen Sie einfach Mittelwert (\(\mu\)) und Streuung (\(\sigma\)) anhand der Schieberegler.4

Abbildung 5.13: Interaktives Beispiel für Normalverteilungen.

Kennt man diese beiden Parameter, so kann man einfach angeben, welcher Anteil der Fläche sich in einem bestimmten Bereich befindet, s. Abbildung 5.14.

Davon leitet sich die “68-95-99.7-Prozentregel” ab:

  • \(68\,\%\) der Werte im Bereich \(\mu\pm 1 \cdot \sigma\)
  • \(95\,\%\) der Werte im Bereich \(\mu\pm 2 \cdot \sigma\)
  • \(99{,}7\,\%\) der Werte im Bereich \(\mu\pm 3 \cdot \sigma\)
Abbildung 5.14: Die Flächeninhalte (Wahrscheinlichkeitsmasse) einer Normalverteilung in Abhängigkeit der SD-Einheiten (Ainali, 2007)

5.5 Zusammenhänge verbildlichen

5.5.1 Zusammenhang: nominale Variablen

Beispiel 5.4 (Beispiele für Zusammenhänge bei nominalen Variablen)  

  • Hängt Berufserfolg (Führungskraft ja/nein) mit dem Geschlecht zusammen?
  • Hängt der Beruf des Vaters mit dem Schulabschluss des Kindes (Abitur, Realschule, Mittelschule) zusammen?
  • Gibt es einen Zusammenhang zwischen Automarke und politische Präferenz einer Partei? \(\square\)

Sagen wir, Sie arbeiten immer noch beim Online-Auktionshaus und Sie fragen sich, ob ein Produktfoto wohl primär bei neuwertigen Produkten beiliegt, aber nicht bei gebrauchten? Dazu betrachten Sie wieder die mariokart-Daten, s. Abbildung 5.15.

(a) Es findet sich ein Zusammenhang von Foto und Zustand in den Daten
(b) Es findet sich (fast) kein Zusammenhang von wheel und Foto in den Daten
Abbildung 5.15: Zusammenhang zwischen nominalskalierten Variablen verbildlichen

Tatsächlich: Es findet sich ein Zusammenhang zwischen der Tatsache, ob dem versteigerten Produkt ein Foto bei lag und ob es neuwertig oder gebraucht war (Abbildung 5.15, links). Bei neuen Spielen war fast immer (ca. 90%) ein Foto dabei; bei gebrauchten Spielen immerhin bei gut der Hälfte der Fälle.

Anders sieht es aus für die Frage, ob ein (oder mehrere) Lenkräder dem Spiel beilagen (oder nicht) in Zusammenhang mit der Fotofrage Hier gab es fast keinen Unterschied zwischen neuen und alten Spielen, was die Frage nach “Foto des Produkts dabei” betraf (Abbildung 5.15, rechts), der Anteil betrug jeweils ca. 70%. Das zeigt, dass es keinen Zusammenhang zwischen Foto und Neuwertigkeit des Spiels gibt (laut unseren Daten).

Anders gesagt: Unterscheiden sich die “Füllhöhe” in den Diagrammen, so gibt es einen Unterschied hinsichtlich “Foto ist dabei” zwischen den beiden Gruppen (linker vs. rechter Balken). Unterscheiden sich die Anteile in den Gruppen (neuwertige vs. gebrauchte Spiele), so spielt z.B. die Variable “Foto dabei” offenbar eine Rolle. Dann hängen Neuwertigkeit und “Foto dabei” also zusammen!

So können Sie sich in R ein gefülltes Balkendiagramm ausgeben lassen, s. Abbildung 5.16. Diese Darstellung eignet sich, um Zusammenhänge zwischen zwei zweistufigen nominal skalierten Variablen zu verbildlichen. Die verschiedenen Werte der Füllfarbe werden den Stufen der Variablen cond zugewiesen, s. Listing 5.4.

Listing 5.4: R-Syntax für ein gefülltes Balkendiagramm
mariokart %>% 
  select(cond, stock_photo) %>% 
  plot_bar(by = "cond")  # aus dem Paket DataExplorer
Abbildung 5.16: Ein gefülltes Balkendiagramm zur Untersuchung eines Zusammenhangs zwischen nominalskalierter Variablen
Hinweis

Gefüllte Balkendiagramme eignen sich zur Analyse eines Zusammenhangs zwischen nominalskalierten Variablen. Allerdings sollte eine der beiden Variablen nur zwei Ausprägungen aufweisen, sonst sind die Zusammenhänge nicht mehr so gut zu erkennen.\(\square\)

Übungsaufgabe 5.7 (Zusammenhang visualisieren) Aufgabe Visualisieren Sie den Zusammenhang der beiden nominalen Variablen cond und wheels!

Lösung

wheels ist als metrische Variable (int: Integer, d.h. Ganzzahl) formatiert im Datensatz mariokart. Wir müssen Sie zunächst als Faktorvariable umformatieren, damit R sie als nominal skalierte Variable erkennt.

mariokart |> 
  # Mache aus einer metrischen eine nominale Variable: 
  mutate(wheels = factor(wheels)) |> 
  select(cond, wheels) |> 
  plot_bar(by = "cond")

5.5.2 Zusammenhang: metrisch

Den (etwaigen) Zusammenhang zweier metrischer Variablen kann man mit einem Streudiagramm visualisieren (engl. scatterplot). Abbildung 5.17 links untersucht den Zusammenhang des Einstiegpreises (X-Achse) und Abschlusspreises (Y-Achse) von Geboten bei Versteigerungen des Computerspiels Mariokart. In dem Diagramm ist eine “Trendgerade” (Regressionsgerade), um die Art des Zusammenhangs besser zu verdeutlichen. Die Trendgerade steigt an (von links nach recht). Daraus kann man schließen: Es handelt sich um einen gleichsinnigen (positiven) Zusammenhang: Je höher der Startpreis, desto höher der Abschlusspreis, zumindest tendenziell. Diese Gerade liegt “mittig” in den Daten (wir definieren dies später genauer). Diese Trendgerade gibt Aufschluss über “typische” Werte: Welcher Y-Wert ist “typisch” für einen bestimmten X-Wert?

Abbildung 5.17 rechts untersucht den Zusammenhang zwischen Anzahl der Gebote (X-Achse) und Abschlusspreises (Y-Achse). Es handelt sich um einen negativen Zusammenhang: Je mehr Gebote, desto geringer der Abschlusspreis. Das erkennt man an der sinkenden Trendgeraden.

Die Ellipse zeigt an, wie eng die Daten um die Trendgerade streuen. Daraus kann man ableiten, wie stark der Absolutwert des Zusammenhangs ist, vgl. Abbildung 5.19.

(a) positiver, mittelstarker Zusammenhang
(b) negativer, eher schwacher Zusammenhang
Abbildung 5.17: Streudiagramm zur Darstellung eines Zusammenhangs zweier metrischer Variablen

Definition 5.7 (Linearer Zusammenhang) Lässt sich die Beziehung zwischen zwei Variablen mit einer Gerade visualisieren, so spricht man von einem linearen Zusammenhang. Ändert man eine der beiden Variablen um einen bestimmten Wert (z.B. 1), so ändert sich die andere um einen proportionalen Wert (z.B. 0.5). \(\square\)

Natürlich könnte man auch nicht-lineare Zusammenhänge untersuchen, aber der Einfachheit halber konzentrieren wir uns hier mit linearen; Beispiele für nicht-lineare Zusammenhänge sind in Abbildung 5.18 zu sehen.

Abbildung 5.18: Beispiele nichtlinearer Zusammenhänge

Definition 5.8 (Richtung und Stärke eines Zusammenhang) Gleichsinnige (positive) Zusammenhänge erkennt man an aufsteigenden Trendgeraden \(\nearrow\); gegensinnige (negative) Zusammenhänge an absteigenden Trendgeraden \(\searrow\). \(\square\)

Starke Zusammenhänge erkennt man an schmalen Ellipsen (“Baguette” 🥖); schwache Zusammenhänge an breiten Ellipsen (“Torte” 🥮). Abbildung 5.19 bietet einen Überblick über verschiedene Beispiele von Richtung und Stärke von Zusammenhängen.5

Abbildung 5.19: Lineare Zusammenhänge verschiedener Stärke und Richtung

In Abbildung 5.19 ist für jedes Teildiagramm eine Zahl angegeben: der Korrelationskoeffizient. Diese Statistik quantifiziert Richtung und Stärke des Zusammenhangs (mehr dazu in Kap. Kapitel 8). Ein positives Vorzeichen steht für einen positiven Zusammenhang, ein negatives Vorzeichen für einen negativen Zusammenhang. Der (Absolut-)Wert gibt die Stärke des linearen Zusammenhangs an (Cohen, 1992):

  • ±0: Kein Zusammenhang
  • ±0.1: schwacher Zusammenhang
  • ±0.3: mittlerer Zusammenhang
  • ±0.5: starker Zusammenhang
  • ±1: perfekter Zusammenhang

Abbildung 5.20 hat die gleiche Aussage wie Abbildung 5.19, ist aber plakativer, indem Stärke (schwach, stark) und Richtung (positiv, negativ) gegenübergestellt sind.

Abbildung 5.20: Überblick über starke vs. schwache bzw. positive vs. negative Zusammenhänge

Man sieht in Abbildung 5.19 und Abbildung 5.20, dass ein negativer Korrelationskoeffizient mit einer absinkenden Trendgerade (synonym: Regressionsgerade; blaue Linie) einhergeht. Umgekehrt geht ein positiver Trend mit einer ansteigenden Trendgerade einher. Zweitens erkennt man, dass starke Zusammenhänge mit einer schmaler Ellipse einhergehen und schwache Zusammenhänge mit einer breiten Ellipse einhergehen.

Abbildung 5.21 zeigt interaktive Beispiele für (lineare) Zusammenhänge.6

Abbildung 5.21: Interaktives Beispiel für Zusammenhangsdiagramme.

Beispiel 5.5 Sie arbeiten nach wie vor bei einem Online-Auktionshaus, und manchmal gehört Datenanalyse zu Ihren Aufgaben. Daher interessiert Sie, ob welche Variablen mit dem Abschlusspreis (total_pr) im Datensatz mariokart zusammenhängen. Sie verbildlichen die Daten mit R, und zwar nutzen Sie das Paket DataExplorer. Außerdem müssen wir noch die Daten importieren, falls noch nicht getan, s. Listing 5.1.

So, jetzt kann die eigentliche Arbeit losgehen. Da Sie sich nur auf metrische Variablen konzentrieren wollen, wählen Sie (mit select) nur diese Variablen aus. Dann weisen Sie R an, einen Scatterplot zu malen (plot_scatterplot) und zwar jeweils den Zusammenhang einer der gewählten Variablen mit dem Abschlusspreis (total_pr), da das die Variable ist, die Sie primär interessiert. Das Ergebnis sieht man in Abbildung 5.22 bzw. Listing 5.5. \(\square\)

Listing 5.5: Streudiagramm erstellen mit dem R-Paket ‘DataExplorer’
mariokart %>% 
  select(duration, n_bids, start_pr,
         ship_pr, total_pr, 
         seller_rate, wheels) %>% 
  plot_scatterplot(by = "total_pr")
Abbildung 5.22: Der Zusammenhang metrischer Variablen mit Abschlusspreis

Aha… Was sagt uns das Bild? Hm. Es scheint einige Extremwerte zu geben, die dafür sorgen, dass der Rest der Daten recht zusammengequetscht auf dem Bild erscheint. Vielleicht sollten Sie solche Extremwerte lieber entfernen? Sie entscheiden sich, nur Verkäufe mit einem Abschlusspreis von weniger als 100 Dollar anzuschauen (total_pr < 100). Das Ergebnis ist in Abbildung 5.23 zu sehen.

mariokart_no_extreme <-
  mariokart %>% 
  filter(total_pr < 100)

mariokart_no_extreme %>% 
  select(duration, n_bids, start_pr, 
         ship_pr, total_pr, 
         seller_rate, wheels) %>% 
  plot_scatterplot(by = "total_pr")
Abbildung 5.23: Der Zusammenhang metrischer Variablen mit Abschlusspreis

Ohne Extremwerte schält sich ein deutlicheres Bild (Abbildung 5.23) hervor: Startpreis (start_pr) und Anzahl der Räder (wheels) scheinen am stärksten mit dem Abschlusspreis zusammenzuhängen.

Das Argument by = "total_pr" bei plot_scatterplot weist R an, als Y-Variable stets total_pr zu verwenden. Alle übrigen Variablen kommen jeweils einmal als X-Variable vor.\(\square\)

Übungsaufgabe 5.8  

Visualisieren Sie den Zusammenhang der beiden metrischen Variablen start_pr und total_pr. Verwenden Sie den Datensatz ohne Extremwerte wie oben definiert.

mariokart_no_extreme |> 
  select(start_pr, total_pr) |> 
  plot_scatterplot(by = "total_pr")

5.6 Unterschiede verbildlichen

5.6.1 Unterschied: nominale Variablen

Gute Nachrichten: Für nominale Variablen bieten sich Balkendiagramme sowohl zur Darstellung von Zusammenhängen als auch von Unterschieden an. Genau genommen zeigt ja Abbildung 5.15 (links) den Unterschied zwischen neuen und gebrauchten Spielen hinsichtlich der Frage, ob Photos beiliegen. Und wie man in Abbildung 5.15 sieht, ist der Anteil der Spiele mit Foto bei den neuen Spielen höher als bei gebrauchten Spielen.7

5.6.2 Unterschied: quantitative Variablen

Eine typische Analysefrage ist, ob sich zwei Gruppen hinsichtlich einer metrischen Zielvariablen deutlich unterscheiden. Genauer gesagt untersucht man z.B. oft, ob sich die Mittelwerte der beiden Gruppen zwischen der Zielvariablen deutlich unterscheiden. Das hört sich abstrakt an? Am besten wir schauen uns einige Beispiele an, s. Abbildung 5.24.

(a) Histogramm pro Gruppe
(b) Boxplot pro Gruppe
Abbildung 5.24: Unterschiede zwischen zwei Gruppen: Metrische Y-Variable, nominale X-Variable

Das linke Teildiagramm von Abbildung 5.24 zeigt das Histogramm von total_pr, getrennt für neue und gebrauchte Spiele, vgl. Abbildung 5.9. Das rechte Teildiagramm zeigt die gleichen Verteilungen, aber mit einer vereinfachten, groberen Darstellungsfrom, den Boxplot.8 Was ein “deutlicher” (“substanzieller”, “bedeutsamer”, “relevanter” oder “(inhaltlich) signifikanter”) Zusammenhang ist, ist keine statistische, sondern inhaltliche Frage, die man mit Sachverstand zum Forschungsgegenstand beantworten muss.

Definition 5.9 (Boxplot) Der Boxplot ist eine Vereinfachung bzw. eine Zusammenfassung eines Histograms. Damit stellt der Boxplot auch eine Verteilung (einer metrischen Variablen) dar.\(\square\)

In Abbildung 5.25 sieht man die “Übersetzung” von Histogramm (oben) zu einem Boxplot (unten). Ob der Boxplot horizontal oder vertikal steht, ist Ihrem Geschmack überlassen.

Abbildung 5.25: Übersetzung eines Histogramms zu einem Boxplot

Schauen wir uns die “Anatomie” des Boxplots näher an:

  1. Der dicke Strich in der Box zeigt den Median der Verteilung, vgl. Kapitel 6.3.
  2. Die Enden der Box zeigen das 1. Quartil (41) bzw. das 3. Quartil (54). Damit zeigt die Breite der Box die Streuung der Verteilung an, genauer gesagt die Streuung der inneren 50% der Beobachtungen. Je breiter die Box, desto größer die Streuung. Die Breite der Box nennt man auch den Interquartilsabstand (IQR).
  3. Die “Antennen” des Boxplots zeigen die Streuung in den kleinsten 25% der Werte (linke Antenne) bzw. die Streuung der größten 25% der Werte (rechte Antennen). Je länger die Antenne, desto größer die Streuung.
  4. Falls es aber Extremwerte gibt, so sollten die lieber einzeln, separat, außerhalb der Antennen gezeigt werden. Daher ist die Antennenlänge auf die 1,5-fache Länge der Box beschränkt. Werte die außerhalb dieses Bereichs liegen (also mehr als das 1,5-fache der Boxlänge von Q3 entfernt sind) werden mittels eines Punktes dargestellt.
  5. Liegt der Median-Strich in der Mitte der Box, so ist die Verteilung symmetrisch (bezogen auf die inneren 50% der Werte), liegt der Median-Strich nicht in der Mitte der Box, so ist die Verteilung nicht symmetrisch (d.h. sie ist schief). Gleiches gilt für die Antennenlängen: Sind die Antennen gleich lang, so ist der äußere Teil der Verteilung symmetrisch, andernfalls schief.

Beispiel 5.6 In einer vorherigen Analyse haben Sie den Zusammenhang von Abschlusspreis und der Anzahl der Lenkräder untersucht. Jetzt möchten Sie eine sehr ähnliche Fragestellung betrachten: Wie unterscheiden sich die Verkaufspreise je nach Anzahl der beigelegten Lenkräder? Flink erstellen Sie dazu folgendes Diagramm, Abbildung 5.26, links. Es zeigt die Verteilung des Abschlusspreises, aufgebrochen nach Anzahl Lenkräder (by = "wheels"). \(\square\)

Aber ganz glücklich sind Sie mit dem Diagramm nicht: R hat die Variable wheels komisch aufgeteilt. Es wäre eigentlich ganz einfach, wenn R die Gruppen 0, 1, 2, 3 und 4 aufteilen würde. Aber schaut man sich die Y-Achse (im linken Teildiagramm von Abbildung 5.26) an, so erkennt man, dass R wheels als stetige Zahl betrachtet und nicht in ganze Zahlen gruppiert. Vielleicht so, dass in jeder Gruppe gleich viele Wert sind?] Aber wir möchten jeden einzelnen Wert von wheels (0, 1, 2, 3, 4) als Gruppe verstehen. Mit anderen Worten, wir möchten wheels als nominale Variable definieren. Das kann man mit dem Befehle factor(wheels) erreichen (verpackt in mutate), s. Abbildung 5.26 rechts.


mariokart_no_extreme %>% 
  select(total_pr, wheels) %>% 
  plot_boxplot(by = "wheels")

mariokart_no_extreme %>% 
  select(total_pr, wheels) %>% 
  mutate(wheels = factor(wheels)) %>% 
  plot_boxplot(by = "wheels")
(a) wheels als metrische Variable
(b) wheels als nominale Variable
Abbildung 5.26: Abschlusspreis nach Anzahl von beigelegten Lenkrädern

Sie schließen aus dem Bild, dass Lenkräder und Preis (positiv) zusammenhängen. Allerdings scheint es wenig Daten für wheels == 4 zu geben. Das prüfen Sie nach:

mariokart_no_extreme %>% 
  count(wheels)
wheels n
0 36
1 52
2 50
3 2
4 1

Tatsächlich gibt es (in mariokart_no_extreme) auch für 3 Lenkräder schon wenig Daten, so dass wir die Belastbarkeit dieses Ergebnisses skeptisch betrachten sollten.

Übrigens bezeichnet Sie Ihre Chefin nur noch als “Datengott”.

Übungsaufgabe 5.9 (Visualisieren Sie den Unterschied im Verkaufspreis zwischen gebrauchten und neuen Spielen.) Lösung

mariokart_no_extreme |> 
  select(cond, total_pr) |> 
  plot_boxplot(by = "cond")

Übungsaufgabe 5.10 (Verkaufspreis im Vergleich) Visualisieren Sie den Unterschied im Verkaufspreis abhängig von ship_pr; betrachten Sie ship_pr als ein Gruppierungsvariable. Interpretieren Sie das Ergebnis.

Lösung

mariokart_no_extreme |> 
  select(ship_pr, total_pr) |> 
  plot_boxplot(by = "ship_pr")

plot_boxplot gruppiert metrische Variablen, wie ship_pr automatisch in fünf Gruppen (mit gleichen Ranges). Wir müssen also nichts tun, um die metrische Variable ship_pr in eine Gruppierungsvariable (Faktorvariable) umzuwandeln.

Es sieht so aus, als würde der Median zwischen den Gruppen leicht steigen, mit Ausnahme der mittleren Gruppe.

5.7 So lügt man mit Statistik

Diagramme werden miunter eingesetzt, um die Wahrheit “aufzuhübschen”. Hier folgen einige gebräuchlichen Täuschungsmanöver.

5.7.1 Achsen manipulieren

Achsen zu stauchen ist ein einfacher Trick, s. Abbildung 5.27.

(a) Oh nein, dramatischer Einbruch des Umsatzes!
(b) Kaum der Rede wert, ist nur ein bisschen Schwankung!
Abbildung 5.27: Stauchen der Y-Achse, um mit Statistik zu lügen

Natürlich kann man auch durch “Abschneiden” der Y-Achse einen eindrucksvollen Effekt erzielen, s. Abbildung 5.28.

(a) Oh nein, dramatischer Einbruch des Umsatzes!
(b) Kaum der Rede wert, ist nur ein bisschen Schwankung!
Abbildung 5.28: Abschneiden der Y-Achse, um mit Statistik zu lügen

5.7.2 Scheinkorrelation

Messerli (2012) berichtet von einem Zusammenhang von Schokoladenkonsum und Anzahl von Nobelpreisen (Beobachtungseinheit: Länder), s. Abbildung 5.29. Das ist doch ganz klar: Schoki futtern macht schlau und Nobelpreise! (?)

Abbildung 5.29: Schokolodenkonsum und Nobelpreise

Leider ist hier von einer Scheinkorrelation auszugehen: Auch wenn die beiden Variablen Schokoladenkonsum und Nobelpreise zusammenhängen, heißt das nicht, dass die Variable die Ursache und die andere die Wirkung sein muss. So könnte auch eine Drittvariable im Hintergrund die gleichzeitige Ursache von Schokoladenkonsum und Nobelpreise sein, etwa der allgemeine Entwicklungsstand des Landes: In höher entwickelten Ländern wird mehr Schokolade konsumiert und es werden mehr Nobelpreise gewonnen im Vergleich zu Ländern mit geringerem Entwicklungsstand.

5.8 Praxisbezug

Ein, wie ich finde schlagendes Beispiel zur Stärke von Datendiagrammen ist Abbildung 5.30. Das Diagramm zeigt die Häufigkeit von Masern, vor und nach der Einführung der Impfung. Die Daten und die Idee zur Visualisierung gehen auf van Panhuis et al. (2013) zurück.

Abbildung 5.30: Häufigkeit von Masern und Impfung in den USA [moore_recreating_2015]

In der “freien Wildbahn” findet man häufig sog. “Tortendiagramme”. Zwar sind sie beliebt, doch ist von ihrer Verwendung zumeist abzuraten; vgl. auch hier.9

5.9 Vertiefung

Mehr Informationen zu DataExplorer finden Sie hier.

5.9.1 Animation

Eine weitere nützliche Art von Visualisierung sind Karten, 3D-Bilder und Animationen. So zeigt z.B. Abbildung 5.31 die Veränderung der Lebenserwartung (in Jahren) über die letzten Dekaden.10

Abbildung 5.31: Animation zur Veränderung der Lebenserwartung

In einigen Situation können Animationen zweckdienlich sein. Außerdem sind sie mitunter nett anzuschauen, s. Abbildung 5.32.

Abbildung 5.32: Veränderung des Zusammenhangs von Lebenswertung und Bruttosozialprodukt pro Land, gegliedert nach Kontinenten

Um den gemeinsamen Zusammenhang dreier metrischer Variablen darzustellen, bietet sich ein 3D-Streudiagramm an; s. Abbildung 5.33.

Abbildung 5.33: 3D-Punktediagramm zum Datensatz mariokart

Leider ist Abbildung 5.33 nicht sehr aufschlussreich.

Natürlich sind der Fantasie keine Grenzen beim Visualisieren gesetzt, so ist etwa diese Animationen ziemlich beeindruckend. 11

5.9.2 Schicke Diagramme

Ein Teil der Diagramm dieses Kapitels wurden mit dem R-Paket ggpubr erstellt. Mit diesem Paket lassen sich einfach ansprechende Datendiagramme erstellen.

library(ggpubr)  # einmalig instalieren nicht vergessen
mariokart %>% 
  filter(total_pr < 100) %>% 
  ggboxplot(x = "cond", y = "total_pr")

Möchte man Mittelwerte vergleichen, so sind Boxplots nicht ideal, da diese ja nicht den Mittelwert, sondern den Median heraustellen. Eine Abhilfe (also eine Darstellung des Mittelwerts) schafft man (z.B.) mit ggpubr, s. Abbildung 5.34.

ggviolin(mariokart_no_extreme, 
         x = "cond", 
         y = "total_pr",
         add = "mean_sd") 
Abbildung 5.34: Vergleich der Verteilungen zweier Gruppen mit Mittelwert und Standardabweichung pro Gruppe hervorgehoben

Ein “Violinenplot” hat die gleiche Aussage wie ein Dichtediagramm: Je breiter die “Violine”, desto mehr Beobachtungen gibt es an dieser Stelle. Weitere Varianten zum Violinenplot mit ggpubr finden sich hier.12

Übrigens sind Modelle – und Diagramme sind Modelle – immer eine Vereinfachung, lassen also Informationen weg. Manchmal auch wichtige Informationen. Dieses Beispiel zeigt, wie etwa Histogramme wichtige Informationen unter den Tisch fallen lassen.13 Ein weiteres R-Paket zur Erstellung ansprechender Datenvisualisierung heißt ggstatsplot.14 Abbildung 5.35 zeigt ein Histogramm, das mit ggstatsplot erstellt wurde.15

library(ggstatsplot)

gghistostats(
  data       = mariokart_no_extreme,
  x          = total_pr,
  xlab       = "Verkaufspreis" 
  # results.subtitle = FALSE   # unterdrückt statist. Details
)
Abbildung 5.35: Ein Histogramm mit ggstatsplot

Die Menge der statistischen Kennzahlen bei ggstatsplot schindet ordentlich Eindruck. Möchte man auf die Kennzahlen verzichten, so nutzt man den Schalter results.subtitle = FALSE. (Weitere Hinweise finden sich auf der Hilfeseite der Funktion der Funktion.)

👩‍🏫 Ich würde gerne mal Beispiele von schlechten Datendiagrammen sehen.

🧑‍🎓 Auf der Seite von Flowingdata findet sich eine nette Liste mit schlechten Datendiagrammen.16

5.9.3 Farbwahl

Einige Überlegungen zur Farbwahl findet sich bei Wilke (2019), s. Kap. 4.17 Die Farbpalette von Okabe und Ito ist (vgl. Ichihara et al., 2008) empfehlenswert, da sie auch bei Schwarz-Weiß-Druck und bei Sehschwächen die Farben noch recht gut unterscheiden lässt, s. Abbildung 5.36.

mariokart %>% 
  filter(total_pr < 100) %>% 
  ggboxplot(x = "cond", y = "total_pr", fill = "cond") +
  scale_fill_okabeito()
Abbildung 5.36: Die Farbskala von Okabe und Ito: Geeignet bei Farbseh-Schwächen und für Schwarz-Weiß-Druck. Außerdem nett anzuschauen.

5.10 Aufgaben

Die Webseite datenwerk.netlify.app stellt eine Reihe von einschlägigen Übungsaufgaben bereit. Sie können die Suchfunktion der Webseite nutzen, um die Aufgaben mit den folgenden Namen zu suchen:

  1. boxhist
  2. max-corr1
  3. max-corr2
  4. Histogramm-in-Boxplot
  5. Diamonds-Histogramm-Vergleich2
  6. Boxplot-Aussagen
  7. boxplots-de1a
  8. movies-vis1
  9. movies-vis2
  10. vis-gapminder
  11. boxplots-de1a
  12. diamonds-histogramm-vergleich
  13. wozu-balkendiagramm
  14. diamonds-histogram
  15. n-vars-diagram

Noch mehr Aufgaben zum Thema Datenvisualisierung finden Sie im Datenwerk unter dem Tag vis.

5.11 Literaturhinweise

Sowohl ggpubr als auch DataExplorer (und viele andere R-Pakete) bauen auf dem R-Paket ggplot2 auf. ggplot2 ist eines der am weitesten ausgearbeiteten Softwarepakete zur Erstellung von Datendiagrammen. Das Buch zur Software (vom Autor von ggplot2) ist empfehlenswert (Wickham, 2016). Eine neuere, gute Einführung in Datenvisualisierung findet sich bei Wilke (2019). Beide Bücher sind kostenfrei online lesbar.

Wilke (2019) gibt einen hervorragenden Überblick über praktische Aspekte der Datenvisualisierung; gut geeignet, wenn man mit R arbeitet. In ähnlicher Richtung geht Fisher & Meyer (2018).

Hier ist eine Liste von Büchern zum Thema; dort können Sie bei Interesse tiefer suchen.


  1. 5↩︎

  2. Grob gesagt: mariokart %>% plot_density().↩︎

  3. Quelle: ifes/FOM Hochschule, https://github.com/FOM-ifes/VL-Vorlesungsfolien↩︎

  4. Quelle: https://observablehq.com/@mcmcclur/the-normal-model↩︎

  5. Quelle: Aufbauend auf FOM/ifes, Autor: Norman Markgraf↩︎

  6. Quelle: https://observablehq.com/d/bb7ad3ecfb1ac2a6↩︎

  7. Aber Freunde lassen Freunde keine Tortendiagramme verwenden: https://github.com/cxli233/FriendsDontLetFriends#10-friends-dont-let-friends-make-pie-chart.↩︎

  8. Übrigens: Freunde lassen Freunde nicht Balkendiagramme verwenden, um Mittelwerte darzustellen: https://github.com/cxli233/FriendsDontLetFriends#1-friends-dont-let-friends-make-bar-plots-for-means-separation.↩︎

  9. https://www.data-to-viz.com/caveat/pie.html; https://github.com/cxli233/FriendsDontLetFriends#10-friends-dont-let-friends-make-pie-chart↩︎

  10. Der Quellcode der Animation ist hier zu finden: https://gist.github.com/rafapereirabr/0d68f7ccfc3af1680c4c8353cf9ab345.↩︎

  11. https://www.tylermw.com/wp-content/uploads/2019/06/featuredmeasles.mp4↩︎

  12. https://rpkgs.datanovia.com/ggpubr/reference/ggviolin.html↩︎

  13. https://www.autodesk.com/research/publications/same-stats-different-graphs↩︎

  14. https://github.com/IndrajeetPatil/ggstatsplot/blob/main/README.md↩︎

  15. https://github.com/IndrajeetPatil/ggstatsplot/blob/main/README.md#gghistostats↩︎

  16. https://flowingdata.com/category/visualization/ugly-visualization/↩︎

  17. Siehe auch: https://data-se.netlify.app/2023/06/30/farbpaletten/↩︎