[PYTHON] Modèle mathématique des épidémies de maladies infectieuses

introduction

Le nouveau virus corona est une épidémie dans le monde entier et l'Organisation mondiale de la santé (OMS) a déclaré une urgence le 30 janvier. Des tentatives ont longtemps été faites pour prédire les épidémies en simulant des maladies infectieuses telles que le coronavirus à l'aide de modèles mathématiques. Dans cet article, nous présenterons le modèle SIR le plus élémentaire parmi les modèles mathématiques d'épidémies de maladies infectieuses et effectuerons des simulations numériques à l'aide de Python.

Qu'est-ce qu'un modèle SIR?

Le modèle SIR est une équation modèle classique qui décrit de manière déterministe le processus épidémique à court terme des maladies infectieuses [1]. Le nom du modèle provient de Susceptible, infecté, récupéré ou supprimé après infection. Ce modèle a été proposé par W. O. Kermack et A. G. McKendrick en 1927. [2] Ce modèle peut être représenté par l'équation différentielle ordinaire suivante.

\begin{align}
\frac{dS(t)}{dt}&=-\beta S(t)I(t) \\
\frac{dI(t)}{dt}&=\beta S(t)I(t)-\gamma I(t) \\
\frac{dR(t)}{dt}&=-\gamma I(t)
\end{align}

Ici, la signification de chaque variable est la suivante.

Le modèle SIR étant une équation différentielle normale simultanée, il est difficile de trouver une solution générale. Par conséquent, dans cet article, nous utiliserons la méthode Rungecutta, souvent utilisée dans les calculs numériques, pour la simulation. Les conditions initiales de la simulation sont les suivantes (* Les valeurs utilisées ici sont déterminées de manière appropriée, et il n'y a pas de base particulière à cela).

Code source

main.py


# coding: utf-8
import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import odeint

def main():
  #Réglage de chaque paramètre
  N = 1000000
  alpha=0.5/N
  beta=0.07
  dt=0.1

  init_SIR_value=[N-100, 100, 0] #Définition des conditions initiales
  times = np.arange(0.0, 100, dt) #Réglage de la période
  results = odeint(SIR, init_SIR_value, times, args=(alpha,beta)) #Calculé avec odeint
  #Visualisation
  plt.title("SIR Model")
  plt.plot(times[::10],results[::10,0]/N, color=(0.0,1,0.0), linewidth=1.0, label='S')
  plt.plot(times[::10],results[::10,1]/N, color=(1.0,0,0.0), linewidth=1.0, label='I')
  plt.plot(times[::10],results[::10,2]/N, color=(0.0,0,1.0), linewidth=1.0, label='R')
  plt.xlim(0,100)
  plt.legend()
  plt.xlabel('day')
  plt.ylabel('value')
  plt.grid(True)
  plt.show()


def SIR(v,t,alpha,beta):
  return [-alpha*v[0]*v[1], alpha*v[0]*v[1]-beta*v[1], beta*v[1]]

if __name__ == '__main__':
  main()

Résultats de la simulation

Si vous exécutez le programme ci-dessus, vous obtiendrez les résultats suivants.

figure_1.png

On peut voir sur le graphique que le nombre de personnes infectées diminue après avoir atteint un certain pic.

en conclusion

Dans cet article, nous avons présenté le modèle SIR, qui est l'un des modèles mathématiques des épidémies de maladies infectieuses, et effectué la transition des épidémies de maladies infectieuses par simulation. Contrairement aux maladies infectieuses comme la grippe, le nouveau virus corona a une longue période de latence, on dit donc qu'il ne convient pas d'appliquer ce modèle. Par conséquent, un modèle mathématique appelé modèle SEIR qui prend en compte la période de latence a également été proposé pour ce modèle. Je ne présenterai pas ce modèle cette fois, mais je le présenterai dans un autre article si j'en ai l'occasion.

Les références

[1] [Modèle SIR -Wikipedia-](https://ja.wikipedia.org/wiki/SIR modèle) [2] A Contribution to the Mathematical Theory of Epidemics

Recommended Posts

Modèle mathématique des épidémies de maladies infectieuses
Résolution de modèles mathématiques d'épidémies de maladies infectieuses en Python
Prédire les épidémies de maladies infectieuses avec le modèle SIR
Introduction d'un modèle de prédiction mathématique pour les maladies infectieuses (modèle SIR)
Implémenter le modèle mathématique «modèle SIR» des maladies infectieuses avec Open Modelica
[Introduction au modèle des maladies infectieuses] Toutes les régions du Japon se terminent ... ♬
Test mathématique 2 (modèle mathématique de la théorie de la réaction des items)
Implémenter le modèle mathématique «modèle SIR» des maladies infectieuses dans OpenModelica (voir l'effet du vaccin)
Modèle de prédiction mathématique des maladies infectieuses (modèle SIR): étude de cas (1)
Implémenter le modèle mathématique «modèle SIR» des maladies infectieuses avec OpenModelica (exemple de régulation répétée et de relaxation)
Mettre en œuvre le modèle mathématique «modèle SIR» des maladies infectieuses dans OpenModelica (reflétant le taux de mortalité et de réinfection)
[Introduction au modèle de maladie infectieuse] J'ai essayé de m'adapter et de jouer
Avantages d'affiner le modèle de Django