[CovsirPhy] Package Python COVID-19 pour l'analyse de données: modèle SIR-F

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, je voudrais vous présenter le modèle SIR-F. ** Aucune donnée réelle n'est disponible. Version anglaise: Utilisation (détails: ensembles de données théoriques)

1. Environnement d'exécution

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.2'
Environnement d'exécution
OS Windows Subsystem for Linux
Python version 3.8.5

2. Qu'est-ce que le modèle SIR-F?

Le modèle SIR-F est un modèle dérivé créé à partir du modèle de base bien connu modèle SIR [^ 1]. Je l'ai créé en procédant à l'analyse en utilisant les données de Kaggle [^ 2].

(Je pense que c'est un nouveau modèle, mais si vous connaissez l'article original publié avant février 2020, faites-le moi savoir! Je ne suis pas un expert en maladies infectieuses ...)

[^ 1]: [CovsirPhy] COVID-19 Python Package for Data Analysis: SIR model

SIR model Premièrement, le modèle SIR définit la probabilité d'être infecté lorsque Susceptible entre en contact avec Infected comme Taux de contact effectif $ \ beta $ [1 / min]. $ \ Gamma $ [1 / min] est la probabilité de transition d'Infecté à Récupéré [^ 3] [^ 4].

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

SIR-D model Cependant, Fatal (nombre de cas mortels) n'est pas pris en compte dans le modèle SIR, ou il est inclus dans Récupéré. Dans le cas du COVID-19, des données sur le nombre de cas confirmés (nombre de positifs PCR), le nombre de guérisseurs et le nombre de décès ont été collectées par l'Université Johns Hopkins, etc. [^ 5] et peuvent être utilisées comme variables de modèle. Je peux le faire. Le nombre de cas confirmés est le total du nombre de personnes infectées $ I $, le nombre de guérisseurs $ R $ et le nombre de décès $ D $.

SIR-D model: $ \ Alpha_2 $ [1 / min] comme taux de mortalité des personnes infectées

\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 De plus, dans le cas du COVID-19, il est difficile de poser un diagnostic définitif d'infection, et de nombreux cas ont été rapportés qui meurent avant le diagnostic définitif, en particulier dans les premiers stades. Le modèle qui reflète ces cas est le suivant. $ S ^ {\ ast} $ est le pourcentage de personnes infectées avec un diagnostic définitif, et $ \ alpha_1 $ [-] est le pourcentage de $ S ^ {\ ast} $ décédés au moment du diagnostic définitif (sans unité) ) Est montré.

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*}

Lorsque $ \ alpha_1 = 0 $, le modèle SIR-F correspond au modèle SIR-D.

3. Équations différentielles normales simultanées

En tant que population totale $ 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. Paramètres non dimensionnels

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, F) = N \ fois (x, y, z, w) $, $ (T, \ alpha_1, \ alpha_2, \ beta, \ gamma) = (\ taut, \ 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*}

En ce moment,

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

5. (De base / effective) Nombre de reproductions

Le nombre de reproduction (de base / effectif) du modèle SIR-F est défini comme suit en étendant la formule de définition [^ 6] du modèle SIR.

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

6. Exemple de données

Définissez le paramètre $ (\ theta, \ kappa, \ rho, \ sigma) = (0,002, 0,005, 0,2, 0,075) $ et la valeur initiale et le graphique.

# 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}}

(Basique / Effectif) Nombre de reproductions:

# 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

affichage graphique:

# 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. La prochaine fois

La prochaine fois, j'expliquerai la procédure de téléchargement et de vérification des données réelles.

Recommended Posts

[CovsirPhy] Package Python COVID-19 pour l'analyse de données: modèle SIR-F
[CovsirPhy] Package Python COVID-19 pour l'analyse des données: modèle SIR
[CovsirPhy] Package Python COVID-19 pour l'analyse des données: chargement des données
[CovsirPhy] Package Python COVID-19 pour l'analyse des données: analyse des tendances S-R
[CovsirPhy] Package Python COVID-19 pour l'analyse des données: estimation des paramètres
[CovsirPhy] Package Python COVID-19 pour l'analyse de données: analyse de scénario (comparaison de paramètres)
Python pour l'analyse des données Chapitre 4
Python pour l'analyse des données Chapitre 2
Python pour l'analyse des données Chapitre 3
Modèle de prétraitement pour l'analyse des données (Python)
Outil de visualisation Python pour le travail d'analyse de données
Analyse de données python
Analyse de données avec python 2
Présentation de l'analyse de données python
Modèle d'analyse de données Python
Analyse de données avec Python
Analysons les données Covid-19 (Corona) en utilisant Python [Pour les débutants]
Analyse de données pour améliorer POG 1 ~ Web scraping avec Python ~
[Pour les débutants] Comment étudier le test d'analyse de données Python3
Mon conteneur d'analyse de données python
[Python] Notes sur l'analyse des données
Notes d'apprentissage sur l'analyse des données Python
Analyse de données à l'aide de pandas python
Conseils et précautions lors de l'analyse des données
[Comprendre au plus court] Principes de base de Python pour l'analyse des données
Lequel dois-je étudier, R ou Python, pour l'analyse des données?
<Python> Construisez un serveur dédié pour l'analyse des données Jupyter Notebook
Introduction à la modélisation statistique pour l'analyse des données Sélection du modèle GLM
Python: analyse des séries chronologiques: prétraitement des données des séries chronologiques
Cours Python pour la science des données - techniques utiles
Pratique de l'analyse de données par Python et pandas (Tokyo COVID-19 data edition)
Analyse de données pour améliorer POG 3 ~ Analyse de régression ~
Formatage des données pour les graphiques Python / couleur
Analyse de données à partir de python (visualisation de données 1)
Analyse de données à partir de python (visualisation de données 2)
Créer un Ubuntu de démarrage USB avec un environnement Python pour l'analyse des données
Résumé du livre électronique Python utile pour l'analyse de données gratuite
Techniques Python détaillées requises pour la mise en forme des données (1)
[Python] Première analyse de données / apprentissage automatique (Kaggle)
Analyse de données à partir de python (pré-traitement des données-apprentissage automatique)
Comment utiliser "deque" pour les données Python
Techniques Python détaillées requises pour la mise en forme des données (2)
J'ai suivi une formation à l'analyse de données Python à distance
Préparation à l'examen d'analyse de données certifié Python 3 Engineer
JupyterLab Basic Setting 2 pour l'analyse des données (pip)
Configuration de base de JupyterLab pour l'analyse des données (pip)
Analyse des données en Python Résumé des sources que les débutants devraient d'abord consulter
Python: analyse des séries temporelles: création d'un modèle SARIMA
[Introduction au modèle SEIR] Essayez d'ajuster les données COVID-19 ♬
Analyse des données pour améliorer POG 2 ~ Analyse avec le notebook jupyter ~
Modèle Python qui effectue une analyse des journaux à une vitesse explosive
Préparer un environnement de langage de programmation pour l'analyse des données
Test d'analyse des données de certification d'ingénieur Python3
Python: Analyse des séries temporelles: Constantity, modèle ARMA / ARIMA
Formation préalable à l'examen d'analyse des données de certification d'ingénieur Python 3
Introduction à la modélisation statistique pour l'analyse des données
Comment utiliser les outils d'analyse de données pour les débutants