Introduction
Nous créons un package Python CovsirPhy qui vous permet de télécharger et d'analyser facilement les données COVID-19 (comme le nombre de PCR positifs). Nous prévoyons de publier des articles sur des exemples d'analyse en utilisant des packages et des connaissances acquises lors de leur création (Python, GitHub, Sphinx, ...).
La version anglaise du document est CovsirPhy: COVID-19 analysis with phase-depend SIRs, Kaggle: COVID-19 data with SIR model.
** Cette fois, nous présenterons le modèle de base modèle SIR. ** Aucune donnée réelle n'est disponible. Version anglaise: Utilisation (détails: ensembles de données théoriques)
CovsirPhy peut être installé par la méthode suivante! Veuillez utiliser Python 3.7 ou supérieur, ou Google Colaboratory.
--Version stable: pip install covsirphy --upgrade
--Version de développement: pip install" git + https://github.com/lisphilar/covid19-sir.git#egg=covsirphy "
#Pour l'affichage des données
from pprint import pprint
# CovsirPhy
import covsirphy as cs
cs.__version__
# '2.8.0'
Environnement d'exécution | |
---|---|
OS | Windows Subsystem for Linux |
Python | version 3.8.5 |
Lorsque des contacts sensibles sont infectés, la probabilité d'être infecté est définie comme Taux de contact effectif $ \ beta $ [1 / min]. $ \ Gamma $ [1 / min] est la probabilité de transition d'infecté à récupéré [^ 1] [^ 2].
\begin{align*}
\mathrm{S} \overset{\beta I}{\longrightarrow} \mathrm{I} \overset{\gamma}{\longrightarrow} \mathrm{R} \\
\end{align*}
En tant que population totale $ 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*}
Vous pouvez le gérer tel quel, mais il sera sans dimension car la plage de paramètres est limitée à $ (0, 1) $. Bien que cela ne soit pas mentionné dans cet article, il est efficace lors du calcul des paramètres à partir de données réelles.
$ (S, I, R) = N \ fois (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*}
En ce moment,
\begin{align*}
& 0 \leq (x, y, z, \rho, \sigma) \leq 1 \\
\end{align*}
(De base / Effectif) Numéro de reproduction Le numéro de reproduction est défini comme suit [^ 3].
\begin{align*}
R_t = \rho \sigma^{-1} = \beta \gamma^{-1}
\end{align*}
Définissez le paramètre $ (\ rho, \ sigma) = (0,2, 0,075) $ et la valeur initiale et le graphique.
# 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}}
(Basique / Effectif) Nombre de reproductions:
# 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
affichage graphique:
# 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 "
)
Présentation du modèle modèle SIR-F, qui est une version modifiée du modèle de base modèle SIR pour COVID-19.
Recommended Posts