[PYTHON] Überprüfen Sie die Wirkung des Urlaubs als Gegenmaßnahme gegen das neue Koronavirus mit dem SEIR-Modell

Einführung

Ab dem 5. März 2020 wurde die Situation in Japan gegen das neue Koronavirus (COVID-19) sehr ernst genommen, einschließlich Einwanderungsbeschränkungen aus anderen Ländern. Die Regierung hat beantragt, dass alle Grund-, Mittel- und Oberschulen im ganzen Land geschlossen werden, und während einige die Auswirkungen in Frage gestellt haben, wird auch verstanden, dass politisches Urteilsvermögen notwendig ist, weil es schwierig ist, eine wissenschaftliche Grundlage aufzuzeigen. Ich kann es schaffen In diesem Artikel wird das SEIR-Modell verwendet, das eines der mathematischen Modelle für Infektionskrankheiten ist, um zu überprüfen, ob es möglich ist, die Spitzeninfektion zu kontrollieren, indem eine bestimmte Zeitspanne von einer Schule / Geschäftseinrichtung (mit einer Skala von 1000 Personen) genommen wird. ist. Dieser Artikel ist jedoch eine Simulation unter begrenzten Annahmen und bietet keine wissenschaftliche Bestätigung oder akademische Beweise. Wir übernehmen keine Verantwortung, da dies hilfreich oder falsch sein kann. Für die meisten Programme habe ich auf [diesen Artikel] verwiesen (https://qiita.com/Student-M/items/4e3e286bf08b7320b665).

Voraussetzungen

Details des SEIR-Modells werden in diesem Artikel weggelassen, jedoch in Wikipedia. Gemäß

Es besteht aus und sein Akronym heißt SEIR-Modell. Es scheint. SEIR-Modellparameter umfassen

es gibt. Laut Ministerium für Gesundheit, Arbeit und Soziales ist die Latenzzeit der WHO derzeit bekannt. Ist 1-12,5 Tage (meistens 5-6 Tage), "nehmen wir also 5,5 Tage an. Die Dauer der Infektion ist unbekannt, aber es wird gesagt, dass der Beginn des Fiebers etwa 4 Tage andauert und sich dann erholt oder schwerwiegend wird, sodass von 8 Tagen ausgegangen wird. (Wenn der Zustand schwerwiegend wird, wird davon ausgegangen, dass der Patient ins Krankenhaus eingeliefert wird, aber die leicht kranke Person muss sich erholen, während sie ein normales Leben führt, ohne sich dessen bewusst zu sein.) Das wichtigste ist die Infektionsrate, aber basierend auf den Daten des Ministeriums für Gesundheit, Arbeit und Soziales haben wir Folgendes getan.

Infektionsrate

Laut Fragen und Antworten des Ministeriums für Gesundheit, Arbeit und Soziales ist die Häufigkeit einer infizierten Person, die eine Sekundärinfektion verursacht, in der folgenden Abbildung dargestellt. Es scheint, dass. Q14.jpg Aus diesen Daten unter Verwendung einheitlicher Zufallszahlen Definieren Sie eine Funktion zur Berechnung der Rate R0 (Basisreproduktionsnummer), die eine Sekundärinfektion erzeugt.

def COVID19R0(er):
    if np.random.rand() < er:
        # good environment
        if np.random.rand() < 0.8:
            R0 = 0
        else:
            R0 = np.random.randint(1,4)*1.0
    else:
        # bad environment
        R0 = np.random.randint(0,12)*1.0
    return R0

Hier ist er definiert als die Wahrscheinlichkeit, dass sich die Infektionsquelle in einer schlecht belüfteten Umgebung befand.

Zusätzliche Parameter

Wir möchten auch die Auswirkungen des Urlaubs bewerten und werden daher die folgenden Parameter einführen:

Basierend auf R0 und diesen Parametern habe ich das SEIR-Modell wie folgt modifiziert:

#define differencial equation of seir model
def seir_eq5(v,t, keys):
    er = keys['er']
    lp = keys['lp']
    ip = keys['ip']
    tb = keys['tb']
    te = keys['te']
    #
    if t >= tb and t <= te: #Urlaubszeit
        R0 = 0 #Vollständig geschlossen (wenn sich keine Personen in der Schule / im Geschäftsbüro befinden)
    else:
        R0 = COVID19R0(er)
    #
    ds = - R0/ip * v[2] if v[0] >= 0 else 0 # note: s >= 0
    de = -ds - (1/lp) * v[1]
    di = (1/lp)*v[1] - (1/ip)*v[2]
    dr = (1/ip)*v[2]
    return [ds, de, di, dr]

Andere Programme

Importieren Sie die Bibliothek, um die Simulation auszuführen.

import numpy as np
import matplotlib.pyplot as plt

Definieren Sie eine Funktion zum Lösen von ODE.

def my_odeint(deq, ini_state, tseq, keys):
    sim = None
    v = np.array(ini_state).astype(np.float64)
    dt = (tseq[1] - tseq[0])*1.0
    for t in tseq:
        dv = deq(v,t, keys)
        v = v + np.array(dv) * dt
        if sim is None:
            sim = v
        else:
            sim = np.vstack((sim, v))
    return sim

Code, der die Ergebnisse berechnet und grafisch darstellt.

#solve seir model
ini_state=[999,0,1,0]
t_max=180
dt=0.01
t=np.arange(0,t_max,dt)
#
keys = {'er':0.5, 'lp':5.5, 'ip':8, 'tb':0, 'te':0}
sim = my_odeint(seir_eq5, ini_state, t, keys)
#
plt.rcParams["font.size"] = 12
fig, ax = plt.subplots(figsize=(10,5))
ax.plot(t,sim)
ax.set_xticks(np.linspace(0,t_max,19))
ax.set_yticks(np.linspace(0,1000,11))
ax.grid(which='both')
ax.legend(['Susceptible','Exposed','Infected','Recovered'])
plt.show()

Hier wurde äh (Wahrscheinlichkeit, dass sich die Infektionsquelle in einer schlecht belüfteten Umgebung befand) mit 0,5 angenommen.

Simulationsergebnis

Wir werden am 0. Tag mit einer infizierten Person aus 1000 Büros beginnen.

Das erste ist, wenn Sie keinen Urlaub nehmen.

nonstop.png Der Höhepunkt ist ungefähr der 60. Tag, und es gibt Tage, an denen bis zu 320 infizierte Menschen leben.

Dies ist der Fall, wenn wir ab einem sehr frühen Stadium (30. Tag) für 20 Tage geschlossen sind.

tb30te50.png Der Höhepunkt ist ungefähr der 95. Tag, und es gibt Tage, an denen bis zu 310 infizierte Menschen leben. Es ist interessant, dass die Spitzenverzögerungstage (35 = 95-60) länger sind als die Feiertage (20 Tage).

Dies ist der Fall, wenn der Patient ab dem Stadium, in dem die Infektion schnell zuzunehmen beginnt (Tag 50), 20 Tage lang geschlossen ist.

tb50te70.png Die Peaks sind an den Tagen 52 und 90 verteilt, wobei am Tag 90 bis zu etwa 200 infizierte Tage auftreten.

Dies ist der Fall, wenn wir ab dem Stadium, in dem die Infektion nachlässt (60. Tag), für 20 Tage geschlossen sind.

tb60te80.png Das Ergebnis ist das gleiche, als würden Sie keinen Urlaub nehmen. Dies liegt vermutlich daran, dass am 60. Tag niemand (anfällig) gegen die S: -Infektion immun war.

Erwägung

Aus dem oben Gesagten können die folgenden Trends aus der Simulation hinsichtlich der Spitzenkontrolle der Infektion abgeleitet werden, indem für einen bestimmten Zeitraum (20 Tage) von Schulen und Geschäftseinrichtungen (mit einer Skala von 1000 Personen) Urlaub genommen wird.

Wenn Sie sich beurlauben lassen möchten, ist es daher möglicherweise am effektivsten, dies von "dem Stadium, in dem die Infektion schnell zuzunehmen beginnt" bis "bevor die Infektion nachlässt" zu tun.

Außerdem ...

Referenzlink

Ich habe auf die folgende Seite verwiesen.

Recommended Posts

Überprüfen Sie die Wirkung des Urlaubs als Gegenmaßnahme gegen das neue Koronavirus mit dem SEIR-Modell
Simulieren wir den Effekt der Einführung einer Kontaktverfolgungs-App als Gegenmaßnahme gegen den neuen Koronavirus
GUI-Simulation des neuen Koronavirus (SEIR-Modell)
Ich habe versucht, das Verhalten des neuen Koronavirus mit dem SEIR-Modell vorherzusagen.
Lassen Sie uns den Unterschied in der Ausbreitung des neuen Koronavirus zwischen Japan und anderen Ländern anhand eines Cluster-Gegenmaßnahmenmodells erklären
Analysieren Sie das Themenmodell, mit GensimPy3 Romanautor zu werden
Zeichnen Sie die Ausbreitung des neuen Koronavirus
Ich habe versucht, die Anzahl der im Inland infizierten Menschen der neuen Korona mit einem mathematischen Modell vorherzusagen
Die Geschichte des Studenten, der die neue Website für Gegenmaßnahmen gegen Koronaviren entwickelt hat (Ishikawa-Version)
Schätzen Sie die maximale Infektiosität des neuen Coronavirus ab
Ich habe versucht, ein Modell mit dem Beispiel von Amazon SageMaker Autopilot zu erstellen
Ich habe versucht, die Literatur des neuen Corona-Virus mit Python automatisch an LINE zu senden
Ein Modell, das die Gitarre mit fast.ai identifiziert
Ich habe versucht, mit dem Seq2Seq-Modell von TensorFlow so etwas wie einen Chatbot zu erstellen
Die Theorie, dass der Schlüssel zur Kontrolle der Infektion des neuen Coronavirus die Hyperdispersion der Anfälligkeit ist.
Ich habe versucht, die Eigenschaften der neuen Informationen über mit dem Corona-Virus infizierte Personen mit Wordcloud zu visualisieren
Lassen Sie uns eine Rangfolge der Anzahl der wirksamen Reproduktionen des neuen Koronavirus nach Präfektur erstellen
Ruft den Variablennamen der Variablen als Zeichenfolge ab.
Machen Sie LCD-Screenshots mit Python-LEGO Mindstorms
Visualisieren Sie das charakteristische Vokabular eines Dokuments mit D3.js.
Lassen Sie uns die medizinische Kollapshypothese des neuen Koronavirus testen
Aufgaben zu Beginn eines neuen Python-Projekts
Geben Sie das Ausgabeergebnis von sklearn.metrics.classification_report als CSV-Datei aus
Berechnen Sie das Produkt von Matrizen mit einem Zeichenausdruck?
(Erster Beitrag) Eine Geschichte über die numerische Berechnung von Influenza und neuem Lungenentzündungs-Coronavirus mit Tensorflow
Neue Corona-Virus-Infektion: Die Rolle sozialer Distanzstrategien mit einem einfachen Modell verstehen
Wenn die Menschen in Tokio ernsthaft an dem neuen Koronavirus erkranken, können sie in ein Krankenhaus in der Präfektur Kagoshima gebracht werden.