[CovsirPhy] COVID-19 Python-Paket für die Datenanalyse: SIR-F-Modell

Introduction

Wir erstellen ein Python-Paket CovsirPhy, mit dem Sie COVID-19-Daten (z. B. die Anzahl der PCR-Positiven) einfach herunterladen und analysieren können. Wir planen, Artikel zu Analysebeispielen mithilfe von Paketen und den dabei erstellten Kenntnissen (Python, GitHub, Sphinx, ...) zu veröffentlichen.

Die englische Version des Dokuments lautet CovsirPhy: COVID-19-Analyse mit phasenabhängigen SIRs, Kaggle: COVID-19-Daten mit SIR-Modell.

** Dieses Mal möchte ich das SIR-F-Modell vorstellen. ** Es sind keine aktuellen Daten verfügbar. Englische Version: Verwendung (Details: theoretische Datensätze)

1. Ausführungsumgebung

CovsirPhy kann mit der folgenden Methode installiert werden! Bitte verwenden Sie Python 3.7 oder höher oder Google Colaboratory.

--Stabile Version: pip install covsirphy --upgrade

#Zur Datenanzeige
from pprint import pprint
# CovsirPhy
import covsirphy as cs
cs.__version__
# '2.8.2'
Ausführungsumgebung
OS Windows Subsystem for Linux
Python version 3.8.5

2. Was ist das SIR-F-Modell?

Das SIR-F-Modell ist ein abgeleitetes Modell, das auf dem bekannten Grundmodell SIR-Modell [^ 1] basiert. Ich habe es erstellt, während ich mit der Analyse unter Verwendung von Kaggles Daten fortfuhr [^ 2].

(Ich denke, es ist ein neuartiges Modell, aber wenn Sie das Originalpapier kennen, das vor Februar 2020 veröffentlicht wurde, lassen Sie es mich bitte wissen! Ich bin kein Experte für Infektionskrankheiten ...)

[^ 1]: [CovsirPhy] COVID-19 Python-Paket für die Datenanalyse: SIR-Modell

SIR model Zunächst definiert das SIR-Modell die Wahrscheinlichkeit einer Infektion, wenn Susceptible mit Infected in Kontakt kommt, als effektive Kontaktrate $ \ beta $ [1 / min]. $ \ Gamma $ [1 / min] ist die Wahrscheinlichkeit des Übergangs von Infiziert zu Wiederhergestellt [^ 3] [^ 4].

\begin{align*}
\mathrm{S} \overset{\beta I}{\longrightarrow} \mathrm{I} \overset{\gamma}{\longrightarrow} \mathrm{R}  \\
\end{align*}

SIR-D model Fatal (Anzahl der tödlichen Fälle) wird im SIR-Modell jedoch nicht berücksichtigt oder ist in Recovered enthalten. Im Fall von COVID-19 wurden Daten über die Anzahl der bestätigten Fälle (Anzahl der PCR-Positiven), die Anzahl der Wiederhersteller und die Anzahl der Todesfälle von der Johns Hopkins University usw. gesammelt [^ 5] und können als Modellvariablen verwendet werden. Ich kann es schaffen Die Anzahl der bestätigten Fälle ist die Summe aus der Anzahl der infizierten Personen $ I $, der Anzahl der Geneser $ R $ und der Anzahl der Todesfälle $ D $.

SIR-D model: $ \ Alpha_2 $ [1 / min] als Sterblichkeitsrate infizierter Personen

\begin{align*}
\mathrm{S} \overset{\beta  I}{\longrightarrow}\ & \mathrm{I} \overset{\gamma}{\longrightarrow} \mathrm{R}  \\
& \mathrm{I} \overset{\alpha_2}{\longrightarrow} \mathrm{D}  \\
\end{align*}

SIR-F model Darüber hinaus ist es im Fall von COVID-19 schwierig, eine endgültige Diagnose einer Infektion zu stellen, und es wurde über viele Fälle berichtet, die vor der endgültigen Diagnose sterben, insbesondere in den frühen Stadien. Das Modell, das diese Fälle widerspiegelt, ist wie folgt. $ S ^ {\ ast} $ ist der Prozentsatz der infizierten Personen mit einer endgültigen Diagnose, und $ \ alpha_1 $ [-] ist der Prozentsatz von $ S ^ {\ ast} $, der zum Zeitpunkt der endgültigen Diagnose verstorben ist (keine Einheit) ) Wird gezeigt.

SIR-F model:

