[PYTHON] J'ai essayé de prédire l'infection d'une nouvelle pneumonie en utilisant le modèle SIR: ☓ Wuhan edition ○ Hubei province edition

Récemment, une nouvelle pneumonie est devenue populaire. J'avais précédemment mené des recherches en utilisant un modèle mathématique de maladies infectieuses appelé le modèle SIR, je l'ai donc appliqué à un nouveau modèle de pneumonie. Des modèles mathématiques peuvent être utilisés pour prédire l'avenir des maladies infectieuses.

Cette fois, nous nous concentrerons sur la ~~ Wuhan ~~ *** la province du Hubei *** (province y compris Wuhan), qui est le centre de l'épidémie, pour modéliser les maladies infectieuses et prédire l'avenir des maladies infectieuses.

keyword Épidémiologie, modèle SIR, nCoV-2019, nouvelle pneumonie, nouveau coronavirus

Modèle SIR

Le modèle SIR est un modèle qui exprime la transition du nombre de personnes infectées sous la forme d'une équation différentielle (également analysée de manière facile à comprendre dans [Wikipedia](https://ja.wikipedia.org/wiki/SIR model)). Dans le modèle SIR, une personne est considérée comme ayant trois conditions d'infection.

  1. Personnes susceptibles d'être infectées: S
  2. Personne infectée: I
  3. Ceux qui se sont rétablis de l'infection et ont acquis une immunité, ou qui sont décédés: R

Le modèle SIR est basé sur les notations S (t), I (t) et R (t) pour ceux qui peuvent être infectés au temps t, ceux qui sont infectés et ceux qui ont été guéris de l'infection, respectivement.

\dot{S}(t) = -\beta S(t)I(t),\\ \dot{I}(t) = \beta S(t)I(t) - \gamma I(t)\\ \dot{R}(t) = \gamma I(t)

Il est décrit comme. Ici, β représente le taux d'infection, et γ représente le taux de récupération (+ taux de mortalité). L'augmentation du nombre de personnes infectées est proportionnelle au taux d'infection β, à la personne susceptible d'être infectée S (t) et à la personne infectée I (t).

Veuillez noter que les personnes qui meurent ne causent pas d'infection, elles sont donc assimilées à des personnes qui ont été guéries de l'infection.

ici, $ S(t) + I(t) + R(t) = N $ Est constant et correspond à la population de la région. Cette fois, nous utiliserons la population de ~~ Wuhan ~~ Province du Hubei.

~~ Wuhan ~~ En utilisant les données d'infection des nouvelles hépatites dans la province du Hubei, nous apprendrons le taux d'infection β et le taux de récupération γ et prédirons l'avenir de Wuhan.

Données utilisées

Les données sur l'infection sont tirées de ici publié sur kaggle. En outre, les données démographiques de ~~ Wuhan ~~ Province du Hubei utilisent les données démographiques de 2017 décrites dans ici.

Apprentissage des paramètres à l'aide du modèle SIR

~~ Wuhan ~~ La transition de l'infection du 22 janvier au 4 février 2020 dans la province du Hubei est la suivante.

Hubei_time_dose.png

La ligne bleue représente le nombre de personnes infectées, la ligne orange le nombre de décès et la ligne verte le nombre de personnes qui se sont rétablies. Est-ce un peu étrange que le nombre de personnes récupérées et le nombre de morts soient à peu près les mêmes? Je pense.

J'ai essayé d'appareiller avec le modèle SIR pour que ces données puissent être exprimées.

SIR_model_Hubei.png

Les personnes récupérées est la somme du nombre de personnes qui se sont rétablies et du nombre de décès. De plus, le point bleu est le nombre de personnes infectées effectivement observées, et la ligne bleue est le résultat d'une approximation par le modèle SIR. Les points oranges et les lignes orange sont les valeurs mesurées et prévues du nombre de personnes qui se sont rétablies.

Il semble que cela puisse être suffisamment approximé.

~~ Wuhan ~~ Prédire l'avenir de l'infection dans la province du Hubei

Puisqu'il semble qu'il puisse être suffisamment approximé, j'ai essayé de prédire l'avenir de l'infection dans la province du Hubei en utilisant les paramètres appris.

La figure suivante montre les prévisions pour 10 jours à partir du 4 février.

Hubei_10days_future.png

Les points sont les valeurs mesurées et les lignes sont les valeurs prédites. Selon le modèle SIR, il semble encore augmenter.

Viennent ensuite les prévisions pour un an à partir du 4 février.

Hubei_365days_future.png

L'infection semble s'arrêter du tout.

Considération

Tâches futures

Ensuite, je voudrais prédire la propagation de l'infection dans toute la Chine en fonction du volume du trafic.

Post-scriptum: Numéro de reproduction de base R0

L'infectivité de la maladie est évaluée par le nombre de reproduction de base R0. R0 est donné par le rapport du taux d'infection sans dimension β_hat au taux de récupération sans dimension γ_hat. Par conséquent, le nombre de reproduction de base R0 dans la province du Hubei est

R_0 = \frac{\hat{\beta}}{\hat{\gamma}} = \frac{\beta N^2}{\gamma N} \approx 17.54

