Die Falldaten vom RKI

Achtung, ich bin Armchair-Epidemiologe und überhaupt nicht qualifiziert.

Heute morgen wurde ich darauf aufmerksam gemacht, dass man die Falldaten des RKI herunterladen kann! Als CSV! Hab ich natürlich sofort gemacht und heute dann den größten Teil des Tages damit verbracht zu versuchen mit Python und pandas das irgendwie zu verarbeiten.

Daten

Die Datei, die ich hier habe, heißt RKI_COVID19.csv, wurde am 1. Mai 2020 um 11:58 Uhr heruntergeladen, wiegt 19 MB und hat 124 986 Zeilen.

Spalten

Thematisch sortiert gibt es folgende Spalten in der Tabelle:

Thema Spalten
Fall-ID FID
Anzahl Anzahl Fälle AnzahlFall, AnzahlTodesfall, AnzahlGenesen
Änderung Fälle NeuerFall, NeuerTodesfall, NeuGenesen
Datum Erkrankungsdatum Refdatum, IstErkrankungsbeginn
Meldedatum Meldedatum
Zuletzt aktualisiert Datenstand
Ort Bundesland IdBundesland, Bundesland
Landkreis IdLandkreis, Landkreis
Patienten Altersgruppe Altersgruppe, Altersgruppe2
Geschlecht Geschlecht

Einmal einen Auszug als Beispiel zum besseren sich vorstellen können:

FID Meldedatum Datenstand Refdatum AnzahlFall AnzahlTodesfall AnzahlGenesen NeuerFall NeuerTodesfall NeuGenesen Bundesland Landkreis Altersgruppe Geschlecht IstErkrankungsbeginn Altersgruppe2
4404752 2020-03-14 2020-05-01 2020-03-16 1 0 1 0 -9 0 Schleswig-Holstein SK Flensburg A15-A34 M 1 Nicht übermittelt
4404753 2020-03-19 2020-05-01 2020-03-13 1 0 1 0 -9 0 Schleswig-Holstein SK Flensburg A15-A34 M 1 Nicht übermittelt
4404754 2020-03-19 2020-05-01 2020-03-16 1 0 1 0 -9 0 Schleswig-Holstein SK Flensburg A15-A34 M 1 Nicht übermittelt

Quelle: Robert Koch-Institut (RKI), dl-de/by-2-0

Die meisten Spalten sind selbsterklärend, die anderen werden vom RKI erklärt. Ich paraphrasiere:

Datumsinformationen:

Änderungen:

Die Spalten NeuerFall, NeuGenesen und NeuerTodesfall zeigen an, ob sich der jeweilige Eintrag vom gestrigen auf den heutigen Tag verändert hat. Dabei hat sich das RKI ein (wie ich finde) etwas umständliches Schema ausgedacht, ich verdeutliche das anhand folgender Wahrheitstabelle:

Vortag aktueller Tag Wert
ja ja 0
nein ja 1
ja nein -1
nein nein -9

Ein paar Beispiele: Ein Eintrag, der also am Vortag noch nicht bekannt war (nein) und es heute wird (ja), bekommt einen NeuerFall-Wert von 1. Ein Eintrag für Patienten, die weder am Vortag noch heute gestorben waren (nein und nein), bekommt in der Spalte NeuerTodesfall eine -9. Ein Eintrag für jemanden, der gestern genesen war (ja) und auch heute genesen ist (ja), erhält in der Spalte NeuGenesen eine 0.

Ich würde mal vermuten, die haben mit den Werten 0, 1 und vielleicht -1 für Fallzahlen angefangen und dann ist ihnen hinterher aufgefallen, dass sie für die Genesenen und Todesfälle auch noch was viertes brauchen.

Altersgruppen:

Tatsächlich steht in meiner Datei in der Spalte Altersgruppe2 bei jedem Eintrag Nicht übermittelt – wenn man den Kommentaren auf der Seite glauben darf, scheint das aber erst seit heute so zu sein.

Plausibilitätsprüfung

Bei David Kriesel hab ich gelernt: Wenn du einen Datensatz geschenkt bekommst, dann guck erstmal ob die Daten auch halbwegs Sinn machen.

Anzahl Fälle

Heute ist der 1. Mai 2020. Im gestrigen Situationsbericht vom 30. April 2020 hat das RKI folgende Werte angegeben:

30. April Differenz zum 29. April
Bestätigte Fälle 159.119 +1.478
Verstorbene 6.288 +173
Anteil Verstorbene 4,0%
Genesene ca. 123.500*
*Die Anzahl der Genesenen ist geschätzt!

Quelle: Robert Koch-Institut (RKI), dl-de/by-2-0

Ich hab mir ein kleines Python/pandas Progrämmchen geschrieben und mit meinem Datensatz komme ich dann auf die folgenden Werte:

$ python sanitycheck.py
Loading csv... Done.
Täglicher Situationsbericht (yesterday):
        Bestätigte Fälle:   159119
        Genesene:     ca.   123545
        Verstorbene:          6288
Täglicher Situationsbericht (today):
        Bestätigte Fälle:   160758
        Genesene:     ca.   126865
        Verstorbene:          6481

Da heute ja der 1. Mai ist, sind die Zahlen unter “yesterday” die entsprechenden vom 30. April, und die stimmen toll überein mit denen aus dem Situationsbericht. Hervorragend!

Ob die Angaben für heute auch schon stimmen, wird sich dann heute Abend zeigen. Da das CSV aber nur um Mitternacht aktualisiert wird und die Situationsberichte immer abends veröffentlicht werden, würde ich mal davon ausgehen, dass die Werte im Situationsbericht heute Abend aktueller sind und damit auch anders.

Zeitlicher Verlauf

Als weitere Plausibilitätsprüfung versuchen wir, ein paar der bekannten Diagramme nachzustellen, zuerst die Fälle nach Meldedatum:

Quelle: Robert Koch-Institut (RKI), dl-de/by-2-0

Dann die Fälle nach “Referenzdatum” (also Erkrankungsdatum, bzw. Meldedatum für Fälle ohne Erkrankungsdatum):

Quelle: Robert Koch-Institut (RKI), dl-de/by-2-0

Sieht auch gut aus, sehr ähnlich den Plots im RKI Dashboard.


Damit bin ich für heute hinreichend abgefuckt von pandas und chartjs, das nächste interessante Projekt für einen anderen Tag wäre es, die Imputation der fehlenden Werte zum Erkrankungsbeginn, das Nowcasting und dann die R-Schätzung vom RKI nachzurechnen.