Die Arbeit mit Daten in R erfordert oft eine systematische und effiziente Methode zur Manipulation von Datensätzen. Hierbei spielen insbesondere die Pakete dplyr und lubridate eine zentrale Rolle. Sie ermöglichen es, komplexe Datenmanipulationen einfach und übersichtlich durchzuführen, was besonders für die Analyse von großen Datensätzen wie denen aus der New Yorker Fahrradverleihstatistik von Bedeutung ist. Ein zentrales Konzept in dplyr ist der sogenannte Pipe-Operator (|>), der es ermöglicht, mehrere Funktionen in einer Reihe zu verknüpfen und dadurch den Code sowohl leserlicher als auch einfacher verständlich zu gestalten.
Der Pipe-Operator dient dazu, die Ausgabe einer Funktion direkt als Eingabe für die nächste Funktion zu verwenden. Dies ermöglicht es, Code in einer klaren und fließenden Weise zu strukturieren, ohne Zwischenergebnisse explizit speichern zu müssen. Die Reihenfolge, in der Funktionen angewendet werden, wird durch die Verkettung der Funktionsaufrufe bestimmt, was die Lesbarkeit verbessert und die Wartung des Codes vereinfacht. Ein typisches Beispiel ist die Kombination von group_by(), summarise() und arrange(), die zusammen eine effiziente Methode bieten, um zusammengefasste Statistiken zu berechnen und die Ergebnisse in einer bestimmten Reihenfolge darzustellen.
Ein einfaches Beispiel aus der Fahrradverleihdatenbank von New York zeigt, wie der count()-Befehl in Kombination mit anderen dplyr-Funktionen verwendet wird, um die Anzahl der Fahrten pro Benutzertyp zu zählen und zu ordnen. In dem folgenden Codebeispiel wird der Pipe-Operator verwendet, um eine Reihe von Funktionen zu verbinden, die zuerst die Daten gruppieren, dann die Anzahl der Fahrten pro Gruppe zählen und die Ergebnisse nach der Häufigkeit der Fahrten sortieren:
Das Ergebnis zeigt eine übersichtliche Tabelle der Anzahl der Fahrten je nach Benutzertyp (Kunde vs. Abonnent), wobei die Werte nach der Anzahl der Fahrten in absteigender Reihenfolge sortiert sind. Eine detailliertere Analyse könnte jedoch auch andere Zusammenfassungsstatistiken wie den Durchschnitt, die Standardabweichung oder die Extremwerte für die Fahrtdauer beinhalten. Dazu kann der summarise()-Befehl verwendet werden, der eine Vielzahl von Aggregationsfunktionen ermöglicht, wie etwa mean(), median() und sd(), um zentrale Tendenzen und Streuungen der Daten zu berechnen.
Das folgende Beispiel zeigt, wie man die durchschnittliche Fahrtdauer pro Benutzertyp berechnet:
Durch die Nutzung von mutate() wird die Fahrtdauer von Sekunden auf Minuten umgerechnet, und anschließend werden verschiedene aggregierte Statistiken berechnet und nach der Anzahl der Fahrten sortiert. Dieses Vorgehen hilft dabei, eine detaillierte Übersicht über die Fahrtdauer und ihre Verteilung für unterschiedliche Benutzertypen zu erhalten.
Die Arbeit mit Zeitstempeln stellt eine weitere Herausforderung dar, die durch das Paket lubridate erleichtert wird. Dieses Paket bietet eine Vielzahl von Funktionen zur Manipulation von Datums- und Uhrzeitwerten. Ein häufiges Szenario ist die Analyse von zeitabhängigen Daten, etwa die Häufigkeit von Fahrten zu verschiedenen Tageszeiten oder Wochentagen. Mit der wday()-Funktion von lubridate kann der Wochentag aus einem Zeitstempel extrahiert werden, um die Häufigkeit der Fahrten an verschiedenen Wochentagen zu analysieren. Der folgende Code zeigt, wie die Anzahl der Fahrten nach Uhrzeit und Wochentag gruppiert werden kann:
Durch die Anwendung von mutate() werden neue Variablen für den Wochentag und die Stunde des Tages erstellt, und anschließend werden die Daten gruppiert und gezählt. Diese Gruppierung ermöglicht es, ein detailliertes Bild des Fahrverhaltens zu unterschiedlichen Zeiten zu erhalten.
Der Pipe-Operator ermöglicht es, komplexe Datenoperationen auf elegante und nachvollziehbare Weise zu gestalten. Indem man jede Funktion in einer separaten Zeile anwendet und sie mit einem Pipe-Operator verbindet, bleibt der Code klar und leicht verständlich. Besonders bei der Arbeit mit großen Datensätzen, wie sie in der Fahrradverleihstatistik zu finden sind, ist dies von großem Vorteil. Es wird empfohlen, jede Zeile einzeln auszuführen und die Auswirkungen auf die Daten zu beobachten, um ein besseres Verständnis dafür zu entwickeln, wie sich jede Funktion auf den Datensatz auswirkt.
Eine zentrale Erkenntnis ist, dass die effektive Nutzung von dplyr nicht nur das Programmieren vereinfacht, sondern auch das Verständnis der zugrunde liegenden Daten fördert. Indem man sich mit den grundlegenden Funktionen wie group_by(), summarise(), count() und mutate() vertraut macht, kann man problemlos komplexe Datenanalysen durchführen und dabei einen klaren und strukturierten Code bewahren.
Wie visuelle Datenanalyse politische Wahlmuster veranschaulicht
Die Visualisierung von Wahldaten, insbesondere im Kontext der britischen Parlamentswahl 2019, stellt eine faszinierende Herausforderung dar, da sie eine Vielzahl von Konzepten und Prinzipien der Datenvisualisierung in einem realen Kontext vereint. Die Verwendung von Visualisierungstools wie ggplot2, die für die Umsetzung von markierten Grafiken und die Verwendung visueller Kanäle optimiert sind, ermöglicht eine präzise und eindrucksvolle Darstellung von Wahldaten und deren tiefere Analyse.
Ein wesentlicher Aspekt der Visualisierung dieser Wahldaten ist der Einsatz von „geom_sf()“, um die geographischen Grenzen der Wahlkreise darzustellen. Wahlkreise, die während der Wahl ihre politische Ausrichtung verändert haben (also „geflippt“ sind), können durch die Größe der Punkte im Diagramm besonders hervorgehoben werden. Die Größenkodierung wird dabei auf zwei Werte zensiert, was eine klare und übersichtliche Darstellung ermöglicht. Dies stellt sicher, dass Veränderungen in den Wahlkreisergebnissen auf einen Blick erkennbar sind, ohne dass der Betrachter sich in der Komplexität der Rohdaten verlieren muss.
Ein weiteres grundlegendes Werkzeug in dieser Visualisierung ist die „geom_spoke()“-Methode, die die Wahlprimitiven mit Hilfe von Winkellinien darstellt. Diese Primitiven helfen dabei, die Wahlergebnisse in einer dynamischen und präzisen Form darzustellen, indem sie zusätzlich die Dichte der Wählerstimmen in den verschiedenen Wahlkreisen zeigen. Durch die Wahl von „geom_spoke()“ wird die Darstellung der Wahldaten nicht nur intuitiver, sondern auch viel aussagekräftiger in Bezug auf die Verteilung und das Wahlergebnis.
Ein zentraler Punkt bei der Erstellung solcher Visualisierungen ist die Wahl der richtigen Skala und der Verwendungszweck der Kodierungen. In diesem Fall zeigt sich die Bedeutung der Nutzung von „scale_fill_manual()“ und „scale_colour_manual()“ für die Zuweisung der spezifischen Partei-Farben, die es dem Betrachter ermöglichen, das Wahlverhalten auf jeder Ebene – vom Wahllokal bis zum landesweiten Ergebnis – direkt zu erfassen. Hierbei wird jede Partei mit einer bestimmten Farbe und Größe kodiert, sodass auch subtile Änderungen, wie die Verschiebung von Stimmen zwischen Parteien, sichtbar gemacht werden.
In der Datenvorbereitung müssen spezifische Schritte beachtet werden, wie etwa das Filtern von Daten (beispielsweise das Entfernen von Wahlkreisen wie „S14000051“), das Berechnen von Abweichungen in den Wahlzahlen und das Umformen der Daten mittels „pivot_longer()“, um eine geeignete Struktur für die Visualisierung zu schaffen. Dies wird häufig durch sogenannte „mutate()“-Befehle unterstützt, die es erlauben, neue Variablen zu erstellen und bestehende Daten zu transformieren, um eine genauere Analyse zu ermöglichen.
Ein besonders anspruchsvoller Schritt in der Erstellung der Visualisierung ist die Erzeugung der „point_votes“-Daten, die durch die Verwendung von „uncount()“ und einer Vielzahl von Transformationen zur Definition der Wahlpunkte führt. Dies erfolgt durch die Gruppierung der Daten nach Wahlkreis-ID und der Berechnung von „votes_dot“ (den Stimmen, die für jede Partei abgegeben wurden), die als Grundlage für die Punktdichte dienen. Diese Punkte werden innerhalb der geographischen Umrisse der Wahlkreise („cons_outline“) verteilt und dann auf der Karte dargestellt.
Die Visualisierung endet schließlich mit einem klaren und übersichtlichen Design, das es dem Betrachter ermöglicht, die Verteilung der Stimmen und deren Veränderungen zwischen den Parteien schnell zu erfassen. In einer solchen Visualisierung wird nicht nur die Wahlbeteiligung und die Verteilung der Stimmen veranschaulicht, sondern auch eine tiefere Einsicht in die politischen Verschiebungen auf Wahlkreisebene gegeben.
Darüber hinaus ist es wichtig zu betonen, dass die Wahl von Visualisierungsmethoden und -techniken immer eine bewusste Entscheidung ist. Die Wahl der richtigen Markierungen, Skalierungen und Farben beeinflusst nicht nur die Ästhetik der Darstellung, sondern auch die Art und Weise, wie die Daten wahrgenommen und interpretiert werden. Erfolgreiche Visualisierungen müssen die Strukturen und Zusammenhänge der Daten auf eine Weise aufzeigen, die auf anderen Wegen schwer zu erreichen wäre. In diesem Fall zeigt die Dot Density Map der britischen Wahl von 2019 nicht nur die geographische Verteilung der Wahlergebnisse, sondern auch die Wahlbewegungen und -verschiebungen innerhalb des Landes. Dies verdeutlicht die Macht von Visualisierungstechniken in der Datenanalyse und wie sie dazu beitragen können, politische Prozesse und Trends besser zu verstehen.
Es ist unerlässlich, beim Entwurf von Visualisierungen nicht nur auf die Darstellung der Daten zu achten, sondern auch auf deren Kontext und Relevanz. Politische Daten sind nie neutral, und jede Entscheidung bei der Visualisierung kann unterschiedliche Interpretationen hervorrufen. Dies betrifft sowohl die Auswahl der Darstellungsmethoden als auch die Art der Codierung von Informationen. Eine erfolgreiche Visualisierung zeigt nicht nur Fakten, sondern trägt auch zur Begründung oder Hinterfragung von Annahmen und politischen Hypothesen bei.
Wie lassen sich komplexe raumzeitliche Muster mit Gridmaps visualisieren und analysieren?
Gridmaps bieten eine leistungsstarke Methode zur Visualisierung und Analyse geografischer Netzwerke, insbesondere bei der Darstellung von Beziehungen zwischen realer und abstrahierter Raumstruktur. Die Funktion make_grid() erzeugt aus einem sf-Datenrahmen, der reale Geometrien enthält, ein entsprechendes Gitterraster. Dieses Raster besteht aus regelmäßig angeordneten Zellen mit eindeutigen Zeilen- und Spaltenkennungen (Ursprung unten links) sowie den geografischen Zentroiden jeder Zelle. Sobald dieses Gitter erstellt wurde, lässt es sich mit realen Geodaten – etwa Boroughs – zu einer einzigen sf-Struktur kombinieren, in der jede Rasterzelle einer realen geographischen Position entspricht.
Zur Visualisierung von Verschiebungsbewegungen zwischen realen und abstrahierten Orten werden Trajektorien konstruiert, die anhand von Ursprungs-, Ziel- und Kontrollpunkten berechnet werden. Die Umsetzung erfolgt mit get_trajectory() und die Darstellung über ggforce::geom_bezier(). Diese Technik erlaubt es, die Bewegung oder Verzerrung zwischen tatsächlichen geografischen Koordinaten und ihrer Rasterdarstellung anschaulich und zugleich analytisch exakt darzustellen. Die Kombination aus geom_sf() und geom_bezier() innerhalb des ggplot2-Frameworks schafft eine duale Kartendarstellung, bei der reale Geometrie und Rasterstruktur simultan abgebildet werden.
Sobald die Gitterpolygon-Datei (grid) mit den zugehörigen Zellpositionen (row, col) generiert ist, lässt sich das Gridmap direkt aus dem Polygon-Objekt visualisieren oder mittels facet_grid() weiter strukturieren. So entstehen Kartenlayouts, bei denen Rasterzellen bestimmte Kategorien oder Datenpunkte aggregieren – entweder rein rasterbasiert oder in einer Hybridform als „map-within-map“-Ansatz.
Für tiefergehende Analysen über Knotenpunkte – z. B. Londoner Boroughs – werden Häufigkeiten von Arbeitern (workers) und Arbeitsplätzen (jobs) aggregiert. Unterschieden wird dabei zwischen professionellen und nicht-professionellen Berufsklassen. Diese Zweiteilung erlaubt es, soziale und ökonomische Strukturen innerhalb der Stadt sichtbar zu machen: In der Peripherie dominieren nicht-professionelle Wohnorte, während zentrale Bezirke wie Westminster, Camden oder die City of London eine hohe Dichte an professionellen Arbeitsplätzen aufweisen. Die Darstellung erfolgt mittels proportionaler Symbole (Kreise), die am Zentroid der jeweiligen Rasterzelle platziert und nach Größe (Anzahl) sowie Farbe (Berufstyp) codiert sind. Dieses Codierungsschema basiert auf geom_point() für die Frequenzdarstellung und geom_sf() für die räumliche Grundstruktur.
Die Differenzierung über facet_grid() erlaubt eine gleichzeitige Betrachtung beider Dimensionen – Berufsklasse und Funktion (job/worker). Durch die vorherige Transformation der Variablen zu Faktoren wird eine definierte Ordnung in der grafischen Darstellung gewährleistet.
Gridmaps erlauben darüber hinaus die Integration komplexerer Diagrammformen. So zeigt eine Erweiterung der Methode mit ggplot2-Barplots innerhalb der Rasterzellen horizontale Balken, die Berufe nach Häufigkeit darstellen. Dabei stehen linksgerichtete Balken für Arbeiter, rechtsgerichtete für Jobs. Die Skalierung erfolgt jeweils relativ zur modalen Kategorie innerhalb eines Boroughs, wodurch lokale Unterschiede und strukturelle Besonderheiten plastisch hervortreten. Boroughs wie Westminster (job-dominant), Wandsworth (arbeitskräftereich) oder Hillingdon (selbstversorgend) lassen sich so differenziert vergleichen.
Die Verwendung von Gridmaps geht damit über reine Kartierung hinaus. Sie transformiert geografische Komplexität in reguläre visuelle Muster, die sich leichter vergleichen, analysieren und kommunizieren lassen. Die gleichmäßige Struktur des Rasters erlaubt eine formale Vergleichbarkeit von Bezirken, ohne auf die oft unregelmäßige Gestalt realer Geometrien Rücksicht nehmen zu müssen. Dies ist besonders bedeutsam in der urbanen Analyse, wo Informationsdichte, soziale Disparitäten und infrastrukturelle Dynamiken in engem räumlichem Zusammenhang stehen.
Zentral ist hierbei das Verständnis, dass eine abstrahierende Rasterung keine Informationsverzerrung, sondern eine gezielte Transformation darstellt. Die Gridmap ist kein Ersatz der Geografie, sondern ein methodischer Zugriff auf ihre Muster. Der Wechsel zwischen realer und abstrahierter Darstellung, zwischen Koordinatenpaaren und Zellindizes, erlaubt eine kontrollierte Perspektivverschiebung – visuell wie analytisch.
Die Anwendung solcher Rasterdarstellungen setzt jedoch voraus, dass der Leser mit den Implikationen dieser Abstraktion vertraut ist. Das Fehlen geographischer Merkmale wie Flüsse oder Grenzen kann zu einer scheinbaren Vereinfachung führen, die jedoch durch bewusste Codierungen (Farben, Symbole, Skalierung) kompensiert werden muss. Entscheidend ist, dass der analytische Gewinn aus der strukturellen Vergleichbarkeit der Rasterzellen bewusst eingesetzt wird, um Fragen der sozialen Ungleichheit, beruflichen Konzentration oder urbanen Mobilität differenziert zu beleuchten.
Wie man Unsicherheit in Datenvisualisierungen darstellt: Prinzipien und Techniken
Die Darstellung von Unsicherheit in Datenvisualisierungen stellt eine der größten Herausforderungen in der Kartografie und Informationsvisualisierung dar. Wie bereits in Kapitel 3 erörtert, besteht häufig eine Lücke zwischen der visuellen Codierung von Daten und deren Wahrnehmung. Standardisierte Datenvisualisierungen neigen dazu, Daten mit Markierungen zu versehen, die eine präzise Darstellung implizieren, obwohl diese Daten in Wirklichkeit eine gewisse Unsicherheit oder Variabilität aufweisen. Der Umgang mit Unsicherheit in der Visualisierung erfordert ein fundiertes Verständnis der visuellen Variablen, die verwendet werden können, um unterschiedliche Unsicherheitsgrade darzustellen, ohne dabei falsche Präzision zu suggerieren. In diesem Kapitel betrachten wir die Forschung in den Bereichen Kartografie und Informationsvisualisierung zur Darstellung von Unsicherheit und wenden einige Techniken an, um die Unsicherheit von Parametern zu visualisieren. Dies wird am Beispiel der STATS19-Daten zur Verkehrssicherheit und der Häufigkeit von schweren und tödlichen Verletzungen bei Fußgänger-Unfällen durchgeführt.
In der wissenschaftlichen Literatur zur Unsicherheitsvisualisierung wurde immer wieder betont, dass visuelle Variablen oder visuelle Kanäle, die Unsicherheit codieren, sowohl intuitiv als auch logisch in Bezug auf Präzision und Genauigkeit sein sollten. Ein gutes Beispiel für eine solche Unsicherheitsdarstellung ist die Visualisierung von Unsicherheit durch "Fuzziness" (Unschärfe) und "Sketchiness" (Skizzenhaftigkeit), die in der Forschung immer wieder als wirksame Mittel hervorgehoben wurden, um Unsicherheit zu vermitteln. Diese Variablen signalisieren dem Betrachter auf intuitive Weise, dass die dargestellten Informationen ungenau oder unsicher sind. Der Einsatz von unscharfen Linien oder einer skizzenhaften Darstellung ist dabei eine Möglichkeit, visuell darzustellen, dass die Informationen nur grob oder mit Unsicherheit zu verstehen sind. Das Ergebnis dieser Darstellungen ist eine klarere Kommunikation der Unsicherheit und eine präzisere Wahrnehmung der Daten. Besonders der Einsatz von Skizzenhaftigkeit, der in vielen Datenvisualisierungen als ein kreativer Ansatz hervorsticht, wird zunehmend als effektive Technik zur Visualisierung von Unsicherheit genutzt.
Eine wichtige Grundlage für die Unsicherheitsvisualisierung lautet: "Dinge, die ungenau sind, sollten nicht mit Symbolen codiert werden, die Präzision suggerieren." Dies ist eine zentrale Überlegung, die in der Forschung immer wieder betont wird. Wenn Unsicherheit visuell codiert wird, müssen die gewählten visuellen Elemente auf eine Weise gestaltet sein, dass sie die Unschärfe oder den Mangel an Präzision deutlich machen, ohne dabei eine falsche Genauigkeit zu vermitteln.
Ein weiteres Beispiel aus der Praxis der Unsicherheitsvisualisierung ist die Visualisierung von Hurrikan-Prognosen durch den Nationalen Wetterdienst der USA (NWS). Die von ihm verwendete "Cone"-Grafik zur Darstellung des Hurrikans zeigt eine konische Fläche, die den voraussichtlichen Pfad eines Sturms darstellt. Das Problem bei dieser Darstellung liegt jedoch in der implizierten Präzision: Der Cone suggeriert, dass der Sturm entlang einer klaren Linie zieht und die Außenbereiche des Kegels eine geringere Unsicherheit aufweisen. In Wirklichkeit ist jedoch die Unsicherheit am Rand des Kegels größer, da sich die Wahrscheinlichkeit eines Sturms mit zunehmender Entfernung von seinem aktuellen Standort erhöht. In der alternativen Visualisierung von Van Goethem et al. (2014) wird diese Problematik adressiert, indem Farbwerte zur Darstellung der Unsicherheit verwendet werden, wodurch eine visuell differenzierte Darstellung der Unsicherheit erzielt wird. Diese alternative Darstellung vermeidet eine zu starke Vereinfachung und zeigt, dass Unsicherheit nicht als harte Grenze, sondern als graduelle Wahrscheinlichkeit zu verstehen ist.
Neben der Wahl der visuellen Variablen gibt es auch eine weitere Dimension der Unsicherheitsdarstellung: das Konzept der Häufigkeit. In vielen Fällen geht es bei der Unsicherheit darum, Wahrscheinlichkeiten oder relative Häufigkeiten darzustellen, wie etwa die Wahrscheinlichkeit, dass ein bestimmtes Ereignis eintritt. Diese Häufigkeiten sind oft schwer zu begreifen, und daher können sie von Datenvisualisierungen effektiv unterstützt werden. Ein Beispiel hierfür ist die Analyse von Verkehrsunfalldaten aus dem STATS19-Datensatz, der unter anderem Informationen zu Fußgänger-Unfällen und den Schweregraden der Verletzungen enthält. Im Jahr 2019 betrugen die KSI- (Killed or Seriously Injured) Raten für Fußgängerunfälle in Bristol 15%, während sie in Sheffield bei 50% lagen. Diese Unterschiede sind auf den ersten Blick auffällig, aber sie sind schwer zu fassen, wenn sie einfach in Textform oder als Standard-Balkendiagramm dargestellt werden. Die Herausforderung besteht darin, diese Unterschiede visuell so zu codieren, dass der Betrachter die unterschiedlichen Wahrscheinlichkeiten richtig interpretieren kann, ohne dass eine ungenaue oder übermäßige Präzision suggeriert wird.
Für die praktische Anwendung dieser Prinzipien ist es entscheidend, zu verstehen, dass Unsicherheit nicht nur ein theoretisches Konzept ist, sondern auch einen direkten Einfluss auf die Art und Weise hat, wie wir Daten wahrnehmen und interpretieren. Die Fähigkeit, Unsicherheit in Visualisierungen korrekt darzustellen, ist entscheidend, um Missverständnisse und falsche Interpretationen zu vermeiden. In vielen Bereichen, sei es in der Wissenschaft, der Politik oder der Wirtschaft, müssen Entscheidungen auf der Grundlage von unsicheren Informationen getroffen werden. Eine klare und präzise Visualisierung der Unsicherheit trägt dazu bei, dass diese Entscheidungen informierter und fundierter getroffen werden können.
Die Verwendung von Farben, Skizzenhaftigkeit, Transparenz und anderen visuellen Variablen zur Darstellung von Unsicherheit bietet eine Möglichkeit, Unsicherheit auf eine Weise zu kommunizieren, die sowohl verständlich als auch nützlich ist. Doch es ist wichtig zu betonen, dass keine einzelne Technik oder visuelle Variable alle Unsicherheitsaspekte perfekt abdecken kann. Vielmehr ist es eine Kombination aus verschiedenen Methoden, die die beste Lösung für die jeweilige Visualisierungsaufgabe bietet. Es ist notwendig, sich der eigenen Interpretationen bewusst zu sein und Unsicherheitsdarstellungen nicht zu überfrachten, sondern die Visualisierung so zu gestalten, dass der Betrachter die Unsicherheit in den Daten nachvollziehen kann, ohne von unnötigen Details abgelenkt zu werden.

Deutsch
Francais
Nederlands
Svenska
Norsk
Dansk
Suomi
Espanol
Italiano
Portugues
Magyar
Polski
Cestina
Русский