Lösung mathematischer Modelle von Epidemien von Infektionskrankheiten in Python

**Hinweis! Dieser Artikel enthält nicht mehr Informationen als ich versucht habe. ** ** **

Mathematisches Modell für Infektionskrankheiten

Als Reaktion auf die jüngste COVID 19-Situation denke ich, dass über verschiedene mathematische Modelle von Infektionskrankheiten gesprochen wurde, aber lassen Sie uns dies mit Python-Odeint lösen und es so visualisieren, wie es mit Matplotlib ist. Es klingt unangenehm, aber Sie sollten keine Gefühle zu COVID 19 ausdrücken, wenn Sie etwas in diesem Artikel richtig implementiert haben.

Nehmen wir also an, das am einfachsten zu lösende SIR-Modell ist

\begin{align}
\frac{\mathrm{d} S}{\mathrm{d} t} & = - \beta I S\\
\frac{\mathrm{d} I}{\mathrm{d} t} & = \beta I S - \gamma I\\
\frac{\mathrm{d} R}{\mathrm{d} t} & = \gamma I
\end{align}

Ich werde es als belassen. $ \ Beta $ ist die Infektionsrate (/ (Person x Stunden)), die Anzahl der nicht übertragenen Personen, die pro Zeiteinheit pro kranker Person infiziert werden können, $ \ gamma $ ist die Heilungsrate ( / Stunde), das ist die Umkehrung der Zeit, die zum Heilen benötigt wird. $ S $ ist die Anzahl der Personen, die nicht infiziert wurden und nicht infizieren können. $ I $ ist die Anzahl der Personen, die infiziert sind und die Fähigkeit haben, andere zu infizieren. $ R $ ist Isolation, Heilung, Tod usw. Die Anzahl der Personen, die infiziert wurden oder die Fähigkeit verloren haben, andere zu infizieren.

Python code Da es problematisch ist, habe ich einen soliden Code ohne Erklärung eingefügt.

import numpy as np
from scipy.integrate import odeint
import matplotlib.pyplot as plt
from matplotlib.widgets import Slider, Button

def solve(value, t, foi, rr):
	# fio = force of infection (beta)
	# rr = recovery rate
	S, I, R = value
	dSdt = - foi * I * S
	dIdt = foi * I * S - rr * I
	dRdt = rr * I
	return [dSdt, dIdt, dRdt]


span = 100
t = np.linspace(0, span, 256)
initial_value = [0.9, 0.1, 0] # initial values for S, I, R
solution = odeint(solve, initial_value, t, args = (0.5, 0.5))

fig, ax = plt.subplots(figsize=(12, 6))
plt.xlim(0, span)
plt.ylim(0, 1)
plt.subplots_adjust(bottom = 0.2)

data_S, = plt.plot(t, solution[:, 0], "blue", label = "Susceptible")
data_I, = plt.plot(t, solution[:, 1], "red", label = "Infectious")
data_R, = plt.plot(t, solution[:, 2], "orange", label = "Removed")

plt.legend(loc = "best")

rr_slider = Slider(plt.axes([0.2, 0.02, 0.65, 0.02]), "recovery rate", 0, 1, valinit = 0.5, valstep = 0.1)
foi_slider = Slider(plt.axes([0.2, 0.05, 0.65, 0.02]), "force of inf.", 0, 1, valinit = 0.5, valstep = 0.1)

def update(val):
	rr = rr_slider.val
	foi = foi_slider.val
	solution = odeint(solve, initial_value, t, args=(foi, rr))
	data_S.set_ydata(solution[:, 0])
	data_I.set_ydata(solution[:, 1])
	data_R.set_ydata(solution[:, 2])
	fig.canvas.draw_idle()

rr_slider.on_changed(update)
foi_slider.on_changed(update)

plt.show()

Ausführungsergebnis

スクリーンショット 2020-03-19 16.18.58.png Ich denke, so etwas wird herauskommen. Übrigens war ich mir nicht sicher, welche Werte für die Infektionsrate und die Heilungsrate korrekt waren, deshalb habe ich einige Knöpfe gemacht, damit ich die Werte anpassen kann. Bitte spielen Sie mit ihnen.

