Demo (Raum Heidelberg): http://wirvsvirus.lpk-server.de/

Disclaimer: Die Challenge "Handydaten" entspringt "Haustiere" (045). Nach Rücksprache mit Organisatoren lässt sich die Challenge priorisiert der Kategorie "Daten" (038) zuordnen.

"Die Deutsche Telekom stellt dem Robert-Koch-Institut Bewegungsdaten von Handynutzern zu Verfügung, um die Ausbreitung von Covid-19 zu verlangsamen." Die Forscher des RKI können somit Bewegungsströme abbilden, um [...] Prognosen über die Ausbreitung von Covid-19 zu berechnen.[1]

Abstract

Im Zuge des bundesweite Hackathon #WirVsVirus wollen wir unseren Beitrag zur Bekämpfung von Covid-19 leisten. Die Challenge "Handydaten" (038/045) stellt sich der Herausforderung notwendige und nicht-notwendige Menschenaufkommen anhand anonymisierter Handydaten zu unterscheiden um e. g. Problembezirke zu identifizieren. Wir stellen einen Prototyp vor, welcher genannte Cluster vereinheitlicht, identifiziert, visualisiert und als Ausgangspunkt für weitere Analysen (e. g. Korrelationsanalysen bezüglich Infektionsraten) oder weitere öffentliche Maßnahmen dient.

Inspiration

Das RKI approximiert, dass sich bis zu 70% der Bevölkerung mit Covid-19 infizieren wird. Mit vielen Dunkelziffern und einem exponentiellen Anstieg der Infektionen ist es essentiell Kontakt zwischen Menschen zu minimieren, um unser Gesundheitssystem zu entlasten.[2]

Menschenansammlungen stellen hierbei einen ersten Anhaltspunkt dar um e. g. Ausgangssperren gezielt durchzusetzen. Verstöße können beispielsweise kontrollierter und mit weniger Ressourcen geahndet werden. Notwendige Menschenaufkommen (e. g. Krankenhaus, Supermarkt) lassen sich leichter identifizieren. Dies dient als Grundlage um Kapazitäten aufzuteilen oder einen geregelteren Zugang zu steuern. Grundlegend kann eine Analyse sowohl statischer (als auch dynamischer) Geodaten sowohl behördlich dienen, als auch ziviler Aufklärung und Information.

Methoden

Analyse der Infrastrukturwerte

Wir teilen den betrachteten Bereich in Zellen auf. Anhand von OpenStreetMap Tags (inkl. entsprechende Keys) (amenity, shop, etc.) laden wir mit Overpass (Python API: overpy) benötigte Daten herunter (e. g. 'amenity'='hospital' oder 'shop'='supermarket').

Die Tag-Key-Werte sind in der Datei tagweights.csv kategorisch aufgelistet. Die Datei enthält auch eine Gewichtung (weight), die später bei der Berechnung des Infrastrukturwertes relevant ist. Dabei entspricht ein hoher Wert einem notwendigen beziehungsweise systemrelevanten Umfeld (e. g. Krankenhäuser oder Supermärkte). Ein niedriger Wert korreliert mit einem nicht notwendigen beziehungsweise nicht systemrelevanten Umfeld (e. g. Parks oder Bars), für die beispielsweise ein Nutzer vor allem bei erhöhten Menschenaufkommen gewarnt werden soll. Für die einzelnen Zellen bilden wir dabei eine aussagekräftige Summe der einzelnen Infrastrukturwerte.

Bei OpenStreetMap unterscheidet zwischen zwei Arten von Gebäuden (oder i. A. Orten):

  • Node (e. g. Parkbank): Einzelner Punkt; Mitte des Gebäudes (Ortes)
  • Way (e. g. Park): Liste von Punkten (Nodes); Umriss eines Gebäudes (Ortes)

Für einzelne Nodes können wir die entsprechende Gewichtung aus tagweights.csv auslesen und mittels geopandas.sjoin() einen Spatial Join durchführen. Dabei werden die Nodes als Koordinatenpaar einer Zelle zugeordnet. Somit wird das GeoDataFrame des Zellenrasters mit den korrespondierenden Punkten links gejoint. Wir können dann mit Pivottabellen die Summe der Gewichtungen für jede Zelle bilden und sie anschließend zusammenfassen.

Für Ways müssen die einzelnen Nodes sinnvoll berücksichtigt werden. Dazu formen wir Polygone aus den Ways und sjoinen diese abermals an das Raster. So stellen wir sicher, dass das Gebäude alle Zellen beeinflusst über die es sich erstreckt. Anschließend gehen wir analog zu den Nodes vor. Zukünftig könnte die Gewichtung optimiert werden, beispielsweise anhand einer flächeninhaltsabhängigen Evaluation.

Beide Infrastrukturwerte werden summiert und zwischen null und zwei normalisiert. Es resultiert der finale Infrastrukturwert.

Analyse der Personendaten

Für die Analyse der Personendaten zählen wir die Anzahl der Personen in einer Zelle und ziehen von der Summe ein Grundrauschen (Noise) ab, welches Echtdaten potentiell enthalten. Das Grundrauschen beschreibt e. g. Messungen von Zeitpunkten in denen sich Personen (vorwiegend) Zuhause befinden. Die Werte werden dabei bei 1 abgeschnitten.

Diese Daten können wir dann mit folgender Formel

in ein Maß der unnotwendigen Bewegung umgerechnet werden, dass wir nun als Shape-Datei exportieren können. pop entspricht dabei das durch die Personandaten analysierte bereinigte Aufkommen. infra enspricht dem jeweiligen Infrastrukturwert. Diese Datei kann anschließend in einem kompatiblen Programm(e. g. QGis oder Webapps) betrachtet und analysiert werden.

Verwendung des Prototyps

Im Moment kann der Prototyp auf Github praktisch mit python3 und den Modulen overpy, numpy, geopandas, rtree ausgeführt werden. Dem Programm wird die Shape-Datei des Rasters, die tagweight.csv -Tabelle und die Shape-Dateien der Punkte (ohne und mit Noise) übergeben. (Für Einzelheiten siehe Github)

Probleme

Eine essentielle Ressource für eine sinnvolle Bearbeitung der Challenge stellen die zu analysierenden Bewegungsdaten dar. Ein Teil unseres Teams verbrachte 1.5 Tage des Hackathons mit der Suche eines geeigneten Datensatzes. Trotz großer Bemühungen konnten wir kurzfristig weder Daten der Telekom erlangen, noch einen Zugriff auf die Twitter-API. Geeignete Datensätze fanden wir nicht. Explizit bedanken wir uns erneut bei Johannes Müller, welcher uns Kontakt zum Telekom-Vorstand verschuf, sowie bei Mark Kibanov für gute Ratschläge. Dieser Rückschlag kostete uns "teure" Entwicklungszeit (insbesondere, da wir unvorbereitet den Hackathon antraten). Wir entschlossen uns nicht aufzugeben. Unser Prototyp verwendet stattdessen realitätsnahe Mock-Daten.

Ausblick

Weitere Ansätze und Ideen beinhalten die Analyse von Twitter-Hashtags. Dies ermöglicht eine zusätzliche anonymisierte, aber reiche Informationsquelle um bereits bestehende Daten zu erweitern. Auch kann man sich deutliche komplexere Mechanismen (e. g. Einsatz verschiedener Machine Learning-Techniken) vorstellen um beispielsweise Bewegungsströme über einen längeren Zeitraum zu klassifizieren. In jedem Fall sei aber auf ausreichende Anonymisierung zu achten um Datenschutz zu gewährleisten.

Fazit

Unser vorgestellter Ansatz kann beliebig skaliert und auf andere Daten angepasst werden. Er dient als Grundlage und Baustein für eine komplexere Identifikation, Analyse und Visualisierung von relevanten Menschenaufkommen. Je nach Einsatz existieren verschiedeneste Ziel- und Interessensgruppen. Für eine geeignete Analyse zur Bekämpfung von Covid-19 mit unserem Ansatz ist eine Ausreichend große und genaue Datenbasis unvermeidbar.

Quellenverzeichnis

[1] Balser M., Hurtz S., Warum die Telekom Bewegungsdaten von Handynutzern weitergibt, Süddeutsche Zeitung, 18. März 2020, 18:54 Uhr, aus dem Internet entnommen am 21. März 2020, https://www.sueddeutsche.de/digital/coronavirus-telekom-smartphone-tracking-datenschutz-1.4850094

[2] Schmid-Johannsen J., Schäfer J., Heiliger N. & Lang U., Warten, bis die Corona-Kurve abflacht, SWR Aktuell, 20.3.2020, 7:11 Uhr, aus dem Internet entnommen am 22. März 2020,Uhr, https://www.swr.de/swraktuell/flatten-the-curve-104.html

Built With

Share this project:

Updates