Am Ende meines Posts zum Corona-Inzidenzfilm hatte ich
zuversichtlich gesagt, der RKI-Datensatz gebe durchaus auch Plots von
Altersmedianen her. Tja… da habe ich den Mund etwas zu voll
genommen, denn was wirklich drinsteht, sind Altersgruppen, und die sind
so grob, dass eine halbwegs seriöse Schätzung hinreichend dekorativer
(also: mit mindestens 256 verschiedenen Werten) Mediane
doch einige Überlegung erfordert.
Die Altersgruppen reichen aber auch ohne Sorgfalt, um eine Art Score
auszurechnen (ich verrate gleich, wie ich das gemacht habe), und damit
ergibt sich zum Beispiel dieser Film:
(sollte euer Browser das vermurksen: Download).
Nur damit sich niemand wundert, wie Herbst-Zahlen in einen Post vom
August kommen: Ich habe den Film bis November 2021 fortgesetzt und
werde ihn künftig wohl noch ein paar Mal aktualisieren.
Was ist da zu sehen? Die Farbskala gibt etwas, das ich Alters-Score
genannt habe. Dabei habe ich die Altersgruppen aus den RKI-Daten so in
Zahlen übersetzt:
| A00-A04 |
2 |
| A05-A14 |
10 |
| A15-A34 |
20 |
| A35-A59 |
47 |
| A60-A79 |
70 |
| A80+ |
85 |
| unbekant |
ignoriert |
Das, was dabei rauskommt, mittele ich für alle berichteten Fälle
innerhalb von 14 Tagen. Die robustere und ehrlichere Alternative wäre
wahrscheinlich, da einen interpolierten Median auszurechnen, aber das
habe ich schon deshalb gelassen, weil ich dann möglicherweise eine obere
Grenze bei A80+ hätte annehmen müssen; so, wie es ist, ist es allenfalls
ein Score, dessen Vergleichbarkeit zwischen Kreisen angesichts
wahrscheinlich recht weit auseinanderliegender Altersverteilungen so
la-la ist. Mehr Substanz als Uni- oder Mensarankings hat er aber auf
jeden Fall (was kein starker Claim ist).
Wirklich fummelig an dieser Visualisierung war, dass für weite Zeiträume
in vielen Kreisen entweder gar keine Daten vorliegen, einfach weil es
keine Infektionen gab, oder die Schätzung auf so wenigen Fällen beruht,
dass sie recht wenig Bedeutung hat. Letzteres würde ein starkes
Blubbersignal liefern, das in Wirklichkeit nur das Rauschen schlechter
Schätzungen beziehungsweise schlecht definierter Verteilungen ist.
Deshalb habe ich die Inzidenz in die Transparenz gesteckt; zwecks
Abstand vom Hintergrund-Weiß fange ich dabei aber gleich bei 20% an,
und weil mir 100 Fälle robust genug erscheinen, setze ich ab einer
14-Tage-Inzidenz von 100 auch 100% Deckung. Wo Daten ganz fehlen,
male ich nur die Umrisse der Kreise.
Was habe ich aus dem Film gelernt? Nun, offen gestanden erheblich
weniger als aus dem Inzidenzfilm im letzten Post. Ich hatte eigentlich
gehofft, dass (mit der derzeitigen Colourmap) ein dramatischer Umschwung
von rötlich nach bläulich stattfindet, wenn Anfang 2021 die Impfungen in
den großen Altenpflegeeinrichtungen anlaufen. Das ist aber allenfalls
dann sichtbar, wenn mensch genau drauf aufpasst. Überhaupt hat mich
überrascht, wie niedrig die Alters-Scores doch meist sind. Hätte ich
vorher nachgedacht, hätten sowohl die Inzidenz-Heatmap des RKI wie auch
einige Prosa zu den Altersverteilungen das allerdings schon stark
nahegelegt, so etwa im letzten Wochenbericht des RKI:
Von allen Todesfällen waren 79.101 (86%) Personen 70 Jahre und älter,
der Altersmedian lag bei 84 Jahren. Im Unterschied dazu beträgt der
Anteil der über 70-Jährigen an der Gesamtzahl der übermittelten
COVID-19-Fälle etwa 13 %.
– Corona war zwar von den Folgen her vor allem ein Problem ziemlich
alter Menschen, getragen haben die Pandemie aber praktisch durchweg die
jüngeren.
Aufschlussreich ist vielleicht, dass die Kreise meist von Blau nach Rot
gehen, Ausbrüche also bei relativ jungen Personen anfangen und sich zu
älteren hinbewegen. Das ist schon beim Heinsberg-Ausbruch zu sehen, der
mit einem Score von 36 anfängt (das hätte ich für einen Kappenabend
nie vorhergesagt) und recht monoton immer weiter steigt.
Bei etwa 55 habe ich ihn aus den Augen verloren. Diese, wenn mensch so
will, Rotverschiebung ist ein recht häufig zu beobachtendes Phänomen in
dem Film. Mein unheimlicher Verdacht ist ja, dass dabei die
outgesourcten Putz- und Pflegekräfte, die im Namen der Kostenersparnis
nicht selten als Kolonne durch mehrere Altenpflegeeinrichtungen
hintereinander gescheucht werden, eine große Rolle gespielt haben.
Recht erwartbar war, dass bei den „jungen“ Kreisen regelmäßig
Unistädte auftauchen, Göttingen z.B. im ansonsten ruhigen Juni 2020,
während gleichzeitig in Gütersloh die Tönnies-Wanderarbeiter deutlich
höhere Alters-Scores haben – beeindruckend, dass diese die Schinderei in
unseren Schlachthöfen in das bei diesem Ausbruch starke A35-A59-bin
durchhalten.
In dieser Ausprägung nicht erwartet hätte ich die grün-rot-Trennung
zwischen West- und Ostdeutschland in der zweiten Welle, besonders
deutlich im Januar 2021. Ein guter Teil davon wird sicher die
Basisdemographie sein, denn arg viele junge Leute, die überhaupt krank
werden könnten, gibt es in weiten Teilen Ostdeutschlands nicht mehr.
Aber so viel anders dürfte das in vielen ländlichen Kreisen
Westdeutschlands auch nicht sein. Hm. Ich brauche gelegentlich nach
Alter und Kreis aufgelöste Demographiedaten für die BRD.
Nehmen wir mal den Landkreis Hof, der im Juni 2021 in den fünf jüngsten
Kreisen mitspielt: da würde ich eigentlich eine recht alte Bevölkerung
erwarten. Der niedrige Score in der Zeit ist also be-stimmt Folge von,
jaklar, den wilden Parties der Jugend, von denen wir schon im Sommer
2020 so viel gehört haben. Naughty kids.
Mit anderen Worten: Ich habe leider keine sehr tiefen Erkenntnisse aus
der Visualisierung gezogen. Wenn das, was da gezeigt ist, nicht
ziemlich ernst wäre, könnte mensch sich immerhin an der
lavalampenähnlichen Erscheinung freuen.
Technics
Das Umschreiben des Codes vom vorigen Post war eine interessante
Übung, die insbesondere eine (vor dem Hintergrund der Empfehlung der
Gang of Four, normalerweise eher über Komposition als über Vererbung
nachzudenken) recht natürliche Anwendung von Vererbung mit sich brachte,
nämlich in der Plotter-Klasse. Auch die Parametrisierung dessen,
worüber iteriert wird (_iter_maps, iter_freqs,
iter_age_scores) war, nun, interessant.
Das Programm hat dabei eine (fast) ordentliche
Kommandozeilenschnittstelle bekommen:
$ python3 mkmovie.py --help
usage: mkmovie.py [-h] [-d] [-i N] [-m ISODATE] {inc,age}
Make a movie from RKI data
positional arguments:
{inc,age} select what kind of movie should be made
optional arguments:
-h, --help show this help message and exit
-d, --design_mode just render a single frame from a dict left in a
previous run.
-i N, --interpolate N
interpolate N frames for one day
-m ISODATE, --min-date ISODATE
discard all records earlier than ISODATE
Damit entsteht der Film oben durch:
$ python3 mkmovie.py --min-date=2020-02-20 -i 7 age
Der aktuelle Code: mkmovie.py und corona.py.