damit

Nun, spiel es. Wenn Sie die Differentialgleichung lösen möchten, während Sie die Parameter wellig machen, zögern Sie bitte nicht, uns zu kontaktieren.

Recommended Posts

Lösung mathematischer Modelle von Epidemien von Infektionskrankheiten in Python
Mathematisches Modell von Infektionskrankheiten
Lösen von Bewegungsgleichungen in Python (odeint)
Objektäquivalenzbeurteilung in Python
Implementierung der schnellen Sortierung in Python
Bildpixel-Manipulation in Python
Zeitdelta in Python 2.7-Serie teilen
MySQL-automatische Escape-Funktion von Parametern in Python
Umgang mit JSON-Dateien in Python
Implementierung eines Lebensspiels in Python
Audio-Wellenform-Anzeige in Python
Das Gesetz der Zahlen in Python
Implementierung der ursprünglichen Sortierung in Python
Reversibles Verwürfeln von Ganzzahlen in Python
Implementierung des Partikelfilters durch Python und Anwendung auf das Zustandsraummodell
Konvertierung der Zeichenfolge <-> Datum (Datum, Datum / Uhrzeit) in Python
Überprüfen Sie das Verhalten des Zerstörers in Python
Übung, dies in Python zu verwenden (schlecht)
Allgemeine Relativitätstheorie in Python: Einführung
Ausgabebaumstruktur von Dateien in Python
Zeigen Sie eine Liste der Alphabete in Python 3 an
Vergleich japanischer Konvertierungsmodule in Python3
Zusammenfassung verschiedener for-Anweisungen in Python
Summe der Variablen in einem mathematischen Modell
Das Ergebnis der Installation von Python auf Anaconda
Gang of Four (GoF) -Muster in Python
Grundlagen zum Ausführen von NoxPlayer in Python
Massenersatz von Zeichenfolgen in Python-Arrays
Projekt Euler # 16 "Summe der Kräfte" in Python
Traffic Safety-Kun: Erkennung von Verkehrszeichen in Python
Zusammenfassung der integrierten Methoden usw. der Python-Liste
Nicht logische Operatorverwendung von oder in Python
Krankheitsklassifizierung durch Random Forest mit Python
[Python] Speichern von Lernergebnissen (Modellen) beim maschinellen Lernen
Auf der Suche nach dem schnellsten FizzBuzz in Python
Praktisches Beispiel für hexagonale Architektur in Python
Projekt Euler # 17 "Anzahl der Zeichen" in Python
Doppelte Pendelbewegungsgleichung in Python
Vorhersage von Epidemien von Infektionskrankheiten mit dem SIR-Modell
Entfernen Sie DICOM-Bilder in Python
[Python] Krankheitsklassifikation in zufälligen Wäldern - mit LDA-
Status jedes Python-Verarbeitungssystems im Jahr 2020
Projekt Euler # 1 "Vielfaches von 3 und 5" in Python
Implementieren Sie mit OpenModelica das mathematische Modell "SIR-Modell" von Infektionskrankheiten (siehe Wirkung des Impfstoffs)
Mathematik studieren mit Python: Lösen einfacher Wahrscheinlichkeitsprobleme
Geben Sie die Anzahl der CPU-Kerne in Python aus
Zeichnen Sie in Python ein Diagramm einer quadratischen Funktion
[Python] Sortieren Sie die Liste von pathlib.Path in natürlicher Reihenfolge
Erhalten Sie einen Websocket der kabu station ® API in Python
Zusammenfassung zum Importieren von Dateien in Python 3
Projekt Euler # 10 "Summe der Primzahlen" in Python
Unbeaufsichtigter Betrieb von Google Spreadsheets (usw.) in Python
Holen Sie sich den Aufrufer einer Funktion in Python
Passen Sie die Verteilung jeder Gruppe in Python an
Zeigen Sie das Ergebnis der Geometrieverarbeitung in Python an
Kopieren Sie die Liste in Python
Echtzeitvisualisierung von Thermografie AMG8833-Daten in Python
Zusammenfassung der Verwendung von MNIST mit Python
Umschreiben von Elementen in einer Listenschleife (Python)