R ist auf dem Vormarsch

CC-BY-SA 4.0 von Joshua Kunst
CC-BY-SA 4.0 von Joshua Kunst

Auf Stackoverflow ist R die am schnellsten wachsende Programmiersprache, und Microsoft hat eine Microsoft-R-Server-Produktfamilie an den Start gebracht. Ein Klick auf den ersten Link (zu diesem Posting von Joshua Kunst) zeigt übrigens eindrucksvoll, was man mit R alles anfangen kann. Stöbern im Blog lohnt sich, da gibt es fantastische Visualisierungen zu entdecken.

Was ist ein Beeswarm-Plot?

Neben den Boxplots und Violinplots gibt es noch zahlreiche bis zahllose andere Visualisierungen. Kürzlich bin ich (wieder besten Dank an Holger) über Beeswarm-Plots 1) Aron Eklund 2015. beeswarm: The Bee Swarm Plot, an Alternative to Stripchart. URL: http://CRAN.R-project.org/package=beeswarm. gestolpert. Auch hiermit lassen sich Verteilungen darstellen.

# Pakete laden
library(ggplot2)
library(beeswarm)
 
# Daten aus CSV-Datei einlesen
apc

Das Skript wurde nun ein bißchen erweitert. Zuerst einmal musste ein weiteres Paket geladen werden, die Beeswarm-Library. Damit lassen sich Verteilungen sehr gut darstellen, sofern der Datensatz nicht allzu groß ist. Bei unserem Testdatensatz, den APCs der Uni Hannover, funktioniert das richtig gut:

Ergebnis:

Verteilung der APCs (Uni Hannover) nach Jahren
Verteilung der APCs (Uni Hannover) nach Jahren
Wie vorher, nur zusätzlich mit Boxplot
Wie vorher, nur zusätzlich mit Boxplot

Durch die Darstellung der einzelnen “Bienen” wird deutlich klarer, wie die Verteilung tatsächlich ist, da nicht nur ein ganzer Bereich für die jeweiligen Quartile abgesteckt wird. Die Menge der sinnvoll darzustellenden Punkte ist aber deutlich begrenzt. Versucht man, die Einwohnerzahlen von einigen Tausend Städten darzustellen, hat man im Ergebnis einen bunten Klecks, der letztendlich sehr stark einem unregelmäßig umrandeten Violinplot ähnelt.

Disclaimer: Dies ist eine äußerst laienhafte Erklärung!

References   [ + ]

1. Aron Eklund 2015. beeswarm: The Bee Swarm Plot, an Alternative to Stripchart. URL: http://CRAN.R-project.org/package=beeswarm.

Was ist ein Violin-Plot?

Der Violin-Plot (gibt es eine deutsche Bezeichnung? Violinen-Diagramm?) ist eine Weiterentwicklung des Boxplots. Er wurde 1998 vorgestellt 1) Hintze, Jerry L. & Nelson, Ray D. 1998. Violin Plots: A Box Plot-Density Trace Synergism. The American Statistician 52(2), 181–184. DOI: 10.1080/00031305.1998.10480559
Besten Dank an Holger für den Hinweis!
und soll die Visualisierung der Verteilungen verbessern. Das Boxplot-Skript kann man durch Ersetzung einer einzigen Funktion in ein Violinplot-Skript verwandeln:

# Pakete laden
library(ggplot2)
 
# Daten aus CSV-Datei einlesen
apc <- read.csv('https://raw.githubusercontent.com/OpenAPC/openapc-de/master/data/apc_de.csv',
         encoding = "UTF-8",
         sep=",", header = TRUE)
 
# Daten auswählen
apc <- apc[, c("Institution", "EURO", "Period")] # Nur noch drei Spalten
apc <- apc[apc$Institution == "Hannover U", ] # Nur noch Uni Hannover
 
# Boxplot erstellen 
box <- ggplot(apc, aes(x = Institution, y = EURO))
box <- box + geom_boxplot()
box # Ausgabe
 
# Violinen-Plot erstellen
vio <- ggplot(apc, aes(x = Institution, y = EURO))
vio <- vio + geom_violin()
vio # Ausgabe

Ich habe den Boxplot zur besseren Vergleichbarkeit im Skript belassen.

Ergebnis:

Beispiel für einen Violinplot
Beispiel für einen Violinplot

Aus der englischen Wikipedia:

The violin plot is similar to box plots, except that they also show the probability density of the data at different values (in the simplest case this could be a histogram). Typically violin plots will include a marker for the median of the data and a box indicating the interquartile range, as in standard box plots. Overlaid on this box plot is a kernel density estimation.

