[PYTHON] Einführung eines mathematischen Vorhersagemodells für Infektionskrankheiten (SIR-Modell)

1. Einleitung

Die Zahl der mit dem neuen Koronavirus (Convid-19) infizierten Menschen, die im Dezember 2019 in Wuhan, China, aufgetreten sind, nimmt in Japan zu. Wenn Sie verstehen, wie sich Infektionskrankheiten wie Influenza, AIDS, SARS usw. in der menschlichen Bevölkerung ausbreiten, müssen Sie die Auswirkungen gesundheitspolitischer Maßnahmen wie Immunisierung und Isolierung infizierter Personen bestätigen. Ist auch wichtig. Hier werden wir das SIR-Modell vorstellen, das die Grundlage des mathematischen Vorhersagemodells für Infektionskrankheiten bildet, und den Prozess der Berechnung dieses Modells in Python vorstellen.

Nachtrag: Obwohl es nichts mit Programmierung zu tun hat, wurde im Naturgedicht 2015 ein Artikel veröffentlicht, der die Epidemie des neuen Koronavirus vorhersagt. Wenn Sie interessiert sind, lesen Sie bitte den unten verlinkten Artikel, da er Ihnen einen Hinweis darauf gibt, wie sich die Situation dieses neuen Koronavirus konvergieren wird.

** Einführung von Artikeln zur Vorhersage der Epidemie des neuen Koronavirus im Jahr 2015 ** https://qiita.com/kotai2003/private/a44ca921314d17cc62e3

2. Mathematisches Vorhersagemodell für Infektionskrankheiten (SIR-Modell)

Das SIR-Modell ist ein Grundmodell, das den epidemischen Prozess von Infektionskrankheiten beschreibt. Der Name des Modells stammt vom Akronym Susceptible, Infectious, Recovered für die Namen der Modellvariablen. 1927 Erstmals vorgestellt in einem Artikel von W. O. Kermack und A. G. McKendrick.

Im SIR-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.

Figure01.png

Die Bevölkerungszunahme / -abnahme jeder Gruppe wird durch die folgende Differentialgleichung ausgedrückt.


\begin{align}

\frac{dS}{dt} &= -\beta SI \\
\frac{dI}{dt} &=  \beta SI -\gamma I \\
\frac{dR}{dt} &=  \gamma I \\

\end{align} 
\begin{align}
S &:Infizierbare Person\quad \text{(Susceptible)} \\
I &:Infizierte Person\quad \text{(Infectious)} \\
R &:Diejenigen, die nach einer Infektion starben oder Immunität erlangten\quad \text{(Removed)} \\
\beta &:Infektionsrate\quad \text{(The infectious rate)} \quad [1/day] \\
\gamma &:Ausschlussrate\quad \text{(The Recovery rate)} \quad [1/day] \\
\end{align}

Voraussetzungen für dieses SIR-Modell ――Eine Person, die Immunität erworben hat, wird nie wieder infiziert und verliert keine Immunität.

3. Berechnung des SIR-Modells

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
from scipy.optimize import minimize
import matplotlib.pyplot as plt
%matplotlib inline

Als nächstes wird die Differentialgleichung des SIR-Modells in einer Form beschrieben, die durch Odeint berechnet werden kann. Der Code v [0], v [1], v [2] entspricht jeweils S, I, R.

#Define differential equation of SIR model

'''
dS/dt = -beta * S * I
dI/dt = beta * S * I - gamma * I
dR/dt = gamma * I

[v[0], v[1], v[2]]=[S, I, R]

dv[0]/dt = -beta * v[0] * v[1]
dv[1]/dt = beta * v[0] * v[1] - gamma * v[1]
dv[2]/dt = gamma * v[1]

'''
def SIR_EQ(v, t, beta, gamma):
    return [-beta*v[0]*v[1], beta * v[0] * v[1] - gamma * v[1], gamma * v[1]]

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 eine Erstinfektion gab. Stellen Sie die Infektionsrate auf 0,2 / 1000 und die Entfernungsrate auf 0,1 ein.

