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 werde ich das Basismodell SIR vorstellen. ** Es sind keine aktuellen Daten verfügbar. Englische Version: Verwendung (Details: theoretische Datensätze)
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
pip install" git + https://github.com/lisphilar/covid19-sir.git#egg=covsirphy "
#Zur Datenanzeige
from pprint import pprint
# CovsirPhy
import covsirphy as cs
cs.__version__
# '2.8.0'
Ausführungsumgebung | |
---|---|
OS | Windows Subsystem for Linux |
Python | version 3.8.5 |
Wenn Susceptible mit Infected in Kontakt kommt, wird die Wahrscheinlichkeit einer Infektion als effektive Kontaktrate $ \ beta $ [1 / min] definiert. $ \ Gamma $ [1 / min] ist die Wahrscheinlichkeit des Übergangs von Infiziert zu Wiederhergestellt [^ 1] [^ 2].
\begin{align*}
\mathrm{S} \overset{\beta I}{\longrightarrow} \mathrm{I} \overset{\gamma}{\longrightarrow} \mathrm{R} \\
\end{align*}
Als Gesamtbevölkerung $ N = S + I + R $
\begin{align*}
& \frac{\mathrm{d}S}{\mathrm{d}T}= - N^{-1}\beta S I \\
& \frac{\mathrm{d}I}{\mathrm{d}T}= N^{-1}\beta S I - \gamma I \\
& \frac{\mathrm{d}R}{\mathrm{d}T}= \gamma I \\
\end{align*}
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) = N \ mal (x, y, z) $, $ (T, \ beta, \ gamma) = (\ tau t, \ 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 x y - \sigma y \\
& \frac{\mathrm{d}z}{\mathrm{d}t}= \sigma y \\
\end{align*}
In diesem Moment,
\begin{align*}
& 0 \leq (x, y, z, \rho, \sigma) \leq 1 \\
\end{align*}
(Basic / Effective) Reproduktionsnummer Die Reproduktionsnummer ist wie folgt definiert [^ 3].
\begin{align*}
R_t = \rho \sigma^{-1} = \beta \gamma^{-1}
\end{align*}
Setzen Sie den Parameter $ (\ rho, \ sigma) = (0.2, 0.075) $ und den Anfangswert und das Diagramm.
# Parameters
pprint(cs.SIR.EXAMPLE, compact=True)
# {'param_dict': {'rho': 0.2, 'sigma': 0.075},
# 'population': 1000000,
# 'step_n': 180,
# 'y0_dict': {'Fatal or Recovered': 0, 'Infected': 1000, 'Susceptible': 999000}}
(Basic / Effective) Anzahl der Reproduktionen:
# Reproduction number
eg_dict = cs.SIR.EXAMPLE.copy()
model_ins = cs.SIR(
population=eg_dict["population"],
**eg_dict["param_dict"]
)
model_ins.calc_r0()
# 2.67
Grafikanzeige:
# Set tau value and start date of records
example_data = cs.ExampleData(tau=1440, start_date="01Jan2020")
# Add records with SIR model
model = cs.SIR
area = {"country": "Full", "province": model.NAME}
example_data.add(model, **area)
# Change parameter values if needed
# example_data.add(model, param_dict={"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="sir.png "
)
Einführung des Modells SIR-F, einer modifizierten Version des Basismodells SIR für COVID-19.
Recommended Posts