transentis consulting

COVID-19 und das SIR-Modell

Untersuchung der COVID-19-Pandemie mit einer Simulation auf der Grundlage des SIR-Modells
  • Stefanie Schröck
    Stefanie Schröck
    Saturday, April 4, 2020
Untersuchung der COVID-19-Pandemie mit einer Simulation auf der Grundlage des SIR-Modells
COVID-19 betrifft uns alle, und obwohl die meisten jetzt akzeptiert haben, dass wir eine Art Social-Distancing brauchen, um die Ausbreitung des Virus zu stoppen, bleibt eine große Frage: Wie lange wird das dauern?
Die Pandemie hat die Welt in Aufruhr versetzt, und wir bewegen uns in unbekanntes Fahrwasser ... tatsächlich haben wir noch nie eine Pandemie dieses Ausmaßes UND dieser wirtschaftlichen Auswirkungen erlebt ... höchstwahrscheinlich ist dies auch das erste Mal, dass wir so viele Daten über eine Pandemie fast in Echtzeit erfasst haben.
Wann immer man Vorhersagen über komplexe Situationen machen muss, mit denen man bisher wenig Erfahrung hat, sind Modelle und Simulationen ein guter Ausgangspunkt, um die Situationen zu erforschen, Annahmen zu testen, Strategien für den Umgang mit der Situation zu entwerfen und qualitative und quantitative Vorhersagen darüber zu machen, welche Auswirkungen die Strategien haben könnten.
Dieser Post enthält z.B. die Simulation der Pandemie COVID-19 ... obwohl es bewusst einfach gehalten ist, um sicherzustellen, dass die Benutzer das zugrunde liegende Modell und die Annahmen verstehen, ist es bereits nützlich, um Ihnen die Möglichkeit zu geben, die Auswirkungen von Strategien zur sozialen Distanzierung zu erforschen. Ein interaktives Dashboard dazu finden Sie auf www.covid-sim.com.
Wir haben den vollständigen Code für die Simulation in Form von Jupyter-Notebooks und Python-Code auf GitHub bereitgestellt (tatsächlich können Sie diesen Beitrag als Jupyter-Notebook ansehen), so dass Sie die Simulation erweitern können, wenn Sie möchten.
Das zugrundeliegende Modell ist eine Implementierung des SIR-Modells, das 1927 von Kermack und McKendrick entwickelt wurde, um die Ausbreitung von Epidemien zu modellieren.
Das SIR-Modell wird oben anhand eines systemdynamischen Bestands- und Flussdiagramms veranschaulicht - es ist leicht verständlich, auch wenn Sie bisher noch nicht auf Bestands- und Flussdiagramme gestoßen sind:
Im Wesentlichen besteht die Population aus denjenigen, die anfällig dafür sind, sich zu infizieren, denjenigen, die gegenwärtig infiziert sind, und denjenigen, die sich erholt haben.
Anfällige Menschen können sich mit einer durch die Infektionsrate definierten Rate infizieren, und infektiöse Menschen erholen sich mit einer durch die Erholungsrate definierten Rate und sterben mit einer durch die Sterberate definierten Rate.
Menschen können sich nur durch Kontakt mit infektiösen Menschen anstecken, daher hängt die Infektionsrate von der Anzahl der infektiösen Menschen, der Kontaktrate (d.h. wie viele Menschen eine Person täglich trifft) und von der Ansteckungswahrscheinlichkeit ab, d.h. wie wahrscheinlich es ist, dass man sich ansteckt, wenn man einer infektiösen Person begegnet.
Die Heilungsrate hängt nur von der Zeit ab.
Das hier dargestellte Modell ist grob auf die Situation in Deutschland kalibriert (Stand 27.3.2020). Es veranschaulicht die Auswirkungen der sozialen Distanzierung bei der Erreichung des Ziels, die Belastung des Gesundheitssystems so gering wie möglich zu halten.
Schlüsselannahmen:
  • Kontaktrate Legt fest, wie vielen Personen eine Person im Durchschnitt pro Tag begegnet; wir nehmen an, dass dies im Basisfall etwa 20 Personen sind.
  • Ansteckungswahrscheinlichkeit Definiert die Wahrscheinlichkeit, dass eine Person nach Kontakt mit einer infektiösen Person infiziert wird. Wir gehen davon aus, dass diese im Basisfall bei 2% liegt.
  • Dauer der Infektion Definiert, wie lange eine infizierte Person ansteckend bleibt. Wir nehmen an, dass die Dauer im Basisfall 20 Tage beträgt.
  • Bevölkerung Die anfällige Bevölkerung beginnt bei 80 Mio., die infektiöse Bevölkerung beginnt bei 120 Personen.
  • Intensivpflege erforderlich Misst die Anzahl der infizierten Personen, die Intensivpflege benötigen, im Basisfall auf 2% festgelegt.
  • Intensivpflege verfügbar Misst die Anzahl der verfügbaren Intensivstationen, die im Basisfall auf 30.000 festgelegt wird.