\begin{align*}
\mathrm{S} \overset{\beta I}{\longrightarrow} \mathrm{S}^\ast \overset{\alpha_1}{\longrightarrow}\ & \mathrm{F}    \\
\mathrm{S}^\ast \overset{1 - \alpha_1}{\longrightarrow}\ & \mathrm{I} \overset{\gamma}{\longrightarrow} \mathrm{R}    \\
& \mathrm{I} \overset{\alpha_2}{\longrightarrow} \mathrm{F}    \\
\end{align*}

Wenn $ \ alpha_1 = 0 $ ist, stimmt das SIR-F-Modell mit dem SIR-D-Modell überein.

3. Gleichzeitige normale Differentialgleichungen

Als Gesamtbevölkerung $ N = S + I + R + F $

\begin{align*}
& \frac{\mathrm{d}S}{\mathrm{d}T}= - N^{-1}\beta S I  \\
& \frac{\mathrm{d}I}{\mathrm{d}T}= N^{-1}(1 - \alpha_1) \beta S I - (\gamma + \alpha_2) I  \\
& \frac{\mathrm{d}R}{\mathrm{d}T}= \gamma I  \\
& \frac{\mathrm{d}F}{\mathrm{d}T}= N^{-1}\alpha_1 \beta S I + \alpha_2 I  \\
\end{align*}

4. Nicht dimensionale Parameter

Sie können damit umgehen, aber es ist dimensionslos, da der Parameterbereich auf $ (0, 1) $ begrenzt ist. Obwohl in diesem Artikel nicht erwähnt, ist es effektiv bei der Berechnung von Parametern aus tatsächlichen Daten.

$ (S, I, R, F) = N \ mal (x, y, z, w) $, $ (T, \ alpha_1, \ alpha_2, \ beta, \ gamma) = (\ straff, \ theta, \ tau ^ {-1} \ kappa, \ tau ^ {-1} \ rho, \ tau ^ {-1} \ sigma) $, $ 1 \ leq \ tau \ leq 1440 $ [min]

\begin{align*}
& \frac{\mathrm{d}x}{\mathrm{d}t}= - \rho x y  \\
& \frac{\mathrm{d}y}{\mathrm{d}t}= \rho (1-\theta) x y - (\sigma + \kappa) y  \\
& \frac{\mathrm{d}z}{\mathrm{d}t}= \sigma y  \\
& \frac{\mathrm{d}w}{\mathrm{d}t}= \rho \theta x y + \kappa y  \\
\end{align*}

In diesem Moment,

\begin{align*}
& 0 \leq (x, y, z, w, \theta, \kappa, \rho, \sigma) \leq 1  \\
\end{align*}

5. (Basic / Effective) Anzahl der Reproduktionen

Die (grundlegende / effektive) Reproduktionsnummer des SIR-F-Modells wird wie folgt definiert, indem die Definitionsformel [^ 6] des SIR-Modells erweitert wird.

\begin{align*}
R_t = \rho (1 - \theta) (\sigma + \kappa)^{-1} = \beta (1 - \alpha_1) (\gamma + \alpha_2)^{-1}
\end{align*}

6. Datenbeispiel

Stellen Sie den Parameter $ (\ theta, \ kappa, \ rho, \ sigma) = (0,002, 0,005, 0,2, 0,075) $ sowie den Anfangswert und das Diagramm ein.

# Parameters
pprint(cs.SIRF.EXAMPLE, compact=True)
# {'param_dict': {'kappa': 0.005, 'rho': 0.2, 'sigma': 0.075, 'theta': 0.002},
#  'population': 1000000,
#  'step_n': 180,
#  'y0_dict': {'Fatal': 0,
#              'Infected': 1000,
#              'Recovered': 0,
#              'Susceptible': 999000}}

(Basic / Effective) Anzahl der Reproduktionen:

# Reproduction number
eg_dict = cs.SIRF.EXAMPLE.copy()
model_ins = cs.SIRF(
    population=eg_dict["population"],
    **eg_dict["param_dict"]
)
model_ins.calc_r0()
# 2.5

Grafikanzeige:

# Set tau value and start date of records
example_data = cs.ExampleData(tau=1440, start_date="01Jan2020")
# Add records with SIR-F model
model = cs.SIRF
area = {"country": "Full", "province": model.NAME}
example_data.add(model, **area)
# Change parameter values if needed
# example_data.add(model, param_dict={"kappa": 0.001, "kappa": 0.002, "rho": 0.4, "sigma": 0.0150}, **area)
# Records with model variables
df = example_data.specialized(model, **area)
# Plotting
cs.line_plot(
    df.set_index("Date"),
    title=f"Example data of {model.NAME} model",
    y_integer=True,
    filename="sirf.png "
)

sirf.png

7. Nächstes Mal

Das nächste Mal werde ich das Verfahren zum Herunterladen und Überprüfen der tatsächlichen Daten erläutern.

Recommended Posts

[CovsirPhy] COVID-19 Python-Paket für die Datenanalyse: SIR-F-Modell
[CovsirPhy] COVID-19 Python-Paket für die Datenanalyse: SIR-Modell
[CovsirPhy] COVID-19 Python-Paket für die Datenanalyse: Laden von Daten
[CovsirPhy] COVID-19 Python-Paket für die Datenanalyse: S-R-Trendanalyse
[CovsirPhy] COVID-19 Python-Paket für die Datenanalyse: Parameterschätzung
[CovsirPhy] COVID-19 Python-Paket für die Datenanalyse: Szenarioanalyse (Parametervergleich)
Python für die Datenanalyse Kapitel 4
Python für die Datenanalyse Kapitel 2
Python für die Datenanalyse Kapitel 3
Vorverarbeitungsvorlage für die Datenanalyse (Python)
Python-Visualisierungstool für die Datenanalyse
Datenanalyse Python
Datenanalyse mit Python 2
Datenanalyse Übersicht Python
Python-Datenanalysevorlage
Datenanalyse mit Python
Lassen Sie uns Covid-19 (Corona) -Daten mit Python analysieren [Für Anfänger]
Datenanalyse zur Verbesserung von POG 1 ~ Web Scraping mit Python ~
[Für Anfänger] So studieren Sie den Python3-Datenanalysetest
Mein Python-Datenanalyse-Container
[Python] Hinweise zur Datenanalyse
Lernnotizen zur Python-Datenanalyse
Datenanalyse mit Python-Pandas
Tipps und Vorsichtsmaßnahmen bei der Datenanalyse
[In kürzester Zeit verstehen] Python-Grundlagen für die Datenanalyse
Welches sollte ich für die Datenanalyse studieren, R oder Python?
<Python> Erstellen Sie einen Server für die Datenanalyse mit Jupyter Notebook
Einführung in die statistische Modellierung für die Datenanalyse GLM-Modellauswahl
Python: Zeitreihenanalyse: Vorverarbeitung von Zeitreihendaten
Python-Kurs für datenwissenschaftlich-nützliche Techniken
Praxis der Datenanalyse durch Python und Pandas (Tokyo COVID-19 Data Edition)
Datenanalyse zur Verbesserung von POG 3 ~ Regressionsanalyse ~
Datenformatierung für Python / Farbdiagramme
Datenanalyse beginnend mit Python (Datenvisualisierung 1)
Datenanalyse beginnend mit Python (Datenvisualisierung 2)
Erstellen Sie ein USB-Boot-Ubuntu mit einer Python-Umgebung für die Datenanalyse
Python-E-Book-Zusammenfassung nützlich für die frei lesbare Datenanalyse
Detaillierte Python-Techniken für die Datenformung (1)
[Python] Erste Datenanalyse / maschinelles Lernen (Kaggle)
Datenanalyse beginnend mit Python (Datenvorverarbeitung - maschinelles Lernen)
Verwendung von "deque" für Python-Daten
Detaillierte Python-Techniken für die Datenformung (2)
Ich habe ein Python-Datenanalysetraining aus der Ferne durchgeführt
Vorbereitung auf die von Python 3 Engineer zertifizierte Datenanalyseprüfung
JupyterLab Grundeinstellung 2 für die Datenanalyse (pip)
JupyterLab Basic Setup für die Datenanalyse (pip)
Datenanalyse in Python Zusammenfassung der Quellen, die Anfänger zuerst betrachten sollten
Python: Zeitreihenanalyse: Erstellen eines SARIMA-Modells
[Einführung in das SEIR-Modell] Versuchen Sie, COVID-19-Daten anzupassen ♬
Datenanalyse zur Verbesserung von POG 2 ~ Analyse mit Jupiter-Notebook ~
Python-Vorlage, die eine Protokollanalyse mit explosiver Geschwindigkeit durchführt
Bereiten Sie eine Programmiersprachenumgebung für die Datenanalyse vor
Python3 Engineer Zertifizierungsdatenanalyse Test selbst erstellte Problemerfassung
Python: Zeitreihenanalyse: Konstanz, ARMA / ARIMA-Modell
Python 3 Engineer Zertifizierungsdatenanalyse Prüfung Pre-Exam Learning
Eine Einführung in die statistische Modellierung für die Datenanalyse
Verwendung von Datenanalysetools für Anfänger