Simulation COVID-19 avec python (modèle SIR) ~~ avec carte de chaleur préfectorale ~~

introduction

Nous avons simulé la propagation du COVID-19 à l'aide du modèle SIR en Python. Nous avons créé chacune des 47 préfectures pour le modèle et l'avons visualisé avec une carte thermique.

page github https://github.com/chihina/analysis_covid_19_python

Vidéo visualisée (Certains filigranes sont inclus pour l'édition avec un logiciel gratuit. Je suis désolé !!) https://www.youtube.com/watch?v=7XvPKcasL1U

visualize_image.png

Environnement de développement

Interprète: python 3.71 Bibliothèque spéciale: folium == 0.11.0 D'autres comme matplotlib et numpy.

À propos du modèle SIR

L'équation différentielle normale du modèle SIR est la suivante. (Pour parler simplement, β représente le taux d'infection et γ le taux de récupération.)

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

S (sensible) ... Détenteurs de sensibilité (personnes susceptibles d'être infectées)

Je (infecté) ... infecté

R (récupéré) ... Détenteur de l'immunité (ou mise en quarantaine)

Première équation

\frac{dS}{dt}(t) = -\beta S(t)I(t)\\  

Le côté gauche représente le taux de changement des porteurs de sensibilité par unité de temps, exprimé en multipliant les porteurs de sensibilité et les porteurs d'immunité par le taux d'infection.

En d'autres termes, S est réduit du nombre de personnes infectées par unité de temps.

Deuxième équation

\frac{dI}{dt}(t) = \beta S(t)I(t) - \gamma I(t)\\

Le côté gauche montre le taux de changement des personnes infectées par unité de temps. Le premier terme du côté droit a été introduit plus tôt, le deuxième terme du côté droit indique la personne qui récupère par unité de temps.

En d'autres termes, c'est le nombre de personnes qui se remettent de celles qui sont infectées par unité de temps.

Troisième équation

\frac{dR}{dt}(t) = \gamma I(t)\\

Le côté gauche montre le taux de changement du porteur immunitaire par unité de temps, le côté droit est le même que le précédent et montre la personne qui récupère par unité de temps.

En d'autres termes, R augmente du nombre de personnes qui récupèrent par unité de temps.

Amélioration du modèle SIR

Si l'on considère le modèle SIR décrit jusqu'à présent pour 47 préfectures, il n'a pas de sens car chacun devient indépendant, c'est pourquoi le terme d'influence dû au statut infectieux des autres préfectures est ajouté en utilisant les données du ratio de population. Fait.

\frac{dS}{dt}(t) = -\beta S(t)I(t) - I_{pref} × PR_{pref} × 0.1\\  
\frac{dI}{dt}(t) = \beta S(t)I(t) - \gamma I(t) + I_{pref} × PR_{pref} × 0.1 \\
\frac{dR}{dt}(t) = \gamma I(t)\\

À propos de l'élément ajouté

I_{pref} × PR_{pref} × 0.1

La première lettre exprime la situation des personnes infectées autres que la préfecture à laquelle vous pensez à ce moment-là.

La deuxième lettre indique le ratio de population de la préfecture à laquelle vous pensez à ce moment-là.

Par conséquent, selon cette section, si le nombre de personnes infectées augmente dans d'autres préfectures, le nombre de personnes infectées augmentera dans leurs propres préfectures. En utilisant les informations sur le ratio de population, la population est importante à Tokyo, Osaka, Aichi, etc. J'essaye de renforcer l'influence de la préfecture.

Méthode de mise en œuvre

Nous allons résoudre le modèle SIR amélioré avec python. À l'origine, il était facile à implémenter avec scipy, mais nous l'avons implémenté régulièrement pour la compréhension. Pour plus de détails, consultez le code et posez une question S'il vous plaît!!

Méthode de mise en œuvre: méthode Lungekutter de 4ème ordre

Il existe de nombreuses explications sur la méthode Rungekutta, veuillez donc rechercher «Méthode Rungekutta 4e ordre».

Méthode de visualisation

Dessinez une carte thermique de série chronologique avec python folium https://sammi-baba.hatenablog.com/entry/2018/12/25/074017

Après avoir créé les informations sur la personne infectée pour chaque préfecture avec la base de données des pandas, je me suis référé. J'ai lu et utilisé ce que j'ai exporté vers csv. Veuillez voir la vidéo mise en ligne sur youtube !!

Vidéo visualisée (Certains filigranes sont inclus pour l'édition avec un logiciel gratuit. Je suis désolé !!) https://www.youtube.com/watch?v=7XvPKcasL1U

visualize_image.png

Résumé

Je n'ai pas pu saisir parfaitement la situation actuelle de l'infection, mais j'ai une équation différentielle normale relativement simple. J'ai été très surpris de pouvoir reproduire dans une certaine mesure la propagation de l'infection.

Si vous avez des questions sur un contenu plus détaillé, n'hésitez pas à nous contacter !!

Les références

J'ai évoqué les articles et les données statistiques suivants. Je vous remercie.

[1] Dessinez une carte thermique de séries chronologiques avec python folium https://sammi-baba.hatenablog.com/entry/2018/12/25/074017

[2] Estimation de la population Au 1er octobre 2017 Site du recensement national d'estimation de la population (e-stat) https://www.e-stat.go.jp/dbview?sid=0003215844

[3] Page github Data of Japan (consultée le 28 juillet 2020) https://www.e-stat.go.jp/dbview?sid=0003215844

Recommended Posts

Simulation COVID-19 avec python (modèle SIR) ~~ avec carte de chaleur préfectorale ~~
[Python] Carte thermique de style calendrier (avec affichage des jours fériés)
[CovsirPhy] Package Python COVID-19 pour l'analyse des données: modèle SIR
Première simulation de cellule nerveuse avec NEURON + Python
[Python] Modèle gaussien mixte avec Pyro
Essayez la simulation de contrôle de fréquence avec Python
Carte des informations de location sur une carte avec python
Carte thermique pour la recherche de grille avec Matplotlib
[Python / PyRoom Acoustics] Simulation acoustique de pièce avec Python
J'ai fait une carte hexadécimale avec Python
Analyse de conduction thermique bidimensionnelle non stationnaire avec Python
Essayez de dessiner une carte avec python + cartopy 0.18.0
Prédire les épidémies de maladies infectieuses avec le modèle SIR
[Python] Clustering avec un modèle gaussien infiniment mélangé
[Écrire sur la carte avec plotly] Visualisation dynamique avec plotly [python]
Folium: Visualisez les données sur une carte avec Python
Résolution du modèle Lorenz 96 avec Julia et Python
Optimisation de portefeuille avec Python (modèle de distribution moyenne de Markovitz)
Visualiser grib2 sur une carte avec python (matplotlib)