Blick in die Werkzeugkiste: Offene Daten in R – Teil 1

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.

Aufgeräumt und anpassbar: Die Oberfläche von RStudio

Aufgeräumt und anpassbar: Die Oberfläche von RStudio

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.

Nicht ideal: "0" statt Nodata bzw. fehlendem Wert

Nicht ideal: „0“ statt Nodata bzw. fehlendem Wert

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:

Einfacher Aufruf: Karten in R mit ggmap

Einfacher Aufruf: Basiskarte mit Punktdaten in R mit ggmap

Das Resultat eines nur wenig komplexeren Aufrufs sieht dann so aus:

Fehlerhafte Messungen pro Zählstelle

Fehlerhafte Messungen pro Zählstelle

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.

Anzahl gültige Messungen pro Station pro Monat: Stationen haben sehr unterschiedliche Laufzeiten

Anzahl gültige Messungen pro Station pro Monat: Stationen haben sehr unterschiedliche Laufzeiten

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:

Saisonale Muster: An manchen Zählstellen gibt es mehr „Gförli“ als an anderen

Teil 2 dieses Blicks in die Werkzeugkiste folgt in den nächsten Wochen.


Unterdessen möchte ich noch auf das GeoBeer #6 vom 20. März in Lausanne hinweisen. Wir freuen uns auf zahlreiche Gäste! Mehr Informationen und der Link zur (kostenlosen) Anmeldung finden sich wie immer auf der GeoBeer-Website.

Ralph Straumann

Ralph Straumann

Ralph Straumann (Dr. sc. nat.) hat an der Universität Zürich Geographie mit Vertiefung in GIS, Wirtschaftsgeographie und Politologie studiert.

Seit 2010 arbeitet er im Tätigkeitsfeld Systemberatung + Analytik von EBP Informatik als Senior Consultant.

Er berät Kunden bei strategischen Fragen, zu Geschäftsprozessen und Organisation sowie bezüglich Quellen, Modellierung, Workflows und Analyse mit verschiedenartigen Daten im Schnittbereich zwischen IT/GIS und Anwendungsfeldern wie Verkehr und Raumplanung.

Mail: ralph.straumann@ebp.ch

Ralph Straumann auf:

Das könnte dich auch interessieren...

7 Antworten

  1. 1. April 2014

    […] I forgot to mention my blog post on R and open data (albeit in German), the second part of which is due to be published these days. And probably I […]

  2. 7. Oktober 2014

    […] been explored by my esteemed colleague Dr. Ralph Straumann using R in a series of blog posts: Teil 1, Teil 2, Teil 3. We’re not going to go into as much detail here, but let’s see how […]

  3. 25. Mai 2015

    […] more information on this topic check these blog posts (1, 2, […]

  4. 30. Mai 2015

    […] For more information on the data set and this topic check these blog posts (1, 2, […]

  5. 9. Oktober 2015

    […] Woche habe ich den ersten Teil dieses Blogposts veröffentlicht, in dem ich einige einfache Visualisierungsmöglichkeiten der Statistiksoftware […]

  6. 9. Oktober 2015

    […] ersten Teil dieser Miniserie über R habe ich einfache Standard-Visualisierungen vorgestellt und Tipps zu Entwicklungsumgebungen […]

  7. 14. April 2016

    […] verschiedentlich (teilweise) mit R erarbeitete Analysen und Visualisierungen gezeigt: etwa meine dreiteilige Serie über die Analyse von Velozähldaten mit R und Bence Tasnádys und Nadine Riesers unterhaltsamer […]

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.