Il devient. Cette valeur est à peu près la même que celle des maladies aéroportées telles que la rougeole. On pense que la force de cette infectivité est due au fait que le taux de guérison est sous-estimé, comme mentionné dans la discussion.

code

https://github.com/yuji0001/2020nCoV_analysis

Recommended Posts

J'ai essayé de prédire l'infection d'une nouvelle pneumonie en utilisant le modèle SIR: ☓ Wuhan edition ○ Hubei province edition
J'ai essayé de prédire le comportement du nouveau virus corona avec le modèle SEIR.
J'ai essayé l'histoire courante de l'utilisation du Deep Learning pour prédire la moyenne Nikkei
J'ai essayé de prédire le nombre de personnes infectées au niveau national de la nouvelle corona avec un modèle mathématique
J'ai essayé de prédire la détérioration de la batterie lithium-ion en utilisant le SDK Qore
J'ai essayé de prédire la victoire ou la défaite de la Premier League en utilisant le SDK Qore
J'ai essayé de refactoriser le modèle CNN de TensorFlow en utilisant TF-Slim
Jour 71, j'ai essayé de prédire combien de temps cette autolimitation se poursuivra avec le modèle SIR
J'ai essayé d'obtenir l'index de la liste en utilisant la fonction énumérer
J'ai essayé d'utiliser des données PDF de soins médicaux en ligne basés sur la propagation d'une nouvelle infection à coronavirus
J'ai essayé de prédire les hauts et les bas du cours de clôture du cours de l'action de Guru Navi en utilisant TensorFlow (progression)
J'ai essayé d'obtenir les résultats de Hachinai en utilisant le traitement d'image
J'ai essayé d'estimer la similitude de l'intention de la question en utilisant Doc2Vec de gensim
J'ai essayé d'extraire et d'illustrer l'étape de l'histoire à l'aide de COTOHA
J'ai essayé de rationaliser le rôle standard des nouveaux employés avec Python
En utilisant COTOHA, j'ai essayé de suivre le cours émotionnel de la course aux meros.
J'ai essayé d'analyser la carte du Nouvel An par moi-même en utilisant python
J'ai essayé de corriger la forme trapézoïdale de l'image
J'ai essayé d'utiliser le filtre d'image d'OpenCV
J'ai essayé de vectoriser les paroles de Hinatazaka 46!
J'ai essayé de notifier la mise à jour de "Hameln" en utilisant "Beautiful Soup" et "IFTTT"
[Python] J'ai essayé de juger l'image du membre du groupe d'idols en utilisant Keras
J'ai essayé d'afficher le degré d'infection par le virus corona sur la carte thermique Seaborn
J'ai essayé de créer un modèle avec l'exemple d'Amazon SageMaker Autopilot
J'ai essayé d'envoyer automatiquement la littérature du nouveau virus corona à LINE avec Python
J'ai essayé de prédire le match de la J League (analyse des données)
J'ai essayé d'approcher la fonction sin en utilisant le chainer
J'ai essayé d'utiliser l'API de Sakenowa Data Project
J'ai essayé de visualiser les informations spacha de VTuber
J'ai essayé d'effacer la partie négative de Meros
J'ai essayé d'identifier la langue en utilisant CNN + Melspectogram
J'ai essayé de compléter le graphe de connaissances en utilisant OpenKE
J'ai essayé de classer les voix des acteurs de la voix
J'ai essayé de compresser l'image en utilisant l'apprentissage automatique
J'ai essayé de résumer les opérations de chaîne de Python
J'ai essayé de faire quelque chose comme un chatbot avec le modèle Seq2Seq de TensorFlow
J'ai essayé de notifier la mise à jour de "Devenir romancier" en utilisant "IFTTT" et "Devenir un romancier API"
Python pratique 100 coups J'ai essayé de visualiser l'arbre de décision du chapitre 5 en utilisant graphviz
J'ai essayé d'extraire le texte du fichier image en utilisant Tesseract du moteur OCR
J'ai essayé de visualiser les caractéristiques des nouvelles informations sur les personnes infectées par le virus corona avec wordcloud
J'ai essayé de trouver l'entropie de l'image avec python
[Courses de chevaux] J'ai essayé de quantifier la force du cheval de course
J'ai essayé de simuler la propagation de l'infection avec Python
J'ai essayé de trouver la moyenne de plusieurs colonnes avec TensorFlow
[Introduction au modèle SIR] Prédire l'heure de fin de chaque pays avec l'ajustement des données COVID-19 ♬
J'ai essayé de simuler l'optimisation des publicités à l'aide de l'algorithme Bandit
J'ai essayé de comparer la précision des modèles d'apprentissage automatique en utilisant kaggle comme thème.
J'ai fait une fonction pour vérifier le modèle de DCGAN
[Python] J'ai essayé de visualiser la relation de suivi de Twitter
[TF] J'ai essayé de visualiser le résultat de l'apprentissage en utilisant Tensorboard
[Apprentissage automatique] J'ai essayé de résumer la théorie d'Adaboost
[Python] J'ai essayé de collecter des données en utilisant l'API de wikipedia
J'ai essayé de prédire le genre de musique à partir du titre de la chanson sur le réseau neuronal récurrent
J'ai essayé de combattre le minimum local de la fonction Goldstein-Price
J'ai essayé d'approcher la fonction sin en utilisant chainer (re-challenge)