data > opinion

Tom Alby

11 Datenvisualisierung

2021-05-02


## ── Attaching packages ─────────────────────────────────────── tidyverse 1.3.0 ──
## ✓ ggplot2 3.3.3     ✓ purrr   0.3.4
## ✓ tibble  3.1.0     ✓ dplyr   1.0.5
## ✓ tidyr   1.1.3     ✓ stringr 1.4.0
## ✓ readr   1.4.0     ✓ forcats 0.5.1
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## x dplyr::filter() masks stats::filter()
## x dplyr::lag()    masks stats::lag()

Grundsätzliche Gedanken zur Datenvisualisierung

Viele Programme bieten Werkzeuge zur Erstellung von Grafiken an, das bedeutet aber nicht, dass eine sinnvolle Datenvisualisierung erfolgt. Eine Grafik soll den Betrachter dabei unterstützen, einen Sachverhalt zu verstehen:

The greatest value of a picture is when it forces us to notice what we never expected to see. (John Tukey)

Sie ist also kein schmückendes Beiwert, sondern muss einen Mehrwert gegenüber dem reinen Text bieten. Dazu muss zunächst die richtige Visualisierungsform ausgewählt werden. Diese unterscheiden sich je nach Intention:

Visualisierung einer Verteilung

Histogramm

Histogramme wurden schon in mehreren Abschnitten behandelt; mit ihnen wird die Häufigkeitsverteilung einer Variablen visualisiert.

Boxplot

Boxplots sind eine weitere Darstellung einer Verteilung. Da mehrere Boxplots nebeneinander dargestellt werden können, ist es auch möglich, mehr als nur die Verteilung einer Variable zu plotten.

In einem Boxplot werden die mittleren 50% einer Datenreihe in einer Box repräsentiert (Interquartilsabstand), der Median wird als schwarzer Querstrich in der Box angezeigt. Ausreißer werden überlicherweise außerhalb der Antennen geplottet, die mehr als 1,5 Interquartilsabstände von der Box entfernt sind.

corona_hamburg <- read_csv("data/corona-hamburg.csv", 
    col_types = cols(`Inzidenz jemals` = col_integer(), 
        `Summe jemals` = col_integer(), Einwohner = col_integer()))
boxplot(corona_hamburg$`Inzidenz jemals`)

Visualisierung eines Vergleichs

Zwischen Werten

Bar Chart

Säulendiagramm

Über einen Zeitraum

Liniendiagramm

Visualisierung einer Beziehung

Streudiagramm

Bubble Chart

Visualisierung einer Zusammensetzung

Statische Zusammensetzung

Tortendiagramm

Ein Tortendiagramm wird häufig verwendet, um bei einer statischen Zusammensetzung die jeweiligen Anteile zu visualisieren. Allerdings sind Tortendiagramme mit Vorsicht zu genießen.

Ein zweites Beispiel, wie es nicht gemacht werden sollte:

Wasserfalldiagramm

Zusammensetzung über eine Zeitreihe

Stacked 100% Column Chart

Interaktive Visualisierungen mit Shiny

Interaktive Web-Applikationen erstellen mit Shiny

Daten-Visualisierungen und ML-Modelle können über interaktive Dashboards zur Verfügung gestellt werden. Shiny ist eine Erweiterung zu R, die in einem Package zur Verfügung gestellt wird. Hier können mit sehr geringem Aufwand HTML-Seiten erstellt werden, die je nach Eingaben verschiedene Ausgaben ermöglichen.

Jede Shiny-Applikation besteht aus zwei Teilen

  • einem User Interface
  • einem Server

Der Input, der in das User Interface eingegeben wird, ist der Input für den Server, die Berechnungsergebnisse des Servers, sein Output, ist wiederum im User Interface zu sehen. Man kann den Code einer Shiny-App also nicht einfach von unten nach unten lesen.

Beide Teile können in einer Datei vorhanden sein, die dann als App.R in einem Verzeichnis abgespeichert wird, meistens ShinyApps auf einem RStudio Server. Zum Testen reicht die Datei App.R aber im Arbeitsverzeichnis. Dateien, die dazu benötigt werdenn, sollten immer in relativen und nicht absoluten Pfaden eingebunden werden. Unter Windows kann es generell Probleme mit den Pfaden geben. Manche Studierende hatten Erfolg mit zwei Backslashes in Pfaden. Da auf dem Shiny-Server in der Regel keine Windows-Nomenklatur vorhanden ist, laufen diese aber eh ins Leere.

Um ein Machine Learning-Modell in einer Applikation nutzen zu können, muss dieses zunächst gespeichert und dann in der Applikation geladen werden. Dies kann zum Beispiel mit readRDS geschehen; allerdings funktioniert das nicht unbedingt bei jedem Modell. Die Dokumentation und Stack Overflow helfen hier weiter :)

Um ein Modell dann in einer Applikation zu nutzen, ist es notwendig dafür zu sorgen, dass die Variablen, die dem Modell übergeben werden, dieselben Namen und auch dieselben Datentypen haben.

Bereitstellen auf einem Shiny Server

RStudio bietet eine einfache Möglichkeit, Shiny-Applikationen bereitzustellen. Hierzu muss ein Account auf shinyapps.io eingerichtet werden. Im RStudio-Interface wird dann der Account anhand des Secret Tokens konfiguriert. Dann muss nur noch auf den Publish to Server-Button geklickt werden, um die Applkation zu veröffentlichen:

Es ist wichtig, dass nicht nur die Datei App.R, sondern auch alle benötigten Daten wie Modelle auch mit hochgeladen werden.