COVID-19-Simulation mit Python (SIR-Modell) ~~ mit Präfektur-Wärmekarte ~~

Einführung

Wir haben die Ausbreitung von COVID-19 mithilfe des SIR-Modells in Python simuliert. Wir haben jede der 47 Präfekturen für das Modell erstellt und mit einer Heatmap visualisiert.

Github-Seite https://github.com/chihina/analysis_covid_19_python

Visualisiertes Video (Einige Wasserzeichen sind für die Bearbeitung mit kostenloser Software enthalten. Es tut mir leid !!) https://www.youtube.com/watch?v=7XvPKcasL1U

visualize_image.png

Entwicklungsumgebung

Interpreter: Python 3.71 Spezialbibliothek: Folium == 0.11.0 Andere wie Matplotlib und Numpy.

Über das SIR-Modell

Die normale Differentialgleichung des SIR-Modells lautet wie folgt. (Einfach ausgedrückt steht β für die Infektionsrate und γ für die Wiederherstellungsrate.)

\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 (anfällig) ... Empfindlichkeitsinhaber (Personen, die möglicherweise infiziert sind)

Ich (infiziert) ... infiziert

R (wiederhergestellt) ... Immunitätsinhaber (oder Quarantäne)

Erste Gleichung

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

Die linke Seite stellt die Änderungsrate der Suszeptibilitätsträger pro Zeiteinheit dar. Dies wird ausgedrückt, indem Suszeptibilitätsträger und Immunitätsträger mit der Infektionsrate multipliziert werden.

Mit anderen Worten, S wird um die Anzahl der infizierten Personen pro Zeiteinheit reduziert.

Zweite Gleichung

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

Die linke Seite zeigt die Änderungsrate infizierter Personen pro Zeiteinheit. Der erste Begriff auf der rechten Seite wurde früher eingeführt. Der zweite Begriff auf der rechten Seite gibt die Person an, die sich pro Zeiteinheit erholt.

Mit anderen Worten, es ist die Anzahl der Menschen, die sich von denen erholen, die sich pro Zeiteinheit infiziert haben.

Dritte Gleichung

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

Die linke Seite zeigt die Änderungsrate des Immunträgers pro Zeiteinheit. Die rechte Seite ist dieselbe wie die vorherige und zeigt die Person, die sich pro Zeiteinheit erholt.

Mit anderen Worten, R erhöht sich um die Anzahl der Personen, die sich pro Zeiteinheit erholen.

Verbesserung des SIR-Modells

In Anbetracht des bisher für 47 Präfekturen beschriebenen SIR-Modells ist es bedeutungslos, da jede unabhängig wird. Daher wird der Einflussbegriff aufgrund des Infektionsstatus anderer Präfekturen unter Verwendung der Populationsverhältnisdaten hinzugefügt. Hat.

\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)\\

Über das hinzugefügte Element

I_{pref} × PR_{pref} × 0.1

Der erste Brief drückt die Situation anderer infizierter Personen als der Präfektur aus, an die Sie zu diesem Zeitpunkt denken.

Der zweite Buchstabe gibt das Bevölkerungsverhältnis der Präfektur an, an die Sie zu diesem Zeitpunkt denken.

Wenn gemäß diesem Abschnitt die Anzahl der Infizierten in anderen Präfekturen zunimmt, steigt daher die Anzahl der Infizierten in ihren eigenen Präfekturen. Unter Verwendung der Informationen zum Bevölkerungsverhältnis ist die Bevölkerung in Tokio, Osaka, Aichi usw. groß. Ich versuche, den Einfluss der Präfektur zu stärken.

Implementierungsmethode

Wir werden das verbesserte SIR-Modell mit Python lösen. Ursprünglich war es einfach mit scipy zu implementieren, aber wir haben es zum besseren Verständnis stetig implementiert. Weitere Informationen finden Sie im Code und stellen Sie eine Frage Bitte!!

Implementierungsmethode: Lungekutter-Methode 4. Ordnung

Es gibt viele Erklärungen zur Rungekutta-Methode. Suchen Sie daher nach "Rungekutta-Methode 4. Ordnung".

Visualisierungsmethode

Zeichnen Sie eine Zeitreihen-Heatmap mit Python-Folium https://sammi-baba.hatenablog.com/entry/2018/12/25/074017

Nach dem Erstellen der infizierten Personeninformationen für jede Präfektur mit dem Pandas-Datenrahmen Ich habe gelesen und verwendet, was ich nach CSV exportiert habe. Bitte sehen Sie sich das aktuelle Video an, das auf YouTube hochgeladen wurde!

Visualisiertes Video (Einige Wasserzeichen sind für die Bearbeitung mit kostenloser Software enthalten. Es tut mir leid !!) https://www.youtube.com/watch?v=7XvPKcasL1U

visualize_image.png

Zusammenfassung

Ich konnte die aktuelle Infektionssituation nicht perfekt erfassen, habe aber eine relativ einfache normale Differentialgleichung. Ich war sehr überrascht, die Ausbreitung der Infektion bis zu einem gewissen Grad reproduzieren zu können.

Wenn Sie Fragen zu detaillierteren Inhalten haben, zögern Sie bitte nicht, uns zu kontaktieren!

Verweise

Ich habe auf die folgenden Artikel und statistischen Daten verwiesen. Vielen Dank.

[1] Zeichne eine Zeitreihen-Heatmap mit Python-Folium https://sammi-baba.hatenablog.com/entry/2018/12/25/074017

[2] Bevölkerungsschätzung Stand 1. Oktober 2017 Bevölkerungsschätzung Nationale Volkszählungsstelle (e-stat) https://www.e-stat.go.jp/dbview?sid=0003215844

[3] Daten der japanischen Github-Seite (abgerufen am 28. Juli 2020) https://www.e-stat.go.jp/dbview?sid=0003215844

Recommended Posts

COVID-19-Simulation mit Python (SIR-Modell) ~~ mit Präfektur-Wärmekarte ~~
[Python] Heatmap im Kalenderstil (mit Feiertagsanzeige)
[CovsirPhy] COVID-19 Python-Paket für die Datenanalyse: SIR-Modell
Erste Nervenzellsimulation mit NEURON + Python
[Python] Gemischtes Gaußsches Modell mit Pyro
Versuchen Sie die Frequenzsteuerungssimulation mit Python
Kartenmietinformationen auf einer Karte mit Python
Heat Map für die Rastersuche mit Matplotlib
[Python / PyRoom Acoustics] Raumakustische Simulation mit Python
Ich habe mit Python eine Hex-Map erstellt
Zweidimensionale instationäre Wärmeleitungsanalyse mit Python
Versuchen Sie, eine Karte mit Python + Cartopy 0.18.0 zu zeichnen
Vorhersage von Epidemien von Infektionskrankheiten mit dem SIR-Modell
[Python] Clustering mit einem unendlich gemischten Gaußschen Modell
[Mit Plotly auf die Karte schreiben] Dynamische Visualisierung mit Plotly [Python]
Folium: Visualisieren Sie Daten auf einer Karte mit Python
Lösen des Lorenz 96-Modells mit Julia und Python
Portfoliooptimierung mit Python (Markovitz-Durchschnittsverteilungsmodell)
Visualisiere grib2 auf einer Karte mit Python (matplotlib)