Schlagwort-Archive: Data Driven Journalism

What is in a street name – Schoener leben mit Linked Data

Eines meiner Lieblingsbeispiele, wenn ich ueber Linked Open Data spreche, sind Strassennamen. Das klingt auf den ersten Blick weit hergeholt, aber wer jemals groessere Mengen an Adressen mit einem Computer verarbeiten wollte, ist vermutlich irgendwann ueber die Liste der Falsehoods programmers believe about addresses gestolpert.

Die Quadrate in Mannheim (anstatt Strassennamen) sind dabei eher die Ausnahme. Dass in einer Gemeinde – in der Regel nach Eingemeindungen – mehrere Straßen mit demselben Namen existieren, oder dass in einer Ortschaft gar keine Strassennamen vergeben wurden, kommt dagegen relativ haeufig vor. Hilgermissen als Gemeinde mit 2200 BewohnerInnen, aber keinem einzigen Strassennamen, ist angesichts seiner Groesse so besonders, dass das DLF Nova einen Rundfunkbeitrag wert war. Neben Hilgermissen gibt es aber viele weitere kleine Oertchen, in denen die Haeuser einfach nur eine Hausnummer haben. Und egal, ob es einen Strassennamen gibt oder nicht: Sobald Menschen eine Adresse in irgendein Computersystem eingeben, wird es schnell haarig und fehlerhaft.

Adlitz: Schilder in die naechsten Staedte, aber keine Strassenschilder. Roehrensee, CC BY-SA 4.0, via Wikimedia Commons

Bei den Ortschaften ohne Strassennamen liegt das meist am Verwirrungsfaktor. Wir haben uns so sehr daran gewoehnt, dass eine Adresse aus Strasse, Hausnummer, Postleitzahl und Ortschaft liegt, dass es sich falsch anfuehlen wuerde, einfach nur „5, 95491 Adlitz“ zu schreiben – obwohl das eigentlich richtig waere.
Vermutlich alle diese Doerfer ohne Strassennamen wurden spaetestens durch die Gebietsreformen in den 1960er- und 70er-Jahren der naechstgroesseren Gemeinde zugeschlagen und verwenden auch die Postleitzahl dieser (oder einer anderen) groesseren Gemeinde. Daher liegt es nahe, diese Adresse stattdessen „Adlitz 5, 95491 Ahorntal“ zu schreiben.

Auch wenn das fuer die Postzustellung oder fuer die eigene Orientierung keinen praktischen Unterschied macht – richtig ist das nicht, und bei der maschinellen Auswertung kann so etwas zu Problemen fuehren. (Dass es zwar eine Gemeinde Ahorntal gibt, aber gar keinen Ort, der so heisst, ist noch einmal eine ganz andere Geschichte, die hier aber keine grosse Rolle spielt).

Denn, wie auch bei gesprochener Sprache sind wir als Menschen ganz gut darin, Mehrdeutigkeiten oder unpraezise Ausdruecke einfach passend zum Kontext einzuordnen. Wir lesen nicht einfach nur, was irgendwo steht und interpretieren das nur buchstaeblich, sondern wir interpretieren ohne gross darueber nachdenken zu muessen, was gemeint gewesen sein koennte. Aber bloederweise gehen wir andersherum auch beim Schreiben davon aus, dass ein Gegenueber schon wissen wird, was eigentlich gemeint ist. Und dass dieses Gegenueber nicht etwa ein Computer ist, der das Geschriebene vergleichsweise woertlich auslegt. Und dann wird’s wild.

Ganz offizielles Strassenschild – der Platz heisst aber offiziell „Augsburger-Tor-Platz“! Foto: -stkCC BY-SA 4.0, via Wikimedia Commons

Zuletzt bin ich darueber gestolpert, als WikipedianerInnen aus dem WikiMUC und dem temporaerhaus gemeinsam bei einem Editathon die tausenden Feuerwehren in Bayern in Wikidata einpflegen wollten. Der Landesfeuerwehrverband hat eine Liste aller bayerischen Feuerwehren auf seiner Website, und die wird ganz offensichtlich von Menschen gepflegt, mit der Schreibweise der Adressen, die sie gewohnt sind. Mal wird im Strassen-Feld der Name des Ortsteils dem Strassennamen vorangestellt („Schwaighausen, Unterharter Straße 3“), mal steht im Gemeinde-Feld eine Kombi aus Ortsteil und Gemeinde („Triefenstein OT Homburg“) oder aber irgendwann ist womoeglich beim Feuerwehrhaus das Hausnummernschild abgefallen und alle sind sich einig, dass die Hausnummer „neben HsNr. 7“ scho so basst. Das ist schliesslich eine Feuerwehr, die kann man selbst in einem kleinen Dorf mit nur einer Garage fuer den Tragkraftspritzenanhaenger nicht so einfach uebersehen. Meist ist da ja irgendwas an die Wand gemalt oder es ist eine E57 auf dem Dach, also bittschoen, das wird man ja wohl finden, und die Feuerwehrdienstleistenden brauchen eh keine Hausnummer, wenn die Sirene mal geht, damit sie zu ihrem Feuerwehrhaus kommen.

Wenn dazu noch inoffizielle Abkuerzungen und vielfaeltige Interpretationen von Getrennt- oder Zusammenschreibung kommen, wird es endgueltig wild. Das temporaerhaus hat eine Adresse in der „Augsburger Straße“ – allein in unserer Community wurden sehr lange verschiedenste Varianten von „Augsburger-Str.“ ueber „Augsburgerstr.“, jeweils dann mit Varianten mit scharfem s oder Doppel-S verwendet (bis ich das nicht mehr ausgehalten und darum gebeten habe, dass wir das alle so schreiben, wie es richtig™ ist, damit ich besser schlafen kann).

Offizieller NameWas man so findet
Maximilian-Straßer-StraßeMaximilian-Strasse-Straße
Bürgermeister-Wolfgang-Brügel-StraßeBgm.W.-Brügel-Str.
St.-Ulrich-StraßeSt. Ulrich Str.
Dr.-Appelhans-WegDr.-Appelhansweg
Sankt-Johannes-Baptist-StraßeSt.- Joh.- Bapt.- Str.

Meine These ist, dass selbst bei den Datenbestaenden innerhalb einer Stadtverwaltung je Strasse im Schnitt deutlich mehr als zwei Schreibweisen ueber alle Systeme hinweg existieren, und bislang konnte das noch niemand widerlegen. Oft ist nicht einmal auf allen Strassenschildern der richtige Name der Strasse angebracht. Die „falschen“ Schilder sind bisweilen erkennbar alte Exemplare, die moeglicherweise vor einer Vereinheitlichung der Schreibweise aufgehaengt wurden. Aber nicht nur „neue“ Strassenschilder stimmen nicht immer mit dem amtlichen Namen ueberein, auch in Liegenschaftsverzeichnissen, Excel-Listen und moeglicherweise auch Fachverfahren tummeln sich mit grosser Sicherheit verschiedene Schreibweisen derselben Strasse.

Das kann automatisierte Auswertungen… schwierig machen. Der Versuch, aus den Adressen der Feuerwehren ueber Nominatim Geokoordinaten zu ermitteln, lief bei beeindruckend vielen der Eintraege gegen die Wand. Und selbst wenn man in einer Kommunalverwaltung ueberhaupt gleichzeitigen Zugriff auf alle Speicherorte haette, wo Strassennamen vorkommen: Eine Suche „gib mir alle Informationen, die irgendwie mit der Sankt-Johannes-Baptist-Straße zusammenhaengen“ wird spaetestens mit einer so kreativen Abkuerzung wie „St.- Joh- Bapt.- Str.“ (man beachte die Leerzeichen!) herausfordernd.