Mit den obigen Einstellungen bedeutet dies, dass wir in den Basiseinstellungen eine Kontaktzahl von 8 haben. Die Kontaktzahl ist das Produkt aus Kontaktrate, Ansteckungswahrscheinlichkeit und Dauer.

System Dynamics Modell

Schauen wir uns das Modell nun genauer an. Das hier besprochene SIR-Modell wurde in System Dynamics unter Verwendung des Open-Source-Frameworks BPTK-Py und Jupyter-Notebooks implementiert.
Die beste Praxis besteht darin, zuerst alle Modellvariablen zu definieren und dann die Modellgleichungen unter Verwendung dieser Variablen zu definieren.
Modell-Variablen
Als nächstes definieren wir alle Modellvariablen. Wir werden ihre tatsächlichen Werte und ihre Gleichungen im Gleichungsabschnitt festlegen.
Bestände
Das Modell hat, wie oben erläutert, nur vier Bestände:
susceptible = model.stock("susceptible") infectious = model.stock("infectious") recovered = model.stock("recovered") deceased = model.stock("deceased")
Flows
Hier sind die oben diskutierten Flows:
infection_rate = model.flow("infection_rate") recovery_rate = model.flow("recovery_rate") death_rate = model.flow("death_rate")
Konstanten
Die Schlüsselparameter des SIR-Modells:
infectivity = model.constant("infectivity") lethality = model.constant("lethality") normal_contact_rate=model.constant("normal_contact_rate") duration = model.constant("duration")
Die folgenden Parameter werden verwendet, um die Belastung des Gesundheitssystems und insbesondere der Intensivstationen zu modellieren:
intensive_available = model.constant("intensive_available") intensive_percentage = model.constant("intensive_percentage")
Konverter
Das Modell benötigt nicht viele Konverter, die einzigen, die für das Modell wesentlich sind, sind die Gesamtbevölkerung und die Kontaktrate:
total_population = model.converter("total_population") contact_rate = model.converter("contact_rate") 
Um die Belastung des Gesundheitssystems zu berechnen, müssen wir die Anzahl der benötigten Intensivstationen ermitteln:
intensive_needed = model.converter("intensive_needed") 
Die für die Berechnung der Schlüsselindikatoren benötigten Konverter: contact_number = model.converter("contact_number") reproduction_rate = model.converter("reproduction_rate") 
Modell-Gleichungen
Der Schlüsselteil eines jeden Systems Dynamics Modells sind die Gleichungen. Nehmen wir uns etwas Zeit, um diese zu untersuchen:
Wir beginnen mit einem Ausgangswert von 80 Mio. Menschen für den `anfälligen` Bestand (d.h. ungefähr die deutsche Bevölkerung) und nehmen an, dass wir 120 Infizierte haben.
susceptible.initial_value = 80000000.0 infectious.initial_value = 120.0 recovered.initial_value = 0.0 deceased.initial_value = 0.0
Die Einstellungen für Ansteckungswahrscheinlichkeit, Sterblichkeitsrate und die Kontaktrate sind die wichtigsten Einstellungen, die bestimmen, wie schnell sich die Epidemie in der Bevölkerung ausbreitet.
Wir mussten hier einige fundierte Vermutungen anstellen, da die wahre Ansteckungswahrscheinlichkeit und Sterblichkeitsrate derzeit nicht bekannt sind:
Angesichts der Wachstumsrate, die wir in Deutschland mit einer Verdoppelung alle zwei Tage sahen, und unter der Annahme, dass jede Person durchschnittlich 20 Kontakte pro Tag hat (unter normalen Umständen, d.h. ohne Social Distancing), ergab sich die Annahme einer Ansteckungswahrscheinlichkeit von 0,02.
Wir gehen davon aus, dass es 20 Tage dauert, um sich von dem Virus zu erholen, und dass die Sterblichkeitsrate 0,001 beträgt.
infectivity.equation = 0.02 duration.equation = 20.0 lethality.equation = 0.001
In Deutschland gibt es etwa 30.000 Intensivstationen, und aktuelle Daten zeigen, dass ca. 0,2% der Infizierten eine Intensivpflege benötigen. Die benötigten Intensivstationen sind einfach die Infektiösen multipliziert mit diesem Prozentsatz.
intensive_percentage.equation = 0.002 intensive_available.equation = 30000.0 intensive_needed.equation =infectious*intensive_percentage
Die Gleichungen für den Bestand sind leicht zu definieren:
  • Die anfällige Bevölkerung hat einen durch die Ansteckungsrate definierten Abfluss.
  • Die angesteckte Bevölkerung nimmt durch die Infektionsrate zu und wird durch die Genesungsrate und die Sterblichkeitsrate dezimiert.
  • Die erholte Bevölkerung nimmt um die Erholungsrate zu. Das Modell geht davon aus, dass eine Reinfektion nicht stattfindet.
  • Die verstorbene Bevölkerung nimmt um die Sterberate zu.
