R?
Mit dem Satz „R ist ein freier Dialekt von S“ kann man immer wieder für Verwirrung sorgen; aber es stimmt: Die Statistiksoftware R implementiert eine freie Variante von S, welches zum Beispiel im kommerziellen Produkt S-PLUS enthalten ist (Man stelle sich nur vor, welche Kunststücke Google und Co. wohl vollführen müssen, damit man auf der Suche nach R-Ressourcen fündig wird; das klappt mittlerweile aber sehr gut. Fürs Twittern empfiehlt sich übrigens der Hashtag #rstats.). Neben den zahlreichen gängigen und auch exotischeren GIS-Programmen verwenden wir für die Datenanalyse zum Beispiel im Business Intelligence-Bereich eben auch R.
R erfreut sich grosser und steigender Beliebtheit in den Bereichen Statistik, Big Data und Data Mining. Das SwarmLab am New Jersey Institute for Technology vergleicht aktuell in einer unterhaltenden Serie R mit Python (unserem zweiten ‚work horse‘ für die Analyse von Daten). Gerade wenn man Python kennt, kann diese Artikelreihe auch als kompakter Einblick in die Fähigkeiten von R dienen.
Visualisierungen in R
In diesem Blogpost möchte ich etwas auf die Visualisierungsfähigkeiten von R eingehen. Neben den sehr umfassenden Funktionalitäten in den Bereichen der Datenbearbeitung und -analyse hat sich R mittlerweile auch zu einem mächtigen Visualisierungswerkzeug gemausert. Ich werde dies anhand von offenen Daten der Stadt Zürich demonstrieren. Für die Visualisierungen verwende ich verschiedene R-Module, neben zahlreichen anderen etwa ggplot2 und ggmap. Als Entwicklungsumgebung empfehle ich übrigens RStudio, aber es gibt diverse andere Optionen.
Fallstudie: Velozähldaten
Ich habe für meine Fallstudie die Daten der permanenten städtischen Velozählstellen heruntergeladen. Dank dem übersichtlichen Portal der Stadt Zürich waren die Daten schnell gefunden. Hier möchte ich auch erwähnen, dass Marco Sieber und sein Team via Twitter Fragen zu den städtischen Datenbeständen stets sehr schnell und umfassend beantworten – ein grosses Lob an das Open Data-Team für diese Initiative!
Das Messnetz der Stadt Zürich umfasst 11 Stationen, von denen 10 den Veloverkehr in zwei Richtungen erfassen. Zusätzlich zu den stündlichen Messwerten von 2009-2013 kann man vom Portal der Stadt auch einen Datensatz der Standorte der Zählstellen beziehen. Es ist ein leichtes, die Daten im CSV-Format in R einzulesen und mittels Merge einen Join der Geodaten an die Attributdaten durchzuführen. Swisstopo stellt freundlicherweise sogar ein kleines R-Modul für die Projektion von Schweizer Landeskoordinaten in das international gebräuchliche WGS 1984 zur Verfügung. Die Verarbeitung temporaler Daten ist in R einfach und umfassend möglich. Beispielsweise kann aus einem Zeitstempel einfach der jeweilige Wochentag abgeleitet werden, was praktisch ist um zum Beispiel Wochenrhythmen in Daten zu eruieren.
Meine Analyse begann mit einer Bestandsaufnahme der Daten aus fünf Jahren und ihrer Qualität. Eine Analyse der als fehlerhaft ausgewiesenen Messungen (zum Beispiel infolge Konfigurationsumstellungen, Wartung) zeigte leider, dass die Stadt bei solchen fehlerhaften Messungen nicht einen Nodata-Wert für die Anzahl gemessener Velos einfügt, sondern tatsächlich einen Wert von 0 setzt. Natürlich verzerrt solch ein Wert jegliche Statistik ziemlich drastisch, was einmal mehr den Nutzen und die Notwendigkeit von solchen Qualitätssicherungsschritten demonstriert.
Räumliche Visualisierungen
Mit ggmap kann ich den Anteil an fehlerhaften Messungen pro Station auch räumlich visualisieren. Hierzu können Basiskarten von Google Maps, Cloudmade (auch mit selbstdefinierten Styles), Stamen und OSM direkt aus R mit einer Zeile Code abgerufen und verwendet werden:
Das Resultat eines nur wenig komplexeren Aufrufs sieht dann so aus:
Natürlich ersetzt R kein vollumfängliches GIS. Aber die Fähigkeiten reichen allemal, um einfachere Kartenansichten zu generieren. Auch Small-Multiples-Darstellungen sind zum Beispiel einfach möglich (und im GIS etwas komplexer umzusetzen). Obige Karte verrät uns auf jeden Fall, dass die Zählstellen Sihlpromenade, Andreasstrasse (Oerlikon) und Mythenquai in der Negativwertung der Messunterbrüche obenaus schwingen.
Nicht-räumliche Darstellungen
Nachdem die insgesamt 2.8% fehlerhafter Messungen aus dem Datensatz herausgefiltert waren, konnte ich genauer den Datenumfang und die Güte beurteilen. Zum Beispiel zeigt die folgende Grafik, dass für verschiedene Messstationen und Monate unterschiedliche viele Messwerte vorliegen. Dies ist einerseits bedingt durch Ausfälle, aber auch dadurch, dass nicht alle Stationen gleichzeitig und zum Jahresbeginn in Betrieb genommen wurden. Die Station an der Langstrasse (LANG) ist zum Beispiel erst seit Juli 2013 operativ.
Ebendiese jüngste Station an der Langstrasse kommt bei der Anzahl vorbeifahrender Velos regelmässig auf Rekordwerte von bis maximal circa 600 Velos pro Stunde. Auf dem zweiten Platz rangiert die Station am Mythenquai, wo auch mal um die 450 Velos pro Stunde registriert werden.
In der Folge konzentrierte ich mich auf die Aufdeckung zeitlicher Muster. Beginnend beim saisonalen Rhythmus habe ich die mittlere Anzahl Velos pro Stunde in den Monaten Juli und Dezember verglichen. Durch die Verwendung des Julis (anstatt zum Beispiel dreier Sommermonate) konnte ich auch die Station an der Langstrasse in der Analyse weiterziehen. Der Vergleich der saisonalen Zählungen offenbart bei manchen Stationen doch ziemlich deutliche Unterschiede, welche auf den veränderten Pendlerverkehr (der harte Kern, der auch im Winter Velo fährt, ist halt doch nicht so gross) und sicherlich auch den Freizeitverkehr zurückzuführen sind:
Teil 2 dieses Blicks in die Werkzeugkiste folgt in den nächsten Wochen.
Entdecke mehr von digital.ebp.ch
Subscribe to get the latest posts sent to your email.
7 Gedanken zu „Blick in die Werkzeugkiste: Offene Daten in R – Teil 1“
Kommentare sind geschlossen.