Säulendiagramm vs. Punktdiagramm – irreführend vs. informativ?

R Logo

Balken- und Säulendiagramme werden immer noch häufig verwendet, um Mittelwertsunterschiede darzustellen – obwohl zumindest in Fachkreisen schon viel Kritik an diesem Diagrammtyp geäußert wurde. Für einen schnellen optischen Eindruck mag es passen – oder auch nicht. Der Mittelwert allein ist nur ein Aspekt einer Verteilung. Hier ein Beispiel:

require(ggplot2)
ggplot(daten) +
 aes(x = Geschlecht, y = Punkte, fill = Geschlecht) +
 stat_summary(aes(width = 0.8), geom = "bar", fun.y = "mean") +
 scale_x_discrete(name = "Geschlecht") + scale_y_continuous(name = "Punkte") + ggtitle("Mittelwerte nach Geschlecht")
Säulendiagramm: Mittelwerte
Säulendiagramm zum Vergleich zweier Mittelwerte: wenig informativ

Säulen- und Balkendiagramme für Mittelwerte: Viel Tinte, wenig Information

Erster Eindruck: Ein nur sehr geringfügiger Unterschied zwischen den beiden Geschlechtern. Vielleicht unterscheiden sich die Streuungen (vgl. den Beitrag Verteilungen vergleichen: Mittelwerte und Fallzahlen reichen (manchmal) nicht)? Nehmen wir die Standardabweichung als Streuungsmaß, so erhalten wir ein sog. Dynamite Plot – benannt nach einem Sprengstoffbehälter mit Zündschnur. (Manchmal werden Standardfehler statt der Standardabweichung dargestellt.)

ggplot(daten) +
 aes(x = Geschlecht, y = Punkte, fill = Geschlecht) +
 stat_summary(aes(width = 0.8), geom = "bar", fun.y = "mean") +
 stat_summary(fun.data = mean_sdl, fun.args = list(mult = 1), geom = "errorbar", width = 0.3) +
 scale_x_discrete(name = "Geschlecht") + scale_y_continuous(name = "Punkte") +
 ggtitle("Mittelwerte +/- SD nach Geschlecht")
 ggsave("Säule_MW-SD.png")
Säulendiagramm mit Mittelwerten und Standardabweichungen
Säulendiagramm mit Mittelwerten und Standardabweichungen („Dynamite Plot“)

Auch hier schneiden die beiden Geschlechtergruppen praktisch gleich ab. Können wir nun beruhigt die Ergebnisse publizieren?

Wesentlich informativer: Punktdiagramme

Sehen wir uns zum Vergleich ein Punktdiagramm an:

ggplot(daten) +
 aes(x = Geschlecht, y = Punkte, color = Geschlecht) +
 geom_jitter(position = position_jitter(0.4), size = 4) +
 stat_summary(fun.data = mean_sdl, fun.args = list(mult = 1), geom = "errorbar", width = 0.2,
 size = .75, color = "black") +
 stat_summary(fun.y=mean, colour="black", geom="point", shape=8, size=5) +
 scale_x_discrete(name = "Geschlecht") + scale_y_continuous(name = "Punkte") +
 annotate("text", x=1.5, y=5, size=4, label="* Mittelwert") +
ggtitle("Punktdiagramm +/- SD nach Geschlecht")
Punktdiagramm
Punktdiagramm: wesentlich informativer als Säulen- und Balkendiagramme; hier zusätzlich mit Mittelwert und Standardabweichung

Das Punktdiagramm (Dot Plot) ist wesentlich informativer, da es nicht nur aggregierte Werte, sondern Einzeldaten darstellt. Damit die Punkte sich nicht völlig überdecken, werden sie leicht versetzt dargestellt (“jitter”). Wir erfahren hier viel mehr über die Verteilung: In beiden Geschlechtergruppen gibt es jeweils etliche Personen, die um die 15 Punkte bzw. um die 45 Punkte-Marke liegen. Zudem sehen wir, dass die beiden “Cluster” der Männer homogener sind als die der Frauen. All das haben uns die Balkendiagramme nicht verraten.

Punktdiagramme sind nach meiner Erfahrung recht selten anzutreffen. Wer Verteilungen genauer beschreiben möchte, greift häufig auf Boxplots zurück, an denen man verschiedene Kennzahlen ablesen kann: Neben dem Median auch die 25er- und 75er-Perzentile, den Interquartilabstand (IQR) sowie Ausreißer und Extremwerte. Mit R kann man auch zusätzlich den Mittelwert kennzeichnen. Wie schneidet in unserem Beispiel das Boxplot im Vergleich zum Punktdiagramm ab?

ggplot(daten) +
 aes(x = Geschlecht, y = Punkte, fill = Geschlecht) +
 geom_boxplot() +
 stat_summary(fun.y=mean, colour="black", geom="point", shape=8, size=5) +
 scale_x_discrete(name = "Geschlecht") + scale_y_continuous(name = "Punkte") +
 annotate("text", x=1.5, y=5, size=4, label="* Mittelwert") +
 ggtitle("Boxplots nach Geschlecht")
Boxplot
Boxplot: Obwohl informativer als das Säulendiagramm, ist auch hier die zweigipflige Verteilung nicht erkennbar.

Gibt uns das Boxplot einen ebenso guten Überblick über die Verteilungen wie das Punktdiagramm? Ich meine nein: die zwei “Cluster” um 15 und 45 Punkte sind hier nicht ablesbar. Wir sehen lediglich etwas längere “Whisker” (Antennen) bei den Frauen.

Weder Boxplot noch Säulendiagramm machen die zweigipflige Verteilung erkennbar. Alternativen wären noch Dichteplots (Density Plots) oder Histogramme. Hier erkennt man die zwei Gipfel gut:

ggplot(daten) +
 aes(x = Punkte, fill = Geschlecht) +
 geom_histogram(bins = 25) +
 facet_wrap(~ Geschlecht) +
 scale_y_continuous(name = "Punkte") + ggtitle("Histogramm")
Histogramm
Histogramme zeigen bei beiden Geschlechtern zwei „Gipfel“

Fazit: Punktdiagramm informativer; Verteilungen beachten!

Ich gebe gern zu, dass die Artikelüberschrift etwas provokant zugespitzt wurde. Die hier verwendeten konstruierten Daten zeigen, dass Säulen- und Balkendiagramme für Mittelwerte auch dann wesentliche Informationen verdecken, wenn man die Streuung (hier: Standardabweichung) beachtet.

Im hier betrachteten Spezialfall von zweigipfligen Verteilungen schneiden Boxplots nur unwesentlich besser ab. Es empfiehlt sich, Daten gründlich zu untersuchen, bevor man sich für eine Darstellungsweise entscheidet. Punktdiagramme stellen eine noch selten anzutreffende, sehr informative Alternative dar, die auch statistischen Laien intuitiv zugänglich ist, da Originalwerte und nicht statistische Kennzahlen abgebildet werden. Histogramme können die Zweigipfligkeit ebenfalls darstellen, sind aber durch die Zusammenfassung der Einzeldaten in Klassen nicht ganz so direkt zugänglich, zudem ergeben sich je nach gewählter Klassenbreite zum Teil recht unterschiedliche Bilder.

Die Diagramme wurden mit R und dem ggplot2-Paket erstellt.

Gern unterstütze ich Sie mit Visualisierungen statistischer Daten für Firmen- und Vereinsberichte sowie Abschlussarbeiten.

SPSS - Das "A" fehlt nicht umsonst

Freue mich über Kommentare!