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).
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.
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. 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.
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]
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.
Wir werden am 0. Tag mit einer infizierten Person aus 1000 Büros beginnen.
Der Höhepunkt ist ungefähr der 60. Tag, und es gibt Tage, an denen bis zu 320 infizierte Menschen leben.
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).
Die Peaks sind an den Tagen 52 und 90 verteilt, wobei am Tag 90 bis zu etwa 200 infizierte Tage auftreten.
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.
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.
Ich habe auf die folgende Seite verwiesen.
Recommended Posts