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
Interprète: python 3.71 Bibliothèque spéciale: folium == 0.11.0 D'autres comme matplotlib et numpy.
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)
\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.
\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.
\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.
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)\\
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.
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».
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
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 !!
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