Dieses war der zweite Plot, und der nächste folgt sofott.

Disclaimer: Dies ist eine äußerst laienhafte Erklärung!

References   [ + ]

1. Hintze, Jerry L. & Nelson, Ray D. 1998. Violin Plots: A Box Plot-Density Trace Synergism. The American Statistician 52(2), 181–184. DOI: 10.1080/00031305.1998.10480559
Besten Dank an Holger für den Hinweis!

Was ist ein Boxplot?

Kürzlich fragte ich auf Twitter, ob man in bibliothekarischen Publikationen erklären müsse, was Boxplots sind, wenn man sie zur Visualisierung von Daten verwenden möchte. Tenor: Eher ja.

Eigentlich sind Boxplots nicht sonderlich kompliziert. Mit Boxplots kann man Verteilungen in Daten visualisieren. Nehmen wir – als einfaches und leicht nachzuvollziehendes Beispiel – die APCs (“Article processing charge”), die im Open-APC-Projekt gesammelt werden.

Die Beispiele hier sind mit R erstellt und relativ leicht nachvollziehbar. Einfach R (und unbedingt RStudio!) installieren und einfach ausprobieren. Es ist nicht so schwer, wie es zuerst aussieht. Und es gibt Unmengen an Tutorials und Büchern zu R. Und vor allem Stackoverflow.

Also: RStudio starten, die hier verwendeten Pakete installieren und dann folgendes Skript eingeben:

# Pakete laden
library(ggplot2)
 
# Daten aus CSV-Datei einlesen
apc <- read.csv('https://raw.githubusercontent.com/OpenAPC/openapc-de/master/data/apc_de.csv',
         encoding = "UTF-8",
         sep=",", header = TRUE)
 
# Daten auswählen
apc <- apc[, c("Institution", "EURO", "Period")] # Nur noch drei Spalten
apc <- apc[apc$Institution == "Hannover U", ] # Nur noch Uni Hannover
 
# Boxplot erstellen 
box <- ggplot(apc, aes(x = Institution, y = EURO))
box <- box + geom_boxplot()
box # Ausgabe

Der Boxplot sieht dann folgendermaßen aus:

Boxplot-Beispiel
Beispielboxplot mit den APCs der Universität Hannover

Erklärung:
X-Achse = Institution; Y-Achse = Höhe der APC in Euro. Was bedeutet jetzt dieses komische Kästchen mit den Strichen und Punkten? Ganz einfach:

Die Box entspricht dem Bereich, in dem die mittleren 50 % der Daten liegen. Sie wird also durch das obere und das untere Quartil begrenzt […]. Dieser ist ein Maß der Streuung der Daten, welches durch die Differenz des oberen und unteren Quartils bestimmt wird. Des Weiteren wird der Median als durchgehender Strich in der Box eingezeichnet. Dieser Strich teilt das gesamte Diagramm in zwei Hälften, in denen jeweils 50 % der Daten liegen.

Die “Antennen” (oder “Whisker”) auf und unter der Box stehen für die oberen und unteren 25 %. Ausreißer werden durch einzelne Punkte gekennzeichnet. In diesem Fall gibt es zwei Ausreißer zum unteren Ende.

Soviel erst einmal dazu. Es gibt noch viele andere Visualisierungsmöglichkeiten, von denen ich hier demnächst noch einige vorstellen möchte.

Disclaimer: Dies ist eine äußerst laienhafte Erklärung!

R-Einführung in c't und anderswo

Ich verweise hier seit ein paar Jahren immer mal wieder auf R. R ist (laut Wikipedia) eine freie Programmiersprache für statistisches Rechnen und statistische Grafiken. R sieht auf den ersten Blick ein wenig abschreckend aus. Aber es existieren sehr, sehr viele Tutorials und Einführungen für Ein- und Umsteiger mit jeden denkbaren Vorkenntnissen.

In der aktuellen c’t (Heft 3/2014, S. 182-187) wurde eine Artikelserie begonnen, in der Andreas Krause in R einführt. Zielgruppe sind Programmierer. Eine andere Einführung, die ich sehr empfehlen kann, ist als RRZN-Handbuch erschienen. Das RRZN heißt zwar jetzt LUIS, die Handbücher werden aber zumindest bis jetzt unter altem Namen vertrieben. Und auf Coursera hat kürzlich wieder der Kurs Computing for Data Analysis begonnen, in dem R-Grundlagen vermittelt werden.