\begin{align}
\beta &=0.2/1000 \\
\gamma &=0.1 \\
\end{align} 

Berechnen Sie abschließend R0 der Basisreproduktionsnummer. Wenn R0> 1 ist, bedeutet dies, dass diese Infektionskrankheit nicht konvergiert, sondern sich ausbreitet.

#parameters
t_max = 160
dt = 0.01

beta_const = 0.2/1000
gamma_const = 0.1


#initial_state
S_0=999
I_0=1
R_0=0
ini_state = [S_0,I_0,R_0] #[S[0], I[0], R[0]]

#numerical integration
times =np.arange(0,t_max, dt)
args  =(beta_const, gamma_const)

#R0
N_total = S_0+I_0+R_0
R0 = N_total*beta_const *(1/gamma_const)
print(R0)

Das numerische Integrationsergebnis wird im Ergebnis gespeichert und dieses Ergebnis wird auf der Zeitachse aufgezeichnet.

#Numerical Solution using scipy.integrate
#Solver SIR model
result = odeint(SIR_EQ, ini_state, times, args)
#plot
plt.plot(times,result)
plt.legend(['Susceptible','Infectious', 'Removed'])

download.png

Aus dieser Grafik geht hervor, dass bei Auftreten einer infizierten Person (infektiös (0)) in einer Bevölkerung von 1.000 Personen etwa 800 Personen (entfernt (160)) möglicherweise an der Infektion leiden. Und es ist zu sehen, dass der Höhepunkt infizierter Menschen (infektiös) etwa 70 Tage beträgt und dann die Infektion konvergiert. Auf diese Weise ist es möglich, die Auswirkungen von Infektionskrankheiten auf die Bevölkerung anhand der Parameter zu bewerten, die sich auf Infektionskrankheiten beziehen.

4. Referenzmaterialien

-Coronavirus COVID-19 Global Cases https://gisanddata.maps.arcgis.com/apps/opsdashboard/index.html?fbclid=IwAR2FwOf4Cjm4okosqFt0Ddr4k0dUgswM28oAqYkkVY6QT6BBCZQ1NlfPDXk#/bda7594740fd40299423467b48e9ecf6

https://qiita.com/Student-M/items/4e3e286bf08b7320b665

https://scipython.com/book/chapter-8-scipy/additional-examples/the-sir-epidemic-model/

https://www.math.unm.edu/~sulsky/mathcamp/ApplyData.pdf

Recommended Posts

Einführung eines mathematischen Vorhersagemodells für Infektionskrankheiten (SIR-Modell)
Mathematisches Vorhersagemodell für Infektionskrankheiten (SIR-Modell): Fallstudie (1)
Implementieren Sie mit Open Modelica das mathematische Modell "SIR-Modell" von Infektionskrankheiten
Implementieren Sie mit OpenModelica das mathematische Modell "SIR-Modell" von Infektionskrankheiten (siehe Wirkung des Impfstoffs)
Mathematisches Modell von Infektionskrankheiten
Implementieren Sie mit OpenModelica das mathematische Modell "SIR-Modell" von Infektionskrankheiten (Beispiel für wiederholte Regulierung und Entspannung)
Implementieren Sie das mathematische Modell "SIR-Modell" von Infektionskrankheiten in OpenModelica (das die Sterblichkeitsrate und die Reinfektionsrate widerspiegelt).
[Einführung in das Modell der Infektionskrankheiten] Alle Teile Japans enden ... ♬
[Einführung in das SIR-Modell] Betrachten Sie das passende Ergebnis von Diamond Princess ♬
Aufzeichnung der Python-Einführung für Neulinge
Summe der Variablen in einem mathematischen Modell
Vorhersage von Epidemien von Infektionskrankheiten mit dem SIR-Modell
Implementierung eines Deep Learning-Modells zur Bilderkennung
Mathematischer Test 2 (Mathematisches Modell der Item-Reaktionstheorie)