Die Zahl der Menschen, die im Dezember 2019 in Wuhan, Provinz Hubei, China, mit der neuen Koronapneumonie (Covid-19) infiziert waren, nimmt auch in Japan zu. Das Verständnis des Prozesses, durch den sich Infektionskrankheiten wie Influenza, AIDS, SARS usw. in der menschlichen Bevölkerung ausbreiten, soll die Auswirkungen gesundheitspolitischer Maßnahmen wie Immunisierung und Isolierung infizierter Personen bestätigen. Ist auch wichtig. Im vorherigen Artikel habe ich das SIR-Modell erläutert, aber ich werde das SEIR-Modell vorstellen, das die Latenzzeit von Infektionskrankheiten berücksichtigt. Ich werde den Prozess der Berechnung dieses Modells mit Python und das Berechnungsergebnis der Ausbreitung des neuen Koronavirus mit diesem SEIR-Modell vorstellen.
Nachtrag: Ich habe versucht, eine GUI basierend auf dem Inhalt dieses Artikels zu erstellen.
** GUI-Simulation des neuen Koronavirus (SEIR-Modell) ** https://qiita.com/kotai2003/items/f6cf36e9c22c3e776dee
Im SEIR-Modell wird die gesamte Population in die folgenden Gruppen eingeteilt, und die Zunahme / Abnahme der Population jeder Gruppe in Bezug auf die Zeit wird durch eine Differentialgleichung ausgedrückt.
Die Bevölkerungszunahme / -abnahme jeder Gruppe wird durch die folgende Differentialgleichung ausgedrückt.
\begin{align}
\frac{dS}{dt} &= -\beta \frac{SI}{N} \\
\frac{dE}{dt} &= \beta \frac{SI}{N} -\epsilon E \\
\frac{dI}{dt} &= \epsilon E -\gamma I \\
\frac{dR}{dt} &= \gamma I \\
\end{align}
\begin{align}
S &:Infizierbar, infektiös ohne Immunität\quad \text{(Susceptible)} \\
E &:Infektionskrankheit während der Latenz\quad \text{(Infectious)} \\
I &:Diejenigen, die eine Infektionskrankheit haben, diejenigen, die durch Kontakt infiziert werden können(S)Mit Krankheit infiziert\quad \text{(Infectious)} \\
R &:Diejenigen, die nach einer Infektion starben oder Immunität erlangten\quad
\text{(Removed)} \\
N &:Gesamtbevölkerung, S+E+I+R
\end{align}
\begin{align}
\beta &:Infektionsrate\quad \text{(The infectious rate)} \\
\epsilon &:Infektionsrate nach Exposition\quad \text{(The rate at which an exposed person becomes infective)} \quad [1/day] \\
\gamma &:Ausschlussrate\quad \text{(The Recovery rate)} \quad [1/day] \\
\end{align}
\begin{align}
\ l_p &:Wartezeit für Infektionen\text{(latency period [day])}\quad \epsilon= \frac{1}{l_p} \\
\ i_p &:Infektionszeitraum\text{(Infectious period [day])}\quad \gamma= \frac{1}{i_p} \\
\end{align}
Voraussetzungen für dieses SIR-Modell ――Eine Person, die Immunität erworben hat, wird nie wieder infiziert und verliert keine Immunität.
Das SIR-Modell wird durch numerische Integration gelöst. Hier verwenden wir die Odeint-Funktion, die die Runge-Kutta-Gleichung des Python Scipy-Moduls löst.
import numpy as np
from scipy.integrate import odeint
import matplotlib.pyplot as plt
Beschreiben Sie als nächstes die Differentialgleichung des SIR-Modells in einer Form, die durch Odeint berechnet werden kann. Hier entsprechen v [0], v [1], v [2], v [3] jeweils S, E, I, R.
# Define differential equation of SEIR model
'''
dS/dt = -beta * S * I / N
dE/dt = beta* S * I / N - epsilon * E
dI/dt = epsilon * E - gamma * I
dR/dt = gamma * I
[v[0], v[1], v[2], v[3]]=[S, E, I, R]
dv[0]/dt = -beta * v[0] * v[2] / N
dv[1]/dt = beta * v[0] * v[2] / N - epsilon * v[1]
dv[2]/dt = epsilon * v[1] - gamma * v[2]
dv[3]/dt = gamma * v[2]
'''
def SEIR_EQ(v, t, beta, epsilon, gamma, N ):
return [-beta * v[0] * v[2] / N ,beta * v[0] * v[2] / N - epsilon * v[1],
epsilon * v[1] - gamma * v[2],gamma * v[2]]
Definieren Sie dann jeden Parameter und jede Anfangsbedingung, die für die numerische Integration erforderlich sind. Nehmen wir an, dass es bei einer Bevölkerung von 1.000 Personen eine Person gibt, die während der Latenzzeit eine frühe Infektion hat. Stellen Sie die Infektionsrate auf 1, die Wartezeit für die Infektion auf 2 Tage und die Infektionsdauer auf 7,4 Tage ein.
# parameters
t_max = 100 #days
dt = 0.01
# initial_state
S_0 = 99
E_0 = 1
I_0 = 0
R_0 = 0
N_pop = S_0 + E_0 + I_0 + R_0
ini_state = [S_0, E_0, I_0, R_0] # [S[0],E,[0], I[0], R[0]]
#Infektionsrate
beta_const = 1 #Infektionsrate
#Infektionsrate nach Exposition
latency_period = 2 #days
epsilon_const = 1/latency_period
#Wiederherstellungsrate und Isolationsrate
infectious_period = 7.4 #days
gamma_const = 1/infectious_period
Speichern Sie das Ergebnis der numerischen Integration im Ergebnis und zeichnen Sie dieses Ergebnis auf der Zeitachse auf.
# numerical integration
times = np.arange(0, t_max, dt)
args = (beta_const, epsilon_const, gamma_const, N_pop)
# Numerical Solution using scipy.integrate
# Solver SEIR model
result = odeint(SEIR_EQ, ini_state, times, args)
# plot
plt.plot(times, result)
plt.legend(['Susceptible', 'Exposed', 'Infectious', 'Removed'])
plt.title("SEIR model COVID-19")
plt.xlabel('time(days)')
plt.ylabel('population')
plt.grid()
plt.show()
Aus dieser Grafik kann gesagt werden, dass bei einer Bevölkerung von 100 Personen eine Person (exponiert (0)) während der Latenzzeit eine Infektion hat und schließlich 100 Personen (entfernt (100)) die Infektion erleiden. Das ist. Es ist ersichtlich, dass der Höhepunkt infizierter Personen (infektiös) um 18 Tage auftritt und dann die Infektion konvergiert. Auf diese Weise ist es möglich, die Auswirkung von Infektionskrankheiten auf die Bevölkerung anhand von Parametern zu bewerten, die sich auf Infektionskrankheiten beziehen.
Derzeit wurden viele Forschungsarbeiten veröffentlicht, um die SEIR-Parameter aus den Fällen des neuen Coronavirus abzuschätzen. Dieses Mal werde ich das SEIR-Modell mit den Parameterschätzungen berechnen, die in dem am 16. Februar veröffentlichten Artikel veröffentlicht wurden. (Referenz 2)
Parameter | Festlandchina (ohne Provinz Hubei) | Provinz Hubei (außer Wuhan) | Wuhan |
---|---|---|---|
Bevölkerung N.(million) | 1340 | 45 | 14 |
Infektionsrate[beta] | 1.0 | 1.0 | 1.0 |
Latency period (days) | 2 | 2 | 2 |
infectious_period (days) | 6.6 | 7.2 | 7.4 |
E_0 | 696 | 592 | 318 |
I_0 | 652 | 515 | 389 |
Das Berechnungsergebnis wird angezeigt. Beachten Sie, dass jeder auf der vertikalen Achse eine andere Bevölkerungszahl hat. Die erste Grafik zeigt die Ausbreitung der Infektion auf dem chinesischen Festland ohne die Provinz Hubei.
Die zweite Grafik zeigt die Ausbreitung der Infektion in der Provinz Hubei ohne Wuhan.
Das dritte Diagramm ist eine Vorhersage der Ausbreitung der Wuhan-Infektion.
Nach der Vorhersage mit diesem Parameter wird die Anzahl der Infizierten in 30 bis 40 Tagen ihren Höhepunkt erreichen und schließlich werden fast 100% der Bevölkerung infiziert sein (entfernt (100)). Ich war wirklich überrascht. Wahrscheinlich basiert das Vorhersageergebnis auf dem schlimmsten Fall. Ich denke, es ist notwendig, auf jeden Schritt dieses Koronavirus zu achten.
SEIR and SEIR models https://institutefordiseasemodeling.github.io/Documentation/general/model-seir.html
Epidemic analysis of COVID-19 in China by dynamical modeling https://arxiv.org/abs/2002.06563
Einführung von Artikeln, die den Ausbruch des Coronavirus im Jahr 2015 vorhersagten https://qiita.com/kotai2003/private/a44ca921314d17cc62e3
Recommended Posts