Nicht nur bei alten Strassenschildern schleichen sich Falschschreibungen ein. Diese Strasse heisst korrekt „Warmwässerle“. Foto: LooniverseCC BY-SA 4.0, via Wikimedia Commons

Mit dem Konzept von Linked Data koennte man das ganz anders umsetzen. Die Sankt-Johannes-Baptist-Straße koennte ein Datenobjekt mit dem URI ld.bayern.de/location/street/081513121337 haben. Die 081513121337 koennte dabei eine hierarchische Bedeutung haben und dadurch Rueckschluesse auf Regierungsbezirk, Landkreis und Gemeinde geben – es koennte aber auch eine ganz beliebige, fortlaufende Nummer sein, so wie bei Wikidata. Und dieses Datenobjekt hat dann passende Eigenschaften – beispielsweise:

  • Ein Label mit dem Namen der Strasse. In mehrsprachigen Gebieten koennen das auch mehrere Label sein, mit maschinenlesbarer Bezeichnung, welche Sprache das jeweils ist
  • in welcher Verwaltungsgliederung es liegt – also z.B. die zugehoerige Gemeinde, mit einem Link zum Datenobjekt dieser Gemeinde. Moeglicherweise auch feiner granular mit Bezeichnung des genauen Ortsteils
  • weitere Identifier, z.B. die Nummer im Strassenverzeichnis der Gemeinde
  • moeglicherweise eine Auszeichnung, ob es sich um eine amtliche (gewidmete) Strasse mit offiziellem Strassennamen handelt, oder sowas wie den „Resis-Traktor-Weg“, den zwar alle so kennen und benutzen, den es aber „offiziell“ nicht gibt
  • Geoinformationen wie einen Linienzug, der die Strasse auf einer Karte definiert, oder einen Link auf ein solches Geofeature-Datenobjekt
  • die Information, nach wem oder was die Strasse benannt ist – zum Beispiel mit einem Link auf das Wikidata-Objekt

Oder ganz praktisch:

schema.org/nameSankt-Johannes-Baptist-Straße
schema.org/identifier081513121337
schema.org/containedInPlaceld.bayern.de/municipality/09775164
geosparql#hasGeometrygeo.ld.bayern.de/location/street/geometry/081513121337
schema.org/postalCode89264
P138Q40662 (Johannes der Täufer)

Solch eine Datenhaltung hat gleich in mehreren Aspekten grossen Charme. Die Idee ist, dass – egal wo in der Kommunalverwaltung ein Strassenname eingegeben werden soll – per Autovervollstaendigung anhand des Namens das passende Datenobjekt aus diesem Linked-Data-Strassenregister gesucht wird. Auf der „Bildschirmvorderseite“ und ueberall, wo es in Texten und Adressen in der Folge um diese Strasse geht, wird stets das Label, also der Strassenname angezeigt. Der ist dadurch immer auch der „richtige“, aber sonst aendert sich weiter nichts.

Bei der Speicherung wird aber immer der URI auf diese Strasse abgelegt. Und das heisst, dass viel verlaesslichere Datenabfragen moeglich sind: Ueber alle Dinge – Firmen, Gebaeude, Einrichtungen – in genau dieser Strasse. Ueber alle Strassen in einer Gemeinde. Oder auch – falls auch das passend codiert ist – ueber alle Strassen in einem bestimmten Ortsteil, ganz ohne Namenskonventionen, wie der Ortsteil anzugeben ist. Und wird einmal eine Strasse umbenannt, zum Beispiel, weil ein Namensgeber spaeter als unwuerdig befunden wird, muss nur im Linked-Data-Strassenverzeichnis das Label geaendert werden, und in kuerzester Zeit ist diese Aenderung einheitlich an allen Stellen vollzogen.

Hildegards gibt es viele – gemeint ist hier Q234410 (Wikipedia). Foto: LooniverseCC BY-SA 4.0, via Wikimedia Commons

Wenn ueber Linked Data eindeutig bezeichnet wird, nach wem oder was eine Strasse benannt ist, ist auch viel leichter nachvollziehbar, nach welchem Frieden die Friedenstrasse in Neu-Ulm benannt ist, ohne dafuer zum Strassenschild gehen und die Legendentafel darunter lesen zu muessen. Auch die OpenStreetMap hat eine passende Eigenschaft NamedAfter, in die man die passende Wikidata-ID eintragen kann. Mit MapComplete kann man das relativ komfortabel fuer die Strassen in der eigenen Stadt eintragen.

Hier sieht man dann auch die Magie verlinkter Datenbestaende in der Praxis. Denn weil die Datenobjekte der Personen, nach denen eine Strasse benannt wurde, meist auch weitere Informationen wie z.B. das Geschlecht angeben, laesst sich mit Linked Open Data auch ganz durchautomatisiert und ohne weiteres Zutun darstellen, wie eigentlich das Geschlechterverhaeltnis bei der Strassenbenennung ist – so wie auf dieser interaktiven Karte von Frankfurt. Vor beinahe 11 Jahren hatte unsere Open-Data-Ehrenamtsgruppe das noch mit viel Handarbeit machen muessen und die Karte war auch irgendwann tot und die Daten versauerten – der EqualStreetNames-Ansatz laesst sich mit wenig Handarbeit uebertragen, und die Datenpflege in Linked Open Data hilft am Ende allen auf der ganzen Welt, auch wenn das Kartenprojekt einmal untergehen sollte!

Noch nicht ganz fertig: Eine interaktive Karte zur Geschlechterverteilung bei der Strassenbenennung in Neu-Ulm

Letzte Woche war ich beruflich fuer einen Vortrag (Slides) auf der TRANSFORM-Konferenz in Bern, wo ich viele inspirierende Diskussionen ueber Linked Data fuehren konnte. In einem Gespraech mit einem beeindruckend tief in der Materie arbeitenden Menschen von der Schweizerischen Bundeskanzlei liess ich nebenher das Strassenbeispiel als praktische Anwendung von LOD mit Nutzen fuer die Verwaltung fallen. Und mein Gegenueber blickte mich ueberrascht an – ich weiss rueckblickend nicht, ob es verwundert oder gar mitleidig war – und sagte lapidar, dass es das in der Schweiz natuerlich bereits gebe.

Fuer jede einzelne Strasse.

Ich versuchte, nicht sogleich aufzuspringen und mich in den naechstgelegenen Fluss zu stuerzen, sondern liess mir zeigen, dass in der Tat, es fuer jede Strasse in der Schweiz ein Datenobjekt gibt, zum Beispiel fuer den Philosophenweg in Bern, samt der zugehoerigen Geometrie. Und falls das Verlangen fuer die Sache nach dem Fluss nicht nachlasse, faende ich natuerlich auch die Aare als Datenobjekte, wobei es sich hier zu meinem Wohl explizit um Badegewaesser handle.

Die jeweils uebergeordnete Entitaet „Bern“ verlinkt natuerlich auch auf das Wikidata-Item zu Bern. Wie sich das halt gehoert, wenn man Dinge bitte gleich richtig macht.

Es faellt mir schwer, den Zustand meines Emotiotops in diesem Moment zu beschreiben. Aehnlich ging es mir spaeter, als ein Mitarbeiter der Statistik bei der Stadt Zuerich mich neugierig fragte, wie viele kommunale Statistikabteilungen in Deutschland denn in ihren Prozessen mit Linked Data arbeiten wuerden, so wie sie, ganz natuerlich.

Zack. Bumm. Geht einfach. Screenshot von https://geo.ld.admin.ch/sparql/

Ich habe dann versucht, ueber diesen mentalen Zustand hinwegzukommen, indem ich eine SPARQL-Abfrage gebaut habe, um mir die Geometrien aller 822 Strassen in Bern ausgeben zu lassen, was in rund einer Sekunde… einfach so ging. Alle Haltestellen in Bern bekommt man in 0,225 Sekunden. Auch einfach so. Ganz selbstverstaendlich. Und ganz nebenbei, wenn in der Schweiz Linked Open Data veroeffentlicht wird, folgt das – natuerlich – verbindlich dem URI-Schema *.ld.admin.ch/*. Und es sei auch alles dafuer technisch notwendige ausgerollt, damit das funktioniert und dauerhaft stabile URIs sicherstelle, wie sich das ja auch gehoert. Nicht etwa, dass sich irgendwie Namen und damit auch URIs von Ministerien aendern (wie das bis heute selbst in DCAT-AP.de geschieht!) und dann fuehren auf einmal sowohl Website-URLs wie auch URIs ins Nirvana. Also so, wie das heute in Deutschland immer noch gang und gaebe ist und woran auch ueberraschend viele Digital-Lobby-Organisationen ueberhaupt gar keinen Anstoss nehmen.

Waere das bei uns auch so ganz normal, koennte man mal eben im Vorbeigehen ganz viele andere Schmerzen einfach so loesen.

Auszug aus dem Strassenverzeichnis von 1954, das die Open-Data-Community im temporaerhaus freundlicherweise von der Stadt Neu-Ulm bekommen hatte – der Ist-Zustand besteht immer noch aus Texten, manchmal eben auch auf Schreibmaschine geschrieben. Weitergeholfen fuer die Ueberfuehrung in Linked Open Data hat das dennoch immens!

Wer datenjournalistisch Sachverhalte auf Karten darstellen moechte, kennt naemlich dieses Problem auch: Geographische Raumbezuege sind haeufig nur eben als textliche Beschreibungen zugaenglich. Egal ob es darum geht, Unfallschwerpunkte auf einer Karte darzustellen, wie Jan-Georg Plavec berichtet (LinkedIn), oder um regelmaessig wiederkehrende Aufgaben wie die Darstellung von Wahlergebnissen auf einer Karte: Oft gibt es die Voraussetzungen fuer solch eine Kartendarstellung gar nicht maschinenlesbar.

Der Zuschnitt der Wahlkreise bei einer Wahl ist dabei noch vergleichsweise einfach: Das ist eine Liste von Kommunen oder Stadtbezirken, und dafuer gibt es meistens irgendwelche Geoshapes, die sich dafuer halbwegs angenehm verwursten lassen (Beispiel: Die Liste der Stimmkreise in Bayern). Sobald es aber um die Wahl- bzw. Stimmbezirke innerhalb einer Gemeinde geht, kann es anstrenged werden. Die liegen naemlich viel zu oft immer noch nur als Listen der in ihnen befindlichen Strassen vor. Und selbst an diese Listen zu kommen, kann aufwaendig sein, wie diese Dokumentation bei der OpenStreetMap zeigt.

Hat nichts mit Stimmbezirken zu tun, aber erwaehnt nochmal die Hildegardstr.: In dieser Version des Neu-Ulmer Strassenverzeichnis von 1978 sind auch die vorherigen Strassennamen erkennbar. Nochmals vielen Dank an die Stadt Neu-Ulm!

Aus Sicht der Wahlbehoerde ist das auch nachvollziehbar. Denn von einer Kartendarstellung hat sie ja fuer die Aufstellung des Stimmverzeichnis erst einmal gar nichts: Wenn ihr die Liste der jedem Wahllokal zugehoerigen Strassen vorliegt, kann sie aus dem Meldeverzeichnis die jeweiligen Listen der Wahlberechtigten erstellen – fuer ihren Auftrag hat sie damit alle Informationen, die sie braucht. Wenn es eine geographische Darstellung der Wahlbezirke anhand der Strassenlisten gibt, ist das womoeglich nur ein Zusatzaufwand. Manchmal leistet man sich den, manchmal aber auch nicht. Und wenn es eine geographische Darstellung gibt, heisst das immer noch nicht, dass die dafuer notwendigen Daten auch z.B. von Datenjournalist*innen wiederverwendet werden koennen.

Bei der Recherche gefunden: Eine immerhin (geo)graphische Darstgellung der Wahlbezirke in Regensburg, im PDF der Wahlbezirke sortiert nach Strassennamen. Das Dokument ist mit LaTeX generiert und ich bin jetzt total neugierig, wie die das machen!

Waeren die Strassen aber Datenobjekte, mit verknuepfter Geometrie, waere in beide Richtungen vieles so viel einfacher. Fuer den Zuschnitt der Stimmbezirke waeren Neuordnungen quasi live moeglich: Mit Drag und Drop auf der Karte (und der nur verwaltungsintern zugaenglichen Linked-Data-Verknuepfung zu Meldedaten) liessen sich Neuzuschnitte und die Auswirkungen auf die Gesamtzahl der Wahlberechtigten ganz einfach simulieren – oder auch durch mathematische Optimierungsverfahren Vorschlaege machen. Und ist die Ausdehnung einmal festgelegt, waere es ueberhaupt kein Problem mehr, diesen Zuschnitten geographische Umringe zuzuordnen.

Wir muessten dafuer nur die Informationen aus der Textform in das Linked-Data-Prinzip ueberfuehren. Das ist keine Zauberei, sondern einfach nur Infrastrukturarbeit, fuer die es den notwendigen Sachverstand fuer IT-Architektur und Datenstrukturen braucht. Und die bereits auf mittlere Sicht allen Beteiligten beeindruckend viel Handarbeit sparen und Fehlerquellen vermeiden wuerde.

Open Data, wie es zu Covid haette sein koennen

Die Digitalisierung des Gesundheitswesens ist ein Trauerspiel. Die Datenlage zu den Auswirkungen der Omikron-Welle ist ein Desaster. Dabei ist eine gute Datenlage der Dreh- und Angelpunkt im Kampf gegen Omikron, kommentiert Eva Quadbeck. rnd.de/politik/eine-g… In der Omikron-Welle ist nicht nur die Belegung der Intensivstationen entscheidend – für die Beurteilung des Geschehens braucht es dringend einen tagesaktuellen Überblick über die Normalstationen. rnd.de
Eine gute Datenlage kann Leben retten
Die Digitalisierung des Gesundheitswesens ist ein Trauerspiel. Die Datenlage zu den Auswirkungen der Omikron-Welle ist ein Desaster. Dabei ist eine gute Datenlage der Dreh- und Angelpunkt im Kampf…

Die Digitalisierung des Gesundheitswesens sei ein Trauerspiel, titelt das Redaktionsnetzwerk Deutschland. Nachdem man dem Reflex nachgegeben hat, „was, nur des Gesundheitswesens?“ zu rufen, dachte ich mir, man koennte ja mal das mit dem Aufschreiben des besseren Gegenentwurfs machen, der mir seit Monaten im Kopf rumspukt.

Tatsaechlich beobachte nicht nur ich die (Daten)lage seit geraumer Zeit mindestens mit Irritation. Lena Schimmel schrieb kurz vor Weihnachten einen ganzen Thread, dass sie selbst erschreckend lange die eigentlich vom RKI veroeffentlichten Daten ueber Sequenzierungen gar nicht erst gefunden hatte:

Ich glaube, dass „wir“ als „die gesellschaftliche Open-Data-Lobby“ uns wieder viel viel mehr auf Linked Open Data als Ziel konzentrieren und das auch kommunizieren muessen. Bei all dem Einsatz, wenigstens CKAN oder irgendein Datenportal auszurollen, scheint das fernere Ziel ueber die Jahre immer mehr in Vergessenheit geraten zu sein.

Schon vom Nutzungsfaktor her duerfte dieses Ziel jedoch am Beispiel der Pandemie sehr klar zu vermitteln sein. Seit nun beinahe zwei Jahren setzen sich jeden Morgen viele DatenjournalistInnen an ihre Rechner und versuchen, aus den aktuellen Datenpunkten zum Infektionsgeschehen und den Impfungen Erkenntnisse zu ermitteln und diese nachvollziehbar aufzubereiten.

heute arbeite ich eigentlich nicht, aber das @rki_de fügt unnötige spalten ein, deren werte sich aus den vorhandenen daten berechnen lassen. pic.x.com/8ut9garrzt

Ueber die Zeit hinweg ist es ein bisschen zu einem Running Gag geworden, dass das RKI dabei immer wieder mal Spalten vertauscht oder neue Daten hinzufuegt, so dass all die gebauten Parser auf die Nase fallen.

5-Sterne-Schema aus den 2000ern. Quelle.

Derweil koennte die Lage mit verlinkten – oder wenigstens semantischen – Daten deutlich einfacher ablaufen. Man kann sich die 5-Sterne-Treppe fuer offene Daten am Beispiel der RKI-Berichte recht anschaulich klarmachen:

  • In der ersten Stufe (die Daten sind irgendwie da) sind die Informationen zwar irgendwie als digitale Symbole codiert, das kann aber auch ein PDF sein, oder im schlimmsten Fall ein PDF eines eingescannten Dokuments. Eine Maschine kann diese Symbole uebertragen und die dadurch codierten Inhalte aufbereiten und anzeigen, aber die Datenpunkte darin sind im unpraktischsten Fall nur fuer Menschen lesbar.

(Exkurs. Wenn wir ueber „Daten“ sprechen, werden schon diese beiden Definitionen haeufig wild durcheinander geworfen. Einerseits die Symbole oder „bits und bytes“, die Information codieren – so wie die Buchstaben, die diesen Satz bilden. Andererseits Datenpunkte, die z.B. verarbeitbare Information ueber einen Temperaturmesswertverlauf abbilden.)

  • In Stufe 2 und 3 sind auch die Datenpunkte fuer Maschinen interpretierbar, weil die Informationen mehr oder weniger strukturiert in einem proprietaeren (Excel) oder offenen (CSV) Format vorliegen. Die Zusammenhaenge bzw. die Semantik erschliessen sich jedoch immer noch nur der menschlichen Betrachterin, die diese Struktur selbst in die automatisierte Auswertung einbauen muss. Wenn das RKI ohne Ankuendigung die Reihenfolge der Spalten aendert, kann ein einmal geschriebenes Auswertungsskript diese Aenderung nicht ohne weiteres erkennen und wird erst einmal falsche Auswertungen ausgeben, bis es auf die veraenderte Datenlage angepasst ist.
  • Das ist der Punkt, der in Stufe 4 behoben wird: Dann ist naemlich auch die Semantik als weitere Ebene im Datensatz codiert. Ich muss nicht mehr als auswertende Person aus dem Originaldokument in menschlicher Sprache lesen und dann fuer das Auswertungsskript festlegen, dass Spalte B das Bundesland und Spalte N die Zahl der in einem Impfzentrum vollstaendig geimpften Personen unter 60 Jahren ist. Ich muss stattdessen dem Auswertungsskript fuer das (zugegeben, einfachere) Beispiel des Bundeslands „nur“ mitgeben, dass es in irgendeiner Spalte eine Beschreibung gemaess Language, Countries and Codes (LCC) erwarten kann, und da wird dann ein passender ISO-3166-2-Code mit dabei sein. In welcher Reihenfolge die Spalten dann ankommen, und ob das jetzt der Impf- oder der Inzidenzbericht ist, spielt eigentlich keine Rolle mehr.
Die Fallzahlen kommen aus einem Repo, die Geoshapes aus einem anderen, auf das als Dependency verlinkt werden kann. Ausserdem: Ich kann keine Karten zeichnen (deswegen brauche ich Shapes)

Im Vollausbau der Stufe 5 verlinkter Daten wird vielleicht am besten deutlich, was man mittlerweile haben koennte. Anstatt dass man sich jeden Morgen ein hoffentlich aktualisiertes Excel-File der Inzidenzen und Impfinformationen herunterlaedt, reicht das Gegenstueck zu einem git pull – alles liegt als von Tag zur Tag (bzw Veroeffentlichungsschnappschuss zu Veroeffentlichungsschnappschuss) versionierter Datenframe vor. Wenn ich den Datensatz einmal ausgecheckt habe, kann ich lokal die Updates bekommen, die Unterschiede von Schnappschuss zu Schnappschuss diffen, und auch in der Historie beliebig zurueckspringen, um Zeitreihen zu machen.

Da aber sowohl die Semantik im Datensatz codiert ist, als auch Links auf andere Datenquellen vorhanden sind oder von mir hergestellt werden koennen, kann ich sehr viel mehr automatisieren, was ich sonst zu Fuss machen muesste: Wenn in irgendeiner Spalte die Landkreise mit Kreisschluessel codiert sind, und ich meine Auswertung per Karte machen will, kann ich aus einer passenden anderen Datenquelle automatisch die Geometrien des NUTS-3-Level in Deutschland laden und mit dem RKI-Datensatz verknuepfen.

Das ist jetzt rein aus der Nutzungsperspektive gesehen, weil das mit die anschaulichste ist. Eigentlich viel spannender ist aber, die Konsequenzen durchzudenken, was es bedeuten wuerde, die dafuer notwendige Infrastruktur im Betrieb zu haben. Das heisst, dass Datenpunkte und Informationen nicht haendisch in der Gegend herumgetragen und zu Fuss alleine in Excellisten vorgehalten und gepflegt werden. Dass es definierte Schnittstellen und Datenfluesse gibt, die auch die behoerdeninterne Nutzung von fuer Entscheidungen relevanter Daten erlauben, ohne dass diese muehsam und fehleranfaellig zusammengekratzt werden muessen. Und nicht zuletzt auch, dass wir dafuer die ueber Jahrzehnte aufgebauten technischen Schulden der oeffentlichen IT-Infrastruktur abgebaut und die Architektur vorausschauend sparsamer weil effizienter(!) geplant und umgesetzt haben.

Es ist total schade, dass so viele der Visionen aus den 2000ern durch das jahrelange Klein-Klein der Umsetzung, die zu schliessenden Kompromisse mit Verwaltungen, und die perverse incentives fuer „Umsetzungen“ verkaufende Dienstleister so tief in die metaphorischen Sofaritzen verschwunden und in Vergessenheit geraten sind.

The current public funding schemes geared towards “digitalization” and “innovation” constitute perverse incentives. In the long run, they are not only expensive, but will pile up massive amounts of technical debt vastly exceeding the investments.
The biggest shift in tech for the next years isn’t blockchains or „AI“ or quantum computing or some other buzzword. Or at least it shouldn’t, mustn’t be.

The biggest shift has to be to change away from „Innovation“ as the main driver of work towards care and maintenance.


Manches davon ist natuerlich auch mittlerweile ueberholten Ueberlegungen von damals geschuldet. In der 5-Sterne-Treppe wird beispielsweise als erster Schritt ein „OL“ angegeben, das fuer eine Offene Lizenz stehen soll. Das halte ich mittlerweile fuer ueberholt und teilweise durch die viele Wiederholung auch ein wenig schaedlich. Denn die Diskussion z.B. bei Infektions- oder Impfdaten ist eigentlich gar nicht, ob sie unter der internationalen Creative-Commons-Lizenz oder der nutzlosen und ersatzlos abzuschaffenden Datenlizenz Deutschland „lizenziert“ werden. Denn das sind Faktendaten, und die gehoeren allesamt gemeinfrei gemacht.

tl;dr: Bitte einmal Linked Open Data als Ziel, zum mitnehmen, und etwas mehr freundliche Radikalitaet.

Die broeselnden Fundamente maschinellen Lernens

Was in Firmenankuendigungen und sonstigen Buzz-Berichten „Kuenstliche Intelligenz“ genannt wird, ist in der Praxis meist Machine Learning – angewandte Statistik auf Basis von Trainingsdaten, mit der man den Rechner quasi „anlernt“, passend zu kategorisieren. Der alte Witz geht etwa so: Wenn es in Python geschrieben ist, ist es maschinelles Lernen. Wenn es in Powerpoint ist, ist es kuenstliche Intelligenz.

Machine Learning hat fuer sich schon einige relativ offensichtlichen Schwaechen. Biases in Trainingsdaten schlagen sich quasi automatisch auf das Verhalten des zu trainierenden Modells nieder. Wenn beispielsweise in Strafverfahren marginalisierte Bevoelkerungsgruppen fuer dieselben Vergehen haertere Strafen von Gerichten erfahren als Weisse, wird auch eine „unbefangene“ „KI“ diesen Bias weitertragen.

Cory Doctorow geht aber noch weiter: Machine Learning’s Crumbling Foundations heisst sein Artikel, und er beleuchtet sehr kritisch, wie die Trainingsdaten ueberhaupt erfasst werden, wer sie aufbereitet, und an welchen Stellen ueberhaupt ausreichend Domaenenwissen vorhanden ist, um ansatzweise sinnvolle Erkenntnisse aus ML-Prozessen gewinnen zu koennen. Lesenswert. (via @johl)

×

Ich musste auch deswegen bei der Lektuere ein wenig schmunzeln, weil KI einer von mehreren Dauerbrennern in Diskussionen mit EntscheidungstraegerInnen oder IT-Unternehmern war/ist. Das Muster ist dabei immer dasselbe: Das Thema ist mehr Projektionsflaeche mit total von der Realitaet entkoppelten Vorstellungen. Versuche, mit Realitaetschecks zu kontern und den notwendigen (und als gegeben angenommenen) Unterbau zu problematisieren, schlagen fehl. Zwei, drei Jahre spaeter kommen dann kritische Artikel auch in einer breiteren Oeffentlichkeit an und es kommt dann ein „ja hm da habt ihr wohl recht gehabt“. Derweil kommt dann die naechste Sau um die Ecke, egal ob bei Blockchain oder totgeglaubten Social-Bot-Debatten.

Auswerten, wann die Facebook-Freunde online sind. Und Graphenprobleme.

Dieser Post erklaert, wie man per Facebook-Messenger den Tag-Nacht-Zyklus (oder gut, vielleicht besser den Nicht-auf-Facebook-aktiv/auf-Facebook-aktiv-Zyklus, aber das kann bisweilen ja identisch sein) abgrast und auswertet:

Das Witzigste sind aber Rants wie dieser hier, die sehr bekannt vorkommen:

Let me paint you a word-picture. It’s 11pm, I’m listening to the soundtrack to The Social Network (ironically? meta-ironically? I don’t even know), I have six terminals tiled across two screens as well as fifty thousand browser tabs open and I’m up to my third graphing library.

Making graphs is really hard.

Oh ja! 😉

(via)

Verkehrszaehlungsdaten mit R und ggplot2 visualisieren

Wie gestern erzaehlt, hatte ich mich beim Hackday Moers ja mit den Verkehrsmessdaten der Stadt Moers beschaeftigt. Die liegen als CSV-Export vor und umspannen jeweils einen Zeitraum von 48 Stunden – gemessen mit einer dieser Boxen, die am Strassenrand aufgestellt werden, und Geschwindigkeit, Fahrtrichtung und Laenge des Fahrzeugs erfassen. So sieht sowas aus:

14.05.13 07:39:33;00;030;07;0
14.05.13 07:39:35;00;030;04;0
14.05.13 07:39:37;00;027;04;0
14.05.13 07:40:52;00;024;07;0
14.05.13 07:40:53;00;024;07;1
14.05.13 07:41:39;00;035;01;0 

In der ersten Spalte kommt ein Zeitstempel, gefolgt von einem Platzhalter (00), der Geschwindigkeit in km/h, der Fahrzeuglaenge in Metern und der Fahrtrichtung. Auf den Beschreibungsseiten gibt es noch Hinweise zur Klassifizierung der Fahrzeuge nach der Laenge, und Angaben zum Dateinamen (Name der Messstelle und vorgeschriebene Hoechstgeschwindigkeit).

Ich habe das zum Anlass genommen, die nicht sonderlich uebersichtlichen Rohdaten grafisch in R mit ggplot2 aufzubereiten. Cave: Ich bin kein Statistiker, und auch kein R-Crack – das Ergebnis kam durch strategisches Googeln und Ausprobieren von Codeschnipsel zusammen mit dem Lesen der R-internen Dokumentation zustande, und war vor allem auch eine prima Gelegenheit, meine eingerosteten R-Faehigkeiten wieder aufzufrischen. Pull-Requests fuer Verbesserungen sind gerne gesehen 😉

Daten einlesen

Um die Daten zu analysieren, muessen sie natuerlich erst einmal eingelesen werden. Das geht recht fix – Separator fuer die CSV-Spalten ist das Semikolon, und da die Datei ohne Spaltenueberschriften kommt, wird header=FALSE gesetzt:

endstr <- read.csv("endstrasse_17_t50_03112014.txt",header=FALSE,sep=";")
names(endstr) <- c("date","place","tempo","length","direction")

Danach werden mit names() die passenden Spaltenueberschriften gesetzt.

Das reicht schon, um eine erste Auswertung zu machen:

summary(endstr)
                date          place       tempo        length      
 03.11.14 10:56:07:   2   Min.   :0   Min.   :12   Min.   : 1.000  
 03.11.14 12:42:34:   2   1st Qu.:0   1st Qu.:37   1st Qu.: 2.000  
 03.11.14 16:44:23:   2   Median :0   Median :42   Median : 3.000  
 03.11.14 16:44:30:   2   Mean   :0   Mean   :42   Mean   : 3.512  
 04.11.14 10:03:37:   2   3rd Qu.:0   3rd Qu.:47   3rd Qu.: 4.000  
 04.11.14 11:17:40:   2   Max.   :0   Max.   :89   Max.   :43.000  
 (Other)          :2723                                            

Das ist schon einmal ein aufschlussreicher erster Blick: Der Median der Geschwindigkeit ist 42 km/h – und nur ein Viertel der Messungen lag bei 47 km/h oder mehr.

Das laesst sich auch in einem Histogramm fuer die Geschwindigkeit auswerten:

jpeg('endstr_histo.jpg')
hist(endstr$tempo)
dev.off()

endstr_histo

Schoen ist natuerlich anders 😀

Ausgabe als Scatterplot

Passender waere, die Messung als Scatterplot ueber die Zeit hinweg auszugeben. Mein erster Ansatz analog zum unlaengst hier verlinkten Tutorial war ein wenig naiv:

library(ggplot2)
ggplot(endstr, aes(x=date, y=tempo)) +
geom_point()

endstr

Na, wem faellt auf, was da nicht stimmt? Klar, die Zeitpunkte werden nicht als Zeit interpretiert, sondern gleichverteilt auf der X-Achse aufgetragen. Ich habe am Anfang ein wenig herumgebastelt, das bei der Auswertung in POSIX-Zeit umzuwandeln, letztlich war aber die sinnvollere Variante, einfach die Tabelle um einen „richtigen“ Zeitstempel zu erweitern:

endstr$datetime <- as.POSIXct(endstr$date,format="%d.%m.%y %H:%M:%S")

ggplot(endstr, aes(x=datetime, y=tempo)) +
geom_point()

endstr_datetime

Schon besser 🙂 Analog habe ich auch fuer die Fahrzeuggroesse und die Tempoabstufungen Klassen angelegt – bei der Fahrzeuggroesse analog zur Klassifizierung in der Dateibeschreibung der Stadt, bei der Geschwindigkeit bis zum Tempolimit, bis 6 km/h ueber dem Tempolimit, und mehr als 6 km/h zu schnell:

endstr$tempoclass <- cut(endstr$tempo, breaks = c(0,50,56,Inf), labels=c("<50 km/h", "50–56 km/h", ">56 km/h"))
endstr$vehicleclass <-cut(endstr$length, breaks = c(0,8,12, Inf), labels=c("PKW", "LKW", "Lastzug"))

Einfaerben!

Mit diesen Daten lassen sich nun die einzelnen Punkte auch einfaerben. Ich habe die Punkte semitransparent gemacht, damit die Faerbung an den Haeufungen intensiver wird, und die Groesse anhand der Fahrzeugklasse gewaehlt. Fuer die Farben der Geschwindigkeitsklassen habe ich ein Pseudo-Rot-Gelb-Gruen-Schema gewaehlt, das auf eine fuer Farbenblinde taugliche Farbpalette zurueckgreift.

ggplot(endstr, aes(x=datetime, y=tempo, colour = tempoclass)) +
geom_point(alpha=0.2, aes(size=vehicleclass)) +
scale_color_manual(values= c("#009E73", "#E69F00", "#D55E00"), name="Geschwindigkeit")

endstr_colour

Feinanpassung

Ein wenig fehlt noch: Die Achsen und das Diagramm muessen noch richtig beschriftet werden: Die Zeitachse sollte ein im deutschen Sprachraum „passend“ lesbares Zeitformat bekommen, und in der Legende sollten die Punkte und ich wollte auch gerne eine Trendlinie sowie eine Hilfslinie bei der „richtigen“ Geschwindigkeit haben. Die Datumsformat-Umformatierung ist in library(scales) zu finden. Die Farben in der Legende sollten ausserdem nicht transparent angezeigt werden, das geht mit override_aes.

Fuer die Trendlinie habe ich den Tipp aus dem vorher verlinkten Tutorial verwendet, die ein Generalized Additive Model verwendet – ich habe keinen blassen Schimmer, ob das passt, aber es sieht zumindest fuer Semilaien wie mich passend aus 😉

Der komplette Code fuer den Graphen samt Ausgabe als PNG sieht nun so aus:

library(ggplot2);library(scales);library(Cairo);

ggplot(endstr, aes(x=datetime, y=tempo, colour = tempoclass)) +
# Punkte sind semitransparent, Größe abhängig von der Fahrzeugklasse
  geom_point(alpha=0.2, aes(size=vehicleclass)) +
  scale_color_manual(values= c("#009E73", "#E69F00", "#D55E00"), name="Geschwindigkeit") +
  # Hilfslinie bei 50 km/h
  geom_hline(yintercept=50, size=0.4, color="#efefef") +
  # Hilfslinie auf dem Nullpunkt der Y-Achse
  geom_hline(yintercept=0, size=0.1, color="black") +
  # Trendlinie mit Generalized Additive Model, siehe http://minimaxir.com/2015/02/ggplot-tutorial/
  geom_smooth(alpha=0.25, color="black", fill="black") +
  # Achsenbeschriftungen
  labs(title="Geschwindigkeitsmessung in der Endstraße", x="Zeit", y="Geschwindigkeit", size="Fahrzeugart") +
  guides(colour = guide_legend(override.aes = list(size=5 ,alpha=1))) + 
  scale_x_datetime(labels = date_format("%d.%m %H:%M"))

ggsave("endstr_final.png", width=8, height=4, dpi=300, type="cairo-png")

Mit library(Cairo) funktioniert die Transparenz auch bei der Bildausgabe wenigstens leidlich. Ich musste dazu libcairo-dev installieren (mehr Informationen dazu hier und hier)

Und voila – so sieht's aus:

endstr_final

Juka spielt gerade noch nebenher mit Leaflet herum, um die Graphen auch zu kartieren – die gesamte Ausgabe ist derweil auf Github anzusehen.

Linkschau

Um @sebaso zu zitieren: „Endlich mal ein vernuenftiger Use Case fuer NC-Lizenzen!“ → Lizenzhinweise fuer Ueberwachungskamerabilder, selbstgebastelt 🙂

Was die Polizei alleine nicht schafft – bedrueckende Erlebniserzaehlung einer (gesetzeswidrigen) Polizeikontrolle im Zug allein der Hautfarbe wegen.

Der Ältere fragt nach meinen Ausweispapieren. Die Polizisten hatten also vor mir jede Menge Möglichkeiten nach Ausweispapieren zu fragen, aber nein, nur meine Papiere zu sehen, schien anscheinend interessant. Sehe ich so interessant aus? Wie sehe ich denn aus? Meine Haut hat eine Färbung, die als „schwarz“ bezeichnet wird, obwohl eindeutig nicht schwarz. Ich trage ein grün-schwarzes Holzfällerhemd, eine Base-ball-Mütze und habe ein Schal um den Hals. Vor mir auf dem Tisch liegen zwei dicke Bücher zu Mikroökonometrie und Regressionsmodellen für kategorische abhängige Variablen.

Murder Machines: Why Cars Will Kill 30,000 Americans This Year. Pointiert geschriebenes Stueck rund um die Geschichte der Verantwortung bei Verkehrsunfaellen mit Kraftfahrzeugen.

Roads were seen as a public space, which all citizens had an equal right to, even children at play. “Common law tended to pin responsibility on the person operating the heavier or more dangerous vehicle,” says Norton, “so there was a bias in favor of the pedestrian.” […]

By the end of the 1920s, more than 200,000 Americans had been killed by automobiles. Most of these fatalities were pedestrians in cities, and the majority of these were children. “If a kid is hit in a street in 2014, I think our first reaction would be to ask, ‘What parent is so neglectful that they let their child play in the street?,’” says Norton.

“In 1914, it was pretty much the opposite. It was more like, ‘What evil bastard would drive their speeding car where a kid might be playing?’ That tells us how much our outlook on the public street has changed—blaming the driver was really automatic then. It didn’t help if they said something like, ‘The kid darted out into the street!,’ because the answer would’ve been, ‘That’s what kids do. By choosing to operate this dangerous machine, it’s your job to watch out for others.’ It would be like if you drove a motorcycle in a hallway today and hit somebody—you couldn’t say, ‘Oh, well, they just jumped out in front of me,’ because the response would be that you shouldn’t operate a motorcycle in a hallway.”

(via)

The Data Visualization Catalogue – Welche Datenvisualisierung passt zu welcher Art von Daten? (via)

The Sunlight Foundation’s Data Visualization Style Guidelines – Schoene Einfuehrung zu gut lesbaren Graphen. (via)

Zuletzt noch ein wenig Piratenrelatierter Content:

Wieviel Demokratie vertraegt die FDGO? – Lesestoff nicht nur fuer Piraten, die die freiheitlich-demokratische Grundordnung zu etwas Heiligem verklaeren, ganz ideologiefrei, natuerlich.

Kritisiert wird an dieser Definition zunächst ihre Entstehung. Das BVerfG hatte sie zu großen Teilen aus dem damaligen § 88 Abs. 2 StGB (heute § 92 Abs. 2 StGB) übernommen, aus dem Abschnitt der staatsgefährdenden Straftaten. Das Gericht hat damit eine bereits existierende Definition des Strafrechts zu Verfassungsrecht erhöht. Problematisch ist das besonders, weil mit dem fdGO-Begriff Einschränkung von Grundrechten einhergehen. Die Definition selbst lässt viele Fragen offen, die auch von den Gerichten und in der Rechtswissenschaft nicht einheitlich beantwortet werden. […]

Nach dieser Logik lässt sich jede an Freiheit, Gleichheit und Hierarchieabbau orientierte Gesellschaftskritik, die nicht oder nicht ausschließlich auf die parlamentarische Demokratie, den bürgerlichen National-Staat oder ein kapitalistisches Ökonomiemodell setzt, als extremistisch diskreditieren, ungeachtet dessen, ob sich die Kritiker_innen klar gegen orthodoxen Marxismus-Leninismus, Stalinismus und autoritäre Staatssysteme wie z.B. die DDR positionieren. Der Schutz von Freiheit und Demokratie kehrt sich so in sein Gegenteil.

(via)

Ausserdem zwei Kommentare zu #bombergate und der, hm, „linkskritischen“ Fraktion innerhalb der Piraten, die mal eben die Partei lahmzulegen versuchen, um ihren Willen zu bekommen: Wer eskaliert hier eigentlich? von Lars Reineke und eine rhetorische Frage von Michael Seemann.

Bonuscontent: The Male Gaze in Porn (With Commentary By Doge) – alleine schon der Kommentare wie „such not cunnilingus“ wegen ansehen. Und der Musik 😉

Soviel zur Filterblase

Wer vergangenen Sonntag entsetzt darueber war, wie viele Waehler*innen offenbar ihre Zukunft in der Union sehen, wie vielen wichtiger ist, einen Veggie-Day in der Kantine abzuwenden, als NSA, Totalueberwachung und Vorratsdatenspeicherung – befindet sich vermutlich in der beruechtigten Filterblase des Internet.

Ausserhalb derer machen die klassischen Medien Meinung, nicht Twitter. Und eine Geschichte der letzten Tage machte mir gleich nochmal deutlicher, wie so etwas aussieht.

Die Open Knowledge Foundation betreibt eine Mailingliste zu Data Driven Journalism – fuer Journalist*innen, die ihre Stories mit Daten unterfuettern, diese greifbar aufbereiten wollen, beispielsweise. Dort schreiben professionelle „Datenveredler*innen“ ebenso wie eine mir nicht bekannte Zahl interessierter Journalist*innen aus aller Welt, und die Liste war immer wieder mal Quelle interessanter Arbeiten, die ich auch hier verlinkt habe.

Montag mittag schrieb dort nun eine Abonnentin, dass sie gerne aus der Liste ausgetragen werden moechte – und loeste damit eine Mailflut aus:

Date: Mon, 23 Sep 2013 09:14:45 +0100
Thread-Topic: Can I be removed from mailing list?
Hi there,

I am leaving my current role so need to be removed from 
your mailing list - the link to click through to this 
option doesn't seem to be working. Can I be removed asap 
please?

Man muss nun eingestehen, dass das Mailman-Interface fuer die Abmeldung nicht die beste Usability hat: Man muss hierfuer die eingetragene Mailadresse ins obere Feld eintragen, das Passwort kann leer bleiben, und dann unten auf „unsubscribe“ klicken. Laesst man das Adressfeld leer, beschwert sich Mailman mit einem „Error: No Address given“. Das schien aber eine riesige Huerde fuer viele Abonnent*innen zu sein, denn es folgten (schnell gezaehlt) sieben Antworten in diesem Stil:

Date: Mon, 23 Sep 2013 14:10:13 +0000
Subject: Re: [ddj] Can I be removed from mailing list?

Me too, UNSUBSCRIBE
[Fullquote entfernt]

…bis dann Gregor Aisch irgendwann der Kragen platzte:

Date: Mon, 23 Sep 2013 20:45:56 +0200
Subject: Re: [ddj] Can I be removed from mailing list?
To save us all from more "me too" message I repeat 
the instructions once for the list:
To unsubscribe send an email with the subject 
"unsubscribe" to
data-driven-journalism-request@lists.okfn.org

Alternatively you can just send any email to
data-driven-journalism-remove@lists.okfn.org

OR you can use the unsubscribe-form which is, by the way, 
linked at the end of each email you received.
http://lists.okfn.org/mailman/options/data-driven-journalism

Here's more information if you want to dive into this:
https://www.gnu.org/software/mailman/mailman-member/node14.html

Best,
Gregor

Dieser Hinweis kam aber nicht gut an:

Date: Mon, 23 Sep 2013 16:41:24 -0400
Subject: Re: [ddj] Can I be removed from mailing list?
Yall are being very sassy about this, while many of us 
have tried many times to remove ourselves following all 
logical procedures, and it simply hasn't been working.

Peter Troxler rantete parallel in einem separaten „Bitte meldet mich von der Mailingliste ab“-Thread sueffisant ueber die Recherchefaehigkeiten der Betroffenen:

Date: Mon, 23 Sep 2013 20:53:13 +0200
Subject: Re: [ddj] I'd like to be' removed from your list
To all of you who for some funny reason are not able to 
unsubscribe yourselves (apologies to all others):
1. please grow up (yes, this is unnecessary flame, 
apologies)
2. follow the unsubscribe link at the very bottom of 
every mail from the list
3. IMPORTANT: add the email address you want to 
unsubscribe into the first box provided on the site 
(labelled "email address")
4. hit the unsubscribe button a wee bit further down 
under the heading unsubscribe
5. wait for the confirmation email to arrive
6. follow the link given in the confirmation email to 
*really* unsubscribe
7. hit the unsubscribe button on the site again to confirm
Yes, it is seven steps (and I just confirmed that it 
really works, as in step 8 you get a confirmation email).
But is that really *so* difficult for people wanting to be
 "data driven journalists", PLEASE!
/ Peter

So weit, so gut – das Thema schien durch, ich ging ins Bett. Und brauchte heute morgen beim Anblick dessen, was sich danach entwickelte, erst einmal einen Kaffee. Es begann ganz harmlos:

Date: Tue, 24 Sep 2013 22:33:19 +0100 (BST)
Subject: [ddj] confirmation on data-driven journalism
I confirm my subscription to data-driven journalism

Zwischendrin machte sich Michael Kreil ein Spaesschen:

Date: Wed, 25 Sep 2013 00:25:17 +0200
Subject: Re: [ddj] confirmation on data-driven journalism
I confirm my love to the data-driven journalism

…und auch Marco Maas mischte mit:

Date: Wed, 25 Sep 2013 11:48:06 +0200
Subject: Re: [ddj] confirmation on data-driven journalism

i confirm that i read all the mails about confirmations 
of subscriptions.

An der Mehrzahl der Abonnent*innen schien dieser Humor aber vorbeizugehen:

Date: Wed, 25 Sep 2013 10:12:54 -0300
Subject: Re: [ddj] data-driven-journalism Digest, Vol 30, Issue 23
Did the admin ask for people to confirm their allegiance 
to the list in this fashion? I don't quite get it, really.

Anyway, since I'm unvoluntarily contributing to this 
thread, count me in.

Der Bestaetigungsthread umfasst momentan ueber 40 Mails mit der expliziten und vollkommen unnoetigen Bitte, auf der Liste zu bleiben. Nur so als Erinnerung, dass das die fortschrittlicheren unter den Journalist*innen sind –  und selbst da scheint schon E-Mail manchmal eine grosse Huerde zu sein.

Datenkarten, Datenfest, Datenempfehlungen

Mal wieder ein kleiner Rundumschlag angefallener Informationen, die ich loswerden mag:

Datenkarten erstellen

Datenvisualisierung

Daten bereitstellen

Datenkonferenzen

Sonstiges

Kausalzusammenhaenge konstruieren

Die oertliche Zeitung macht zu meiner Freude neuerdings auch wieder ein wenig auf Datenjournalismus: Der Schwoermontag soll laut Willen des Gemeinderats ein frueheres Ende bekommen, weil „die Exzesse zunaehmen“, und ich war positiv ueberrascht, dass man in der Onlineredaktion bei Stadt und Rettungsdienst nach Zahlen fragte, die das belegen sollen. (Warum ich nicht auf den Originalartikel linke, steht hier.)

Visualisiert sind die Zahlen dort mit dem freien Data Wrapper, und da der die Originaldaten immer gleich mit ausliefert, habe ich die Diagramme mal ein wenig ueberarbeitet und hier mit eingestellt. Die Originale kranken naemlich an mancher Stelle:

Im Original des Diagramms steht hier nur „Koerperverletzungen“, und das ist irrefuehrend. Es ist naemlich nicht einfach nur Kleingeistigkeit, hier auf dem Label „erfasste Koerperverletzungen“ oder „Koerperverletzungen, die Polizei und Stadt bekannt gemacht wurden“ zu beharren, sondern ein wesentlicher Unterschied, da das Dunkelfeld ueberhaupt nicht bekannt sein duerfte. Interessant waeren hier noch zusaetzliche Zahlen, beispielsweise wie intensiv bestreift wurde, ob bei den jeweiligen Koerperverletzungen Strafantrag gestellt wurde oder die Polizei das „Einschreiten von Amts wegen“ fuer geboten hielt, und ob es hier die Moeglichkeit einer Korrelation geben koennte. (Spaeter mehr)

Interessant wird es ab hier: Die Entwicklung von Koerperverletzungen und Festnahmen sieht aehnlich aus. Das kann banalerweise damit zusammenhaengen, dass jemand verletzt und die jeweiligen TaeterInnen danach festgenommen wurden — muss es aber nicht, denn der Grund der Festnahme ist nicht aufgeschluesselt. Genauere Daten waeren — wieder einmal — hilfreich.

…und auch die Zahlen des ASB scheinen aehnlich zu verlaufen wie die von Festnahmen und Koerperverletzungen — wobei man sich wieder die Frage stellen darf, ob es auch hier ein Dunkelfeld gibt. Man denke an eine Alkoholintox, die von BesitzerIn in eine Kneipe in der Neustadt geschleppt wird, wo sie/er dann im Strahl reihert und in die Uniklinik gebracht wird — deren Zahlen waeren ebenfalls interessant. Genauso auch hier wieder die Aufschluesselung, was denn genau passierte: Die hohe Verletztenzahl 2012 koennte prinzipiell auch etwas mit schlechter Gefahrenabsicherung und verstauchten Knoecheln zu tun haben, so einfach ist das aus den nackten Zahlen nicht herauszulesen. Genauso gut haette aber auch 2011 eine Massenschlaegerei stattfinden koennen, die einfach von der Polizei nicht wahrgenommen, von den Beteiligten nicht angezeigt und deren Beteiligte nicht medizinisch behandelt wurden.

Man weiss es schlichtweg nicht.

Abschliessend stellen sich zwei Fragen.
Einmal, welches Jahr denn nun der statistische Ausreisser war, 2011 oder 2012, und wie der Trend ueber einen laengeren Zeitraum aussieht. Die ASB-Zahlen geben eine Ahnung, wie es aussehen koennte, verlassen wuerde ich mich aber nicht darauf.
Und zum Anderen, auf was fuer einer verdammt duennen Datenlage die Stadt ihr Vorgehen rund um den Schwoermontag begruendet, und warum.

Open-Data-Links (hauptsaechlich)

OpenData und Co

datascience

Introduction to Data Science mag ich heute besonders hervorheben, weil es ein komplettes Buch rund um Datenauswertung mit R ist, und weil es frei ist (cc-by-nc-sa).
Es beginnt mit einer kleinen Einfuehrung, was ueberhaupt Daten sind, und warum der Autor das kommandozeilenorientierte R statt Excel und Co verwendet (einen Aufsatz ueber die Verbreitung und damit einhergehende Gefaehrlichkeit von Excel gibt es hier, via @343max/@hulalena), fuehrt in kleinen Schritten ueber Data Frames auf statistische Grundlagen wie Quantile, Histogramme und Signifikanz hin, bevor es mit R Studio dann doch klickibunti benutzerfreundlicher wird, um Twitter und Texte zu analysieren, Daten zu speichern und (mein Lieblingsthema! :D) Karten zu bauen.
Alle Beispiele sind aus der Praxis gezogen und ersetzen zwar mit Sicherheit keine tiefere Beschaeftigung mit statistischen Methoden, eignen sich aber wunderbar als Einfuehrung und Appetitmacher auf mehr. Leseempfehlung!

Ausserdem:

API

Unterhaltung

  • Stenocast, Folge 0/1 / stenocast.de — Herr Urbach und Co. lesen alte Plenarprotokolle der Bonner Republik. Arbeitstitel: „Too old, didn’t read“.
  • The Importance of Excel — ob das so unterhaltend ist, sei mal dahingestellt: Warum Excel so weit verbreitet ist, ueberall benutzt wird — und welche Konsequenzen das hat (nochmal aufgegriffen von oben)
  • The Robbers Cave Experiment — Wie Sozialpsychologen einfach mal zwei sommercampende Kindergruppen aufeinander treffen liessen um herauszufinden, was man braucht, damit die sich bekriegen. Aufloesung: Gar nix weiter. (via erlehmann und plom)
  • Traumatische Momente im Kinderfilm — die 50 verstoerendsten Kinderfilmszenen, von den Geisterelefanten bei Dumbo bis — natuerlich — zu Bambis Mutter. (via/@leitmedium)