Begründung der Design-Entscheidungen
Meine Simulation zeigt den Corona (COVID-19) und die Ausbreitung in Deutschland. Für die erste Berechnung habe ich die Fallzahlen und die Steigung von verschiedenen Ländern, aber im speziellen von Deutschland analysiert. Die Daten habe ich hierbei aus folgender Tabelle entnommen: https://github.com/CSSEGISandData/COVID-19/blob/master/csse_covid_19_data/csse_covid_19_time_series/time_series_19-covid-Confirmed.csv. Für Deutschland habe ich so einen Anstiegsfaktor von ca. 1,35 im Vergleich zum Vortag ermittelt. Dies hat sich allerdings nur kurz gehalten, da ich mich für meinen Rest der Modellierung auf eine Studie des „imperial college london“ gestützt habe, die Infektionszeiten habe ich einer Studie der Deutschen Gesellschaft für Epidemiologie genutzt. Hierbei war dann der Ausbreitungsfaktor R0 interessant. Dieser wurde hier mit 2,4 angegeben, was bedeutet, dass jeder Infizierte im Schnitt 2,4 neue Leute infiziert. Das ganze habe ich dann noch aufgebrochen in Kontakte/Tag und einen Ansteckungsfaktor. Für Kontakte pro Tag habe ich ohne Einschränkungen 8 Kontakte/Tag angenommen. Da man laut Studie für 3 Tage Infektiös ist, hat man in der Zeit 24 Kontakte. Die Ansteckungswahrscheinlichkeit (ohne Einschränkungen) berechnet sich also wie folgt:
. Hierbei ist x dann die Ansteckungswahrscheinlichkeit die dann bei 0,1 liegt. Dieser Ansteckungsfaktor wird dann mit der Anzahl an ansteckenden Menschen malgenommen. Die Ansteckungen die sich pro Tag ergeben lassen sich also mit der Formel
ansteckende Menschen * Ansteckungsfaktor ausrechnen.
Es muss allerdings für die langfristige Betrachtung auch noch der Faktor der Herden-Immunität mit einberechnet werden. Hierfür habe ich die Variable der nicht-Immunität noch in die Ansteckungen pro Tag eingerechnet. Diese berechnet sich wie folgt:
[nicht Immun/Gesunde]/82000000. Die 82000000 stehen hier für die Bevölkerung Deutschlands. Wenn man diesen Faktor jetzt einfach noch zu dem Ansteckungsfaktor dazurechnet, ist der Faktor der Herden-Immunität auch mit einberechnet
Für meine Simulation habe ich außerdem noch Menschen mit dem Virus berücksichtigt, die aufgrund von milden Symptomen nicht in Quarantäne sind, für die ich angenommen habe, dass diese auch noch ansteckend sind. Aus Gründen der Einfachheit habe ich diese dann einfach dazugezählt, durch die Tage in denen sie ansteckend sind geteilt.
Damit die Zeit bedingten Funktionen bei der Erst-Infektion funktionieren habe ich zudem noch den Stock „Virus“ angelegt, welcher mit dem Flow „erstInfektion“ simuliert wird.
Die infizierten behalten dann für eine Zeit von 5,5 Tagen (Dauer aus der Studie übernommen) ihren Virus und sind noch nicht infektiös. Dementsprechend die Flow-Funktion: Delay([Infiziert_0], {5.5 Days})
Anschließend werden sie für 3 Tage infektiös und infizieren gesunde Menschen aus der Bevölkerung. Sie zählen dann zu den ansteckenden Menschen.
Nach den 3 infektiösen Tagen sind dann 60% der Menschen in Quarantäne, bei 40% der erkrankten sind die Symptome allerdings so niedrig, dass diese ihr Leben ohne Quarantäne weiterführen und deshalb noch ansteckend sind, da sie das Virus nicht bemerken. Deshalb ergeben sich die beiden folgenden Formeln:
Delay([Infiziert_1], {[infektiöse Dauer] Days})*0.4
Delay([Infiziert_1], {[infektiöse Dauer] Days})*0.6
Anschließend erfolgt die Aufteilung in die unterschiedlichen Verläufe. Hierfür habe ich die Tabelle der Studie für die Symptomatischen Verläufe genommen, und die Wahrscheinlichkeiten auf die deutsche Bevölkerung und ihr demographisches Profil übertragen
(Quelle: https://www.imperial.ac.uk/media/imperial-college/medicine/sph/ide/gida-fellowships/Imperial-College-COVID19-NPI-modelling-16-03-2020.pdf, Zugriff: 19.03.2020)
Bevölkerungsgruppe
Menschen in der Gruppe
Menschen im Krankenhaus
Intensivstation
0-9
6.935.000
6.935
346
10-19
7.491.000
22.473
1.123
20-29
9.431.000
113.172
5.659
30-39
10.877.000
348.064
17.403
40-49
10.080.000
493.920
31.117
50-59
14.642.000
1.493.484
182.205
60-69
9.581.000
1.590.446
435.782
70-79
7.645.000
1.857.735
802.541
80+
6.500.000
1.774.500
1.258.121
Insgesamt
83.182.000
7.700.729
2.734.297
Prozentual
100 %
9,3 %
3,28 %
Wenn man nun einrechnet, dass sich in der Aufteilung nur noch 60% der Menschen mit Symptomen befinden, kommt man für Deutschland auf folgende Verteilung
Mild
Krankenhaus
Intensivstation
84,5 %
10,03 %
5,46 %
Bei einem leichten Verlauf sind die Patienten nach einer Woche wieder gesund und gehören nun zu den Immunen, die sich nicht noch einmal infizieren können. Bei einem leichten Verlauf gehe ich davon aus, dass alle Patienten den Krankheitsverlauf nach einer Woche überstehen. Für die leichten/milden Verläufe gibt es also folgende Formeln:
[Quarantäne]*0.845 (Übergang in den Verlauf)
Delay([leichter Verlauf], {1 Weeks}) (Genesung)
Bei einem „mittleren“ Verlauf ist eine Behandlung im Krankenhaus nötig, diese allerdings findet in einem normalen Krankenhausbett statt. Von diesen haben wir in Deutschland aktuell 497.180. Hiervon sind allerdings gerade schon 78% ohne die Corona-Krise ausgelastet, sodass man auf eine Anzahl von freien Betten auf 109.380 kommt. Wenn ein Patient nun also eine Behandlung mit mildem Verlauf bekommt, überlebt er seine Krankheit und verlässt das Krankenhaus nach 2 Wochen. Wenn alle Betten belegt sind, sterben allerdings alle Leute die keine Behandlung bekommen können. Hierfür ergeben sich dann folgende Formeln
[Quarantäne]*0.1003 (Übergang in den Verlauf)
Delay([mittlerer Verlauf mit Behandlung], {2 Weeks}) (Übergang mit Behandlung)
IfThenElse([mittlerer Verlauf mit Behandlung] > [Krankenhausbetten], [mittlerer Verlauf mit Behandlung]-[Krankenhausbetten], 0) (Abfluss der Leute die zu viel im Krankenhaus sind)
Bei der schweren Erkrankung, werden Betten auf der Intensivstation benötigt, von denen es aktuell 28.000 gibt, hiervon sind allerdings nur 5.600 frei. Auch hier sterben Personen, die keine Behandlung genießen können, bei behandelten Personen beträgt die Behandlungsdauer 4 Wochen und die Wahrscheinlichkeit, dass diese die Krankheit überleben 60%. 40% sterben trotz der Behandlung und geben das Bett auf der ITS Station nach 4 Wochen wieder frei. Hierfür ergeben sich also die folgenden Formeln:
[Quarantäne]*0.0546 (Übergang in den Verlauf)
IfThenElse([schwere Erkrankung mit Behandlung] > [ITS Betten], [schwere Erkrankung mit Behandlung]-[ITS Betten], 0) (Tot ohne Behandlung)
Delay([schwere Erkrankung mit Behandlung], {4 Weeks})*0.4 (Tot trotz Behandlung)
Delay([schwere Erkrankung mit Behandlung], {4 Weeks})*0.6 (Genesung mit Behandlung)
Für die Statistik habe ich außerdem noch die Auslastung der Krankenhäuser berechnet, welche mit den folgenden Formeln ausgerechnet wird
[schwere Erkrankung mit Behandlung]/[ITS Betten]*100
[mittlerer Verlauf mit Behandlung]/[Krankenhausbetten]*100
Zum Vergleich mit den Zahlen sind außerdem noch die gemeldeten Fallzahlen wichtig. Da allerdings nur Fälle gemeldet werden die in Quarantäne gehen, habe ich für die gemeldeten Fallzahlen einen Stock erstellt, der sich aus folgender Flow Formel zusammensetzt:
[Übergang in Quarantäne]
Für die Berechnung habe ich das RK4 (Runge-Kutta-Verfahren 4. Ordnung) gewählt, da es sich bei der Simulation um eine kontinuierliche Simulation handelt, in der sich quasi in jedem Moment Personen mit dem Virus infizieren/infizieren können und sich die Änderungsraten quasi immer ändern. Eine Berechnung mit dem Euler-Cache Verfahren würde hier von der Realität noch stärker abweichen.
Beurteilung der Ergebnisse
Für meine Beurteilung werde ich den Vergleich mit realen Zahlen und den aktuellen Fallzahlen durchführen. Die Fallzahlen lassen sich in der oben genannten Tabelle auf GitHub einsehen. Da meine Simulation eine Isolation der Infektionskette nicht einschließt, starten wir nicht mit einem Infizierten, sondern mit einer Zahl wo das Gesundheitsministerium schon überfordert ist. Für die Fallzahlen in Deutschland habe ich mir die Fallzahl 159, vom 2.3.2020 ausgesucht. Wir starten also mit einer Erstinfektion von 159 infizierten, von denen 16 allerdings schon wieder gesund sind, macht 143 Infizierungen. Da dies allerdings nur 60% der infizierten sind, müssen wir mit 238 Infizierten starten. Den infektiösen Zeitraum hatten diese also in den 3 Tagen davor, infiziert haben sie sich 5,5 Tage zuvor, zum infizieren brauchen sie auch noch einen Tag. Bei Tag 9,5 der Simulation sind wir also am 2.3.2020. Da sich die History Funktion ihren Übergang allerdings aufteilt, ist ein so statisches Rückrechnen nur bedingt möglich, weshalb der Ausbruch auch erst 1,5 Tage später startet. Bei Tag 10,5 sind wir bei 176 Fällen, diesen Tag nehmen wir jetzt also als Referenzpunkt für den Vergleich. Doch wenn man sich dann die Kurven anschaut, merkt man wie die Simulation zuerst einen zu starken Anstieg beinhaltet und dann eine zu starke Abflachung. Dies lässt sich in folgender Grafik erkennen:
Anscheinend ist der Faktor der Ansteckung zu hoch, die Ansteckungsdauer ist nicht so lang, die Ansteckung bei nicht bemerken ist falsch, oder der Faktor lässt sich nicht auf Deutschland berechnen. Auch sind die Ausprägungen der Ansteckungswellen in meiner Simulation stärker, was wohl daran liegt, dass die Inkubationszeit zwar im Durchschnitt bei 5,5 Tagen liegt, und 3 Tage danach der Mensch infektiös ist, jedoch auch zu anderen Tagen Infektionen stattfinden. Man muss jedoch beachten, dass sich der Virus in Deutschland ja nicht ohne Grenzen ausbreitet, da ja schon verstärkt auf Hände waschen geachtet wurde, seitdem das Thema bekannt geworden ist. Jedoch lässt sich sowohl in der Simulation, als auch in der realen Welt gerade eine exponentielle Kurve erkennen, in der sich das Virus ausbreitet.
Zusammenfassend muss man einfach erkennen, dass sich der Virus und die Ausbreitung in Deutschland eben doch nicht so einfach simulieren lässt wie es auf den ersten Blick aussieht. Faktoren sind zu unbekannt und auch das Verhalten der Bevölkerung auf Einschränkungen kann man noch nicht genau abschätzen. Trotzdem sind meine Kurven recht nah an der Realität, in ein paar Tagen wissen wir dann auch ob sich die Kurven noch einmal treffen. Aktuell lässt sich jedoch nicht simulieren inwiefern Einschränkungen im öffentlichen Leben wirken, wie die Menschen reagieren und auch die Frage eines Impfstoffes oder der Bau zusätzlicher Betten kann zumindest von mir aktuell nicht mit eingerechnet werden. Trotzdem bin ich der Meinung mit meiner Simulation recht nah an die Realität gekommen zu sein.
Flussdiagramm
Das Flussdiagramm ist in folgendem Klon erkennen: https://insightmaker.com/insight/188828/Corona-DE-Flussdiagramm
Zeitdiagramme
Ich habe folgende Diagramme zur Lesbarkeit der Ergebnisse erstellt:
„Infizierte/Geheilt/Tot“ -> Graph, der die Kurven der aktuell infizierten, der toten und der Immunen zeigt
„Infizierte“ -> Die kummulierten gemeldeten Fälle und die aktuell Infizierten als Graph
„Krankenhaus Auslastung in %“ -> Krankenhausauslastung der ITS Betten und der normalen Betten in % als Graph
„Tode“ -> Die insgesamt gestorbenen Menschen
„Auswertung“ -> Eine Tabelle der kummulierten gemeldeten Fälle zur Angleichung mit den realen Fällen
Folgende Situationen habe ich einmal simuliert:
Die ersten 100 Tage ohne Eingreifen der Regierung
Eine Ausgangssperre nach 10.000 gemeldeten Infizierten
Meine Simulation lässt sich unter folgendem Link erreichen: https://insightmaker.com/insight/188584/Corona-DE
Außerdem habe ich noch folgende Quellen genutzt (zusätzlich zu den im Text genannten):
https://github.com/CSSEGISandData/COVID-19/blob/master/csse_covid_19_data/csse_covid_19_time_series/time_series_19-covid-Recovered.csv
https://www.spiegel.de/wissenschaft/medizin/coronavirus-covid-19-in-grafiken-erklaert-a-35ecab26-66f8-4793-97ea-6d592959d94a
https://www.dgepi.de/assets/Stellungnahmen/Stellungnahme2020Corona_DGEpi-20200319.pdf