Die neue Coronavirus-Infektion (COVID-19) breitet sich von China nach Europa und Amerika aus und ist weit verbreitet. In Japan gibt es seit dem 27. März 1.254 Infizierte in Japan, und in Tokio fordert der Gouverneur von Tokio Beschränkungen für das Unterlassen, an Wochenenden auszugehen. Im Vergleich zu den G7-Ländern, in denen die medizinische Versorgung relativ gut entwickelt zu sein scheint, ist die Zahl der Menschen in Japan jedoch gering: 85594 in den USA, 80589 in Italien, 43938 in Deutschland, 9155 in Frankreich, 11658 in Großbritannien und 4043 in Kanada. Es steht heraus. In diesem Artikel haben wir als eine Hypothese zur Erklärung dieses Grundes untersucht, ob dies durch ** ein mathematisches Modell erklärt werden kann, das sich auf Cluster-Gegenmaßnahmen ** konzentriert. Der Untersuchungsfluss sind die Probleme des konventionellen Modells, die Prüfung des neuen Modells, die Simulation und die Betrachtung.
Zunächst aus der Schlussfolgerung,
Im folgenden Artikel habe ich ein Modell namens SEIR-Modell berechnet, das den Übergang von Infektionskrankheiten berechnet.
Einfach ausgedrückt ist das SEIR-Modell S: Susceptible, E: Exposed, I: Infectious, R: Infectious. Es ist ein Modell, das ausdrückt, wie sich die Verteilung einer bestimmten Gruppe unter den vier Personen ändert, die sich von der Krankheit erholt und durch eine Differentialgleichung Immunität (wiederhergestellt) erworben haben. Es scheint, dass es häufig in der Trendanalyse von Infektionskrankheiten verwendet wird, und es erscheint häufig in Erklärungsmaterialien des japanischen Gesundheitsministeriums, des britischen Gesundheitsministeriums und der amerikanischen CDC. Wenn Sie jedoch versuchen, die Bevölkerungsgruppe S anhand einer großen Gruppe wie dem ganzen Land oder der gesamten Präfektur zu berechnen, ist dies überhaupt keine Ziffer **. Beispielsweise wird bei der Berechnung des im obigen Artikel untersuchten SEIR-Modells unter der Annahme einer Bevölkerung von 1000 Personen innerhalb von 60 Tagen ein Höchststand erreicht, und auf dem Höchststand werden mehr als 30% der Bevölkerung infiziert, jedoch in Bezug auf das Bevölkerungsverhältnis Selbst wenn Sie sich Italien ansehen, wo die Zahl der Infizierten extrem hoch ist, beträgt die derzeitige Zahl der Infizierten nur etwa 0,1% der Bevölkerung von 60,48 Millionen. Es gibt verschiedene mögliche Gründe, aber die folgenden werden zum Beispiel angenommen.
Denken wir also über ** Gibt es ein Modell, das die Fakten anhand der tatsächlich beobachteten Daten besser erklären kann **?
Lassen Sie uns daher das tatsächlich beobachtete Phänomen überprüfen. Die folgende Abbildung ist das Ergebnis, das von [Untersuchen wir die Konvergenzzeit anhand des globalen Trends der effektiven Reproduktionszahl des neuen Koronavirus] berechnet wurde (https://qiita.com/oki_mebarun/items/24e0dbb3e2e4dff1abee#comments).
Die Zahlen in der Grafik werden basierend auf einem bestimmten Standard für die Anzahl der effektiven Grundreproduktionen berechnet (** unten als Rp. ** bezeichnet). Die gepunktete Linie ist ein ungefährer Ausdruck (logisch linear), der sich dem Diagramm annähert. Die Trends, die aus dieser Grafik abgelesen werden können, sind wie folgt.
Also ** lasst uns diesen beobachteten Trend gehorsam modellieren **. Speziell,
Es wird so sein, wenn es in einer mathematischen Formel geschrieben wird.
Rp(t) = Rp(t_0) \cdot 2^{-\frac{t-t_0}{T_h}}, T_h=7.5[days]
Integrieren Sie diese effektive Reproduktionsnummer Rp (t) in das SEIR-Modell, um es zu einem ** clusterbasierten SEIR-Modell ** zu machen.
\begin{eqnarray}
\frac{dRp}{dt} &=& - \frac{ln2}{T_h}Rp \\
\frac{dS}{dt} &=& -\frac{1}{ip} Rp \cdot I \\
\frac{dE}{dt} &=& -\frac{dS}{dt} - \frac{1}{lp} E \\
\frac{dI}{dt} &=& \frac{1}{lp} E - \frac{1}{ip} I \\
\frac{dR}{dt} &=& \frac{1}{ip} I
\end{eqnarray}
Der Punkt ist, dass es im Gegensatz zum ursprünglichen SEIR-Modell nicht vom Anfangswert von ** S (t) ** abhängt. Im Folgenden möchte ich dieses Modell mit dem Effekt von Anti-Clustering untersuchen, dh dem Effekt, einen Cluster zu entdecken und infizierte Personen, die aus dem Cluster stammen, zu entdecken und zu isolieren **.
Berechnen wir das obige clusterbasierte SEIR-Modell in Python. Importieren Sie die Bibliothek.
import numpy as np
import matplotlib.pyplot as plt
ODE definieren. Um den Effekt von Cluster-Gegenmaßnahmen zu berechnen, wird dieser nach einer bestimmten Zeit $ T_c $ mit $ Rp = 0 $ berechnet.
#define differencial equation of seir model
def seir_eq7(v, t, keys):
Th = keys['Th']
lp = keys['lp']
ip = keys['ip']
Tc = keys['Tc']
#
Rp = v[0];
s = v[1];
e = v[2];
i = v[3];
r = v[4];
#
if t >= Tc:
Rp = 0
#
dRp = - np.log(2)/Th * Rp
ds = - Rp/ip * i
de = - ds - (1/lp) * e
di = (1/lp)*e - (1/ip)*i
dr = (1/ip)*i
return [dRp, ds, de, di, dr]
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
Dies ist der zu simulierende Code, indem der anfängliche Clusterwert $ Rp (t_0) $ auf verschiedene Arten geändert wird. Die Parameter sind $ lp = 5, ip = 8, Th = 7,5 $.
# case 7.1
def calcsim(Rp0, keys):
# solve seir model
# Rp S E I R
ini_state=[Rp0, 0, 0, 1, 0]
t_max=180
dt=0.01
t=np.arange(0,t_max,dt)
#
sim = my_odeint(seir_eq7, ini_state, t, keys)
#
plt.rcParams["font.size"] = 12
fig, ax = plt.subplots(figsize=(10,5))
ax.plot(t,sim[:,[2,3,4]]) # extract Rp, E I R
ax.set_xticks(np.linspace(0,t_max,19))
ax.grid(which='both')
ax.legend([ 'Exposed', 'Infected','Recoverd'])
ax.set_xlabel('date')
ax.set_ylim(0,)
plt.show()
print("R(tmax):{}".format(sim[-1,4]))
# try different Rp0
keys = {'lp':5, 'ip':8, 'Th':7.5, 'Tc':200 }
calcsim(100, keys)
calcsim(30, keys)
calcsim(20, keys)
calcsim(10, keys)
# try different Tc
keys = {'lp':5, 'ip':8, 'Th':7.5, 'Tc':20 }
calcsim(10, keys)
keys = {'lp':5, 'ip':8, 'Th':7.5, 'Tc':10 }
calcsim(10, keys)
Dies ist der zu simulierende Code, indem die Zeit für die Cluster-Gegenmaßnahme $ T_c $ auf verschiedene Weise geändert wird.
# case 7.2
def calcTctoRp(Rp0):
# Rp S E I R
ini_state=[Rp0, 0, 0, 1, 0]
t_max=180
dt=0.01
t=np.arange(0,t_max,dt)
#
lp = 5
ip = 8
keys = {'lp':lp, 'ip':ip, 'Th':7.5, 'Tc':(5+0) }
#
rslt = []
for i in range(0,60):
keys['Tc'] = lp + i
sim = my_odeint(seir_eq7, ini_state, t, keys)
rslt.append([keys['Tc'], sim[-1:,4]]) # (i, R(tmax))
#
rslt = np.array(rslt)
ymax = max(rslt[:,1])
plt.rcParams["font.size"] = 12
fig, ax = plt.subplots(figsize=(10,5))
#
ax.plot([0 , 0],[0,ymax],'m:')
ax.plot([lp,lp],[0,ymax],'b:')
ax.plot([lp+ip,lp+ip],[0,ymax],'g:')
#
ax.plot( rslt[:,0], rslt[:,1], 'r')
ax.legend([ '0 day', 'lp days','lp + ip days','Total infected'], loc='lower right')
ax.grid(which='both')
ax.set_xlabel('cluster shutdown date since cluster occured')
ax.set_ylabel('R(tmax)')
#
for tat in [10,13,20,30,40]:
idx = [i for i in range(len(rslt[:,0])) if rslt[i,0] >= tat][0]
print("R_fin with Tc:{} is {}".format(rslt[idx,0], rslt[idx,1]))
#
ax.set_xlim(-1,)
ax.set_ylim(0,)
plt.show()
calcTctoRp(100)
calcTctoRp(30)
calcTctoRp(20)
calcTctoRp(10)
Werfen wir einen Blick auf die Berechnungsergebnisse. Das Ergebnis der Änderung einiger Muster der anfänglichen Reproduktionsnummer $ Rp (t_0) $ und der Änderung der Cluster-Gegenmaßnahmenzeit $ T_c $ durch Festlegen von $ Rp (t_0) $ wird angezeigt.
Schließlich werden 113 Menschen infiziert sein.
Schließlich werden 3493 Menschen infiziert sein.
Schließlich werden 58.437 Menschen infiziert sein.
Wenn die anfängliche Reproduktionsnummer Rp (t_0) = 10 ist, wird die Cluster-Gegenmaßnahmenzeit Tc geändert und verifiziert. Je früher die Cluster-Maßnahmen ergriffen werden, desto effektiver wird sie natürlich erwartet. In der obigen Simulation wurden 113 Personen schließlich ohne Clustermaßnahmen infiziert.
Wenn der Infizierte innerhalb von 10 Tagen nach dem Cluster isoliert werden kann, kann die endgültige Anzahl der Infizierten von 113 auf 21 reduziert werden.
Wenn der Infizierte innerhalb von 20 Tagen nach dem Cluster unter Quarantäne gestellt werden kann, kann die endgültige Anzahl der Infizierten von 113 auf 64 reduziert werden.
Lassen Sie uns die Beziehung zwischen der Cluster-Gegenmaßnahmenzeit Tc und der endgültigen Anzahl infizierter Personen grafisch darstellen. Gepunktete Linien werden an drei Punkten gezeichnet: wenn ein Cluster auftritt, wenn die Latenzzeit lp abgelaufen ist und wenn die Latenzzeit + Infektionsperiode (lp + ip) abgelaufen ist.
Im Vergleich zu Rp (t_0) = 10 ist der Effekt von Clustermaßen relativ erhöht.
Im Vergleich zu Rp (t_0) = 20 ist der Effekt von Clustermaßen relativ erhöht.
Aus dem Obigen können die folgenden Trends aus der Simulation hinsichtlich des Übergangs der Anzahl infizierter Personen und der Auswirkung der Cluster-Gegenmaßnahmenzeit basierend auf dem clusterbasierten SEIR-Modell abgeleitet werden.
Selbst im clusterbasierten SEIR-Modell, das nicht den Anfangswert von + S annimmt, hat die Kurve fast die gleiche Form wie das normale SEIR-Modell.
Ich habe auf die folgende Seite verwiesen.
Recommended Posts