susceptible.equation = -infection_rate infectious.equation = infection_rate - recovery_rate - death_rate recovered.equation = recovery_rate deceased.equation = death_rate
Die Gesamtbevölkerung nimmt entsprechend der Sterblichkeitsrate langsam ab. Beachten Sie, dass das Modell nur die Todesfälle derjenigen berücksichtigt, die am Coronavirus sterben. Es berücksichtigt auch keine Geburten.
total_population.equation = susceptible+infectious+recovered
Hier sind die wichtigsten Gleichungen des SIR-Modells - sie definieren die zugrunde liegende Dynamik: die Ansteckungsrate, die Erholungsrate und die Sterberate.
Im Wesentlichen ist die Ansteckungsrate gleich der Anzahl der ansteckenden Personen multipliziert mit der Kontaktrate. Diese definiert, wie viele Menschen täglich durch infizierte Personen mit dem Virus in Kontakt kommen. Wir müssen jedoch berücksichtigen, dass nicht jede dieser Personen infiziert wird, deshalb multiplizieren wir diese Zahl mit der Ansteckungswahrscheinlichkeit. Wir müssen auch berücksichtigen, dass einige Menschen, die mit infizierten Menschen in Kontakt kommen, selbst infiziert sein können, daher multiplizieren wir diese Zahl mit dem Bruchteil der anfälligen Menschen. Daraus ergibt sich die folgende Gleichung für die Ansteckungsrate:
infection_rate.equation = (contact_rate*infectivity*infectious)*(susceptible/total_population)
Die Genesungsrate ist gleich der Anzahl infektiöser Menschen geteilt durch die Dauer: nicht alle Menschen erholen sich zur gleichen Zeit, die Anzahl infektiöser Menschen nimmt exponentiell ab.
recovery_rate.equation = infectious/duration
Die Sterberate ist definiert als die Zahl der infektiösen Menschen multipliziert mit der Sterblichkeitsrate.
death_rate.equation = infectious*lethality
Hier sind die Gleichungen für zwei wichtige Indikatoren einer jeden Epidemie, die Kontaktzahl und die Reproduktionsrate: Die Kontaktzahl ist ein Indikator dafür, wie viele Menschen eine infizierte Person infizieren könnte, bevor sie sich erholt, d.h. das Produkt aus Kontaktzahl, Ansteckungswahrscheinlichkeit und Dauer. Die Reproduktionsrate ist gleich der Kontaktrate multipliziert mit dem Bruchteil der anfälligen Personen.
contact_number.equation=contact_rate*infectivity*duration reproduction_rate.equation=contact_number*(susceptible/total_population)
Die obigen Gleichungen sind fast alles, was Sie brauchen, um das SIR-Modell zu simulieren, es fehlt nur noch ein Wert für die Kontaktrate. Im grundlegenden SIR-Modell ist die Kontaktrate einfach ein konstanter Wert, und wir nehmen an, dass die durchschnittliche Kontaktrate bei den Grundeinstellungen 20 beträgt. Lassen Sie uns dies schnell testen, um zu sehen, ob das Modell funktioniert: contact_rate.equation=20

Simulation Dashboard

Mit dem Simulations-Dashboard unten können Sie mit verschiedenen Einstellungen für die Kontaktrate und anspruchsvolleren Social Distancing-Szenarien experimentieren. Spielen Sie ein wenig damit, bevor Sie über die verschiedenen Szenarien, die wir genauer analysiert haben, weiterlesen.
Sie können mit dem Dashboard direkt auf www.covid-sim.com experimentieren. Wir haben das Dashboard als interaktives Jupyter-Notebook in unserem GitHub- Repository veröfentlicht. Bitte laden Sie es von dort herunter und installieren Sie es.
Versuchen Sie, ein Szenario zu finden, das die Zahl der benötigten Intensivstationen unter der Zahl der verfügbaren Stationen hält.
Schauen Sie, welchen Unterschied es macht, wenn Sie die Anzahl der Kontakte während Social Distancing auf 0 setzen oder wenn Sie sie auf einer kleinen Anzahl halten.
Wenn Sie die Anzahl der Kontakte auf Null setzen, dann wird niemand infiziert und wir verlagern das Problem einfach in die Zukunft. Was getan werden muss, um dies zu vermeiden, ist, die Ansteckungswahrscheinlichkeit auf einem Niveau zu halten, das das Gesundheitssystem tolerieren kann, aber dafür zu sorgen, dass die Bevölkerung langsam immun wird, um das Problem nicht in die Zukunft zu verlagern.
Dieser Effekt zeigt auch eine Einschränkung im SIR-Modell ... die Erholungsrate wird als exponentieller Zerfall modelliert, so dass der Infektionsbestand nie ganz auf Null sinkt.

Szenario-Analyse

Jetzt, da wir eine Simulation mit den notwendigen Parametern haben, können wir mit verschiedenen Szenarien experimentieren, um zu sehen, welche Auswirkungen Social Distancing haben wird und wie lange es dauern könnte, bis wir wieder zu einer normalen Situation zurückkehren können.
Bisher haben wir vier Szenarien untersucht:
Base Case. In diesem Fall ändern wir unser Sozialverhalten nicht und machen weiter wie bisher. Das Coronavirus verbreitet sich sehr schnell, was zu einer sehr hohen Belastung des Gesundheitssystems führt.
Slow Social Distancing. In diesem Fall versuchen wir, die Geschwindigkeit, mit der sich das Virus verbreitet, zu verringern, indem wir langsam Social Distancing einführen. Die Simulation zeigt, dass dies kaum Wirkung zeigt, d.h. die in Deutschland getroffenen Maßnahmen zur raschen Einführung von Social Distancing waren richtig.
Rapid Social Distancing, long-term. In diesem Fall führen wir rasche Maßnahmen zur sozialen Distanzierung ein und lassen sie über einen längeren Zeitraum bestehen. Die Simulation zeigt, dass es uns gelingt, die Ausbreitung des Virus ausreichend zu verlangsamen, um die Belastung des Gesundheitssystems gering zu halten. Aber leider dauern die Maßnahmen auch eine ganze Weile.
Rapid social distancing, short-term. In diesem Fall führen wir schnelle Social Distancing-Maßnahmen ein, lockern sie aber sehr schnell. Leider zeigt die Simulation, dass dies nicht funktioniert - wir schaffen es nur, den Höhepunkt in die Zukunft zu verschieben. Wenn es uns also nicht gelingt, andere Maßnahmen wie einen Impfstoff zu entwickeln, wird diese Strategie nicht helfen.
Base Case
Der Base Case beschreibt die Zahlen in Deutschland und zeigt, was passiert, wenn keine Maßnahmen ergriffen werden.
Ohne jegliche Maßnahmen führen die Zahlen zu einem explosionsartigen exponentiellen Wachstum, wie die obige Grafik zeigt. Die untenstehende Grafik zoomt die ersten 25 Tage heran - das exponentielle Wachstum ist bereits sichtbar und die Zahlen passen gut zur Situation in Deutschland.
Ein genauerer Blick auf die ersten 25 Tage zeigt, dass das Modell der Situation in Deutschland recht gut entspricht.
Leider veranschaulicht dieses Szenario gut, dass nicht genügend Intensivstationen zur Verfügung stehen, wenn man die Epidemie ohne Gegenmaßnahmen wachsen lässt.

Ausbreitung des Virus bremsen

Wie können wir die Auswirkungen der Epidemie verringern? Die Schlüsselparameter, die das Ausmass der Epidemie beeinflussen, sind die Kontaktrate und die Ansteckungswahrscheinlichkeit.
Die einzige Möglichkeit, die Ansteckungswahrscheinlichkeit zu verringern, besteht darin, einen Impfstoff zu finden, der die Bevölkerung immunisiert - dies ist keine kurzfristige Option.
Der verbleibende Hebel ist die Kontaktrate - wir können sie durch Social Distancing reduzieren.

Schwaches Social Distancing

In diesem Szenario untersuchen wir, was passiert, wenn wir die Kontaktrate verringern, aber jeweils nur sehr langsam.
Es ist leicht zu sehen, dass dies überhaupt nicht helfen wird:
Wie man der obigen Grafik entnehmen kann, wächst die Zahl der infektiösen Bevölkerung nach wie vor exponentiell. Vergleicht man das Basisszenario mit diesem Szenario mit langsamen Messungen, so stellt man fest, dass es keinen signifikanten Unterschied gibt. Zu vorsichtige Maßnahmen halten die Ausbreitung des Virus nicht auf.

Starkes Social Distancing

Klar ist, dass wir stärkere Maßnahmen brauchen. In diesem Szenario untersuchen wir, was passiert, wenn wir schnell starke Maßnahmen einführen und diese über einen längeren Zeitraum aufrechterhalten:
Die nachstehende Grafik zeigt, dass die strengen Maßnahmen dazu beitragen, die Ausbreitung des Virus einzudämmen. Die infektiöse Bevölkerung wächst nicht exponentiell. Das ist gut zu wissen - wir können durch Social Distancing etwas erreichen, die wichtigste offene Frage ist, wie streng die Massnahmen sein müssen.
Vergleicht man dieses Szenario mit dem Basisszenario, so wird deutlich, wie wichtig Social Distancing ist.
Für dieses Szenario stehen genügend Intensivstationen zur Verfügung. Ein Zusammenbruch des Gesundheitssystems wird nicht eintreten.
Reduzierung der Kontaktrate von großen Gruppen auf zwei Personen für nur kurze Zeit
Dieses Szenario zeigt die Wirkung, wenn Maßnahmen radikal ergriffen werden, um die Ausbreitung des Virus zu verhindern, die dann aber schon nach kurzer Zeit gelockert werden. Wir reduzieren die Kontaktrate nach zehn Tagen auf zwei und erhöhen sie dann 90 Tage später wieder auf 20.
Wir sehen sofort, dass dies nicht hilft:
Alles, was wir erreichen, ist, den Höhepunkt in die Zukunft zu verschieben. Dieses Szenario würde uns also Zeit verschaffen, aber sonst nichts. Natürlich, wenn wir bis dahin einen Impfstoff finden könnten - aber dafür gibt es natürlich keine Garantien.
Ein Vergleich dieses Szenarios mit dem Basisszenario zeigt, dass sich das Problem auf einen späteren Zeitpunkt verlagert. Das bedeutet, dass Maßnahmen, die nur für einen kurzen Zeitraum ergriffen werden, das Virus nicht eindämmen können.
Wie erwartet, gibt es nicht genügend Intensivstationen, sondern erst zu einem späteren Zeitpunkt.

Zusammenfassung

Obwohl dies eigentlich ein recht einfaches Modell mit nur wenigen Parametern ist, können wir bereits einige interessante Aspekte der COVID-19-Pandemie simulieren:
  • Das Verhalten während der ersten 25 Tage passt gut zur Situation in Deutschland
  • Wenn keine Maßnahmen ergriffen werden, werden wir in sehr kurzer Zeit ein exponentielles Wachstum der COVID-19-Fälle erleben
  • Die Umsetzung starker Methoden des Social Distancing führt zu dem gewünschten Ergebnis, die Zahl der COVID-19-Fälle niedrig zu halten und das Gesundheitssystem nicht zu sehr zu belasten.
  • Leider müssen die Maßnahmen zur sozialen Distanzierung noch eine ganze Weile aufrechterhalten werden, um Wirkung zu zeigen.
  • Eine Senkung der Ansteckungsrate auf Null hilft nicht weiter, weil dadurch das Problem nur in die Zukunft verschoben wird ... wir müssen eine Immunität in der Bevölkerung aufbauen.
Das hier vorgestellte SIR-Modell könnte in vielerlei Hinsicht erweitert werden:
  • Gegenwärtig berücksichtigt das Modell regionale Unterschiede nicht.
  • Die Erholungsrate, wie sie im SIR-Modell definiert ist, scheint der Realität nicht gut zu entsprechen ... wir sollten eine robustere Umsetzung anstreben.
  • Das Modell ist nur grob kalibriert - inzwischen liegen uns zahlreiche Daten über die Pandemie aus der ganzen Welt vor, so dass sich hier die Möglichkeit bietet, ein detaillierteres, kalibriertes Modell zu erstellen.
Derzeit arbeiten wir an einer agentenbasierten Version des Modells und planen außerdem, das Modell anhand verfügbarer Daten zu kalibrieren. Schauen Sie also unbedingt in unserem Git-Repository nach zukünftigen Updates.
Upcoming Events

Training AI to Play The Beer Distribution Game

2 hours - 2021-10-27

Mastering The Complexity of Digital Transformation

2 hours - 2021-10-28

Modeling Growth Strategies For Professional Service Firms

2 hours - 2021-11-18

Go to event overview

Recent Blogposts

Meetup: Agile Transformation Tools

Olga Medvedeva - 2021-09-27

Meetup: Understanding The Beer Distribution Game

Olga Medvedeva - 2021-09-01

Introduction to The Business Prototyping Toolkit

Oliver Grasl - 2021-08-17

Go to blog overview

Email newsletter

Subscribe to our newsletter and stay up to date about the latest trends and news.

Name
Email
Subscribe to our newsletter and stay up to date about the latest trends and news.
  • transentis
Contact us

transentis consulting

Geisbergstraße 9

10777 Berlin


+49 30 9203833320

info@transentis.com