[PYTHON] Jour 71, j'ai essayé de prédire combien de temps cette autolimitation se poursuivra avec le modèle SIR

J'ai calculé le modèle SIR.

Combien de temps la nouvelle tendance Corona se poursuivra-t-elle? Hier de NHK Special "New Corona Virus Border Offense and Defence-Report from the Frontline of Prevention of Infection Spread-" Je l'ai calculé en référence à.

Qu'est-ce que le modèle SIR?

Une équation utilisée pour calculer les épidémies-convergence des maladies infectieuses.

Implémenter le modèle SIR en Python

Le code implémenté en Python était sur scipython.com, donc je l'ai utilisé.

The SIR epidemic model

SIR.py


import numpy as np
from scipy.integrate import odeint
import matplotlib.pyplot as plt

# Total population, N.
N = 1000
# Initial number of infected and recovered individuals, I0 and R0.
I0, R0 = 1, 0
# Everyone else, S0, is susceptible to infection initially.
S0 = N - I0 - R0
# Contact rate, beta, and mean recovery rate, gamma, (in 1/days).
beta, gamma = 0.2, 1./10 
# A grid of time points (in days)
t = np.linspace(0, 160, 160)

# The SIR model differential equations.
def deriv(y, t, N, beta, gamma):
    S, I, R = y
    dSdt = -beta * S * I / N
    dIdt = beta * S * I / N - gamma * I
    dRdt = gamma * I
    return dSdt, dIdt, dRdt

# Initial conditions vector
y0 = S0, I0, R0
# Integrate the SIR equations over the time grid, t.
ret = odeint(deriv, y0, t, args=(N, beta, gamma))
S, I, R = ret.T

# Plot the data on three separate curves for S(t), I(t) and R(t)
fig = plt.figure(facecolor='w')
ax = fig.add_subplot(111, axis_bgcolor='#dddddd', axisbelow=True)
ax.plot(t, S/1000, 'b', alpha=0.5, lw=2, label='Susceptible')
ax.plot(t, I/1000, 'r', alpha=0.5, lw=2, label='Infected')
ax.plot(t, R/1000, 'g', alpha=0.5, lw=2, label='Recovered with immunity')
ax.set_xlabel('Time /days')
ax.set_ylabel('Number (1000s)')
ax.set_ylim(0,1.2)
ax.yaxis.set_tick_params(length=0)
ax.xaxis.set_tick_params(length=0)
ax.grid(b=True, which='major', c='w', lw=2, ls='-')
legend = ax.legend()
legend.get_frame().set_alpha(0.5)
for spine in ('top', 'right', 'bottom', 'left'):
    ax.spines[spine].set_visible(False)
plt.show()

En cas de grippe

Jetons d'abord un coup d'œil à la grippe qui a été donnée à titre d'exemple.

Grippe (pas d'immunité)

N  =1000 #La population de 1000 habitants par école, entreprise ou association de quartier?
I0 =1    #Personne infectée. Au début une personne.
R0 =0    #Une personne qui a récupéré et acquis l'immunité. 0 personnes au début
S0 =N - I0 - R0 #Les personnes qui ne sont pas immunisées et qui sont sujettes aux infections. N premier-I0-R0 personnes
beta =0.2       #Nombre de personnes à infecter par jour
gamma =1./10    #Taux de récupération
t =160          #période(Journées) 

Une personne infectée infecte 0,2 personne par jour. La période d'infection est de 10 jours. Une fois que vous aurez récupéré et acquis une immunité, vous ne serez pas infecté après ce contact. Lorsque l'immunité est supérieure à la moitié, elle converge.

i0.png

67 jours d'un porteur au pic, 15,3%, 153 personnes ont été infectées et ont convergé. C'est comme ça quand la classe est fermée en raison de la grippe.

Grippe (immunité 20%)

Prenons le cas de l'immunité par vaccination avant la saison grippale. Le premier se produit lorsqu'une épidémie de grippe survient où 20% des personnes ont acquis une immunité.

# Initial number of infected and recovered individuals, I0 and R0.
#I0, R0 = 1, 0
I0, R0 = 1, (N*0.2)

i2.png

Seulement 20% des personnes sont immunisées et l'épidémie a été considérablement réprimée. Le vaccin est incroyable.

Grippe (immunité 50%)

Le taux d'inoculation régulière du vaccin antigrippal en 2019 était de 50%.

# Initial number of infected and recovered individuals, I0 and R0.
#I0, R0 = 1, 0
I0, R0 = 1, (N*0.5)

i1.png

Il est complètement supprimé. C'est sûr si cela se produit.

Pour COVID-19

Prenons le cas de la nouvelle Corona. En supposant une ville de 10 millions d'habitants comme Tokyo et Wuhan, la période d'infection a été fixée à 3 semaines (21 jours). D'autres propriétés sont les mêmes que la grippe.

COVID-19 (pas d'immunité)

N  =10000000 #Population 10 millions(En supposant Tokyo et Wuhan)|
I0 =1        #Personne infectée. Au début une personne.
R0 =0        #Une personne qui a récupéré et acquis l'immunité. 0 personnes au début
S0 =N - I0 - R0 #Les personnes qui ne sont pas immunisées et qui sont sujettes aux infections. N premier-I0-R0 personnes
beta =0.2       #Nombre de personnes à infecter par jour
gamma =1./21    #L'inverse du nombre de jours requis pour la récupération
t =160          #période(Journées) 

c0.png

Avec seulement 21 jours d'infection, le nombre maximal de personnes infectées était de 42%, soit 4,2 millions, et il est devenu un virus vicieux. Parmi ceux-ci, 20% se développent et 1% meurent ... 840 000 personnes seront touchées, 42 000 mourront et le problème sera résolu dans 228 jours.

C'est l'enfer.

Après avoir vu ce graphique, il a baissé pendant quelques jours.

Cependant, quand j'ai vu ce tweet, j'ai pensé qu'il pouvait y avoir de l'espoir.

Résultats de l'enquête d'impact ... Dans le comté de Heinsberg, où la première épidémie de la nouvelle corona s'est produite en Allemagne, une enquête immunologique a été menée sur environ 500 personnes, et il a été dit qu'environ 15% d'entre elles avaient été infectées. Le nombre de personnes infectées pour 100 000 habitants dans le test PCR de Heinsberg était de 604,4 et le taux de sensibilité connu n'était que de 0,6%. https://twitter.com/R3000C/status/1248594913589002240

COVID-19 (immunité 15%)

Au Japon aujourd'hui, 15% des personnes sont déjà infectées. 89 jours jusqu'à ce que 15% des personnes soient infectées.

Verrouillez-vous le 89e jour pour arrêter la tendance.

Supposons qu'après un mois, toutes les personnes se rétablissent et que 15% soient immunisées. Relâchez le verrouillage. La mode renaît, mais ...

c1.png

La courbe de la deuxième vague a été relâchée de 15% d'immunité.

Juste avant le pic à nouveau, nous allons verrouiller avec un taux d'infection de 15%. Cette fois, c'était le 119e jour.

Après un mois, tout le monde récupère et gagne l'immunité, avec un total de 30% ayant l'immunité.

COVID-19 (immunité 30%)

c2.png

La troisième vague culmine en 178 jours. Le taux d'infection peut atteindre 20%. Il a fallu 149 jours pour atteindre un taux d'infection de 15%.

COVID-19 (immunité 45%)

La quatrième vague a un pic de 252 jours et un taux d'infection pouvant atteindre 11%.

c3.png

Si vous arrivez à ce point, vous serez en mesure de le surmonter avec une faible maîtrise de soi.

Combien de temps durera cette maîtrise de soi?

15% d'infection → verrouillage → récupération → libération en 3 séries (89 jours + 30 jours) + (119 jours + 30 jours) + (149 jours + 30 jours) = 447 jours

Il sera nécessaire de trouver un moyen de survivre pendant 447 jours, mais le nombre de victimes sera faible.

S'il s'agit d'une stratégie pour infecter l'économie tout en faisant tourner l'économie, 99% des vies ne seront pas différentes et cela prendra 228 jours. Certaines personnes peuvent ne pas être capables de résister à la tentation du diable.

La ville de Wuhan a levé le blocus le 7 avril. Même si la deuxième vague arrive, elle ne devrait pas être aussi importante que cette fois. Je suis préoccupé par le taux d'acquisition de l'immunité. Une gestion rigoureuse peut réduire considérablement l'épidémie. Dans ce cas, la première reconstruction au monde aura lieu dans la ville de Wuhan, et à partir de maintenant SF sera-t-elle?

Et le vaccin. Avec cela, la situation sera immédiatement renversée. Lavage à la main, gargarisme, distance sociale. La courbe est supprimée nettement. Puis inspection. Si la moitié de la population peut acquérir une immunité, elle peut être complètement supprimée.

Ça va être une longue bataille.

Recommended Posts

Jour 71, j'ai essayé de prédire combien de temps cette autolimitation se poursuivra avec le modèle SIR
J'ai essayé de prédire le comportement du nouveau virus corona avec le modèle SEIR.
J'ai essayé de prédire les chevaux qui seront dans le top 3 avec LightGBM
J'ai essayé de simuler la propagation de l'infection avec Python
J'ai essayé de prédire l'infection d'une nouvelle pneumonie en utilisant le modèle SIR: ☓ Wuhan edition ○ Hubei province edition
J'ai essayé de prédire le nombre de personnes infectées au niveau national de la nouvelle corona avec un modèle mathématique
J'ai essayé de visualiser le modèle avec la bibliothèque d'apprentissage automatique low-code "PyCaret"
J'ai essayé de prédire l'année prochaine avec l'IA
J'ai essayé de prédire la survie du Titanic avec PyCaret
J'ai essayé de créer un modèle avec l'exemple d'Amazon SageMaker Autopilot
J'ai essayé d'entraîner la fonction péché avec chainer
J'ai essayé de prédire le match de la J League (analyse des données)
J'ai essayé de résoudre Soma Cube avec python
J'ai essayé de résoudre le problème avec Python Vol.1
J'ai étudié comment rationaliser le flux de travail avec Excel x Python ②
J'ai essayé de faire quelque chose comme un chatbot avec le modèle Seq2Seq de TensorFlow
J'ai étudié comment rationaliser le flux de travail avec Excel x Python ④
J'ai essayé de savoir comment rationaliser le flux de travail avec Excel x Python ⑤
J'ai étudié comment rationaliser le flux de travail avec Excel x Python ①
J'ai étudié comment rationaliser le flux de travail avec Excel x Python ③
Le 15e temps réel hors ligne, j'ai essayé de résoudre le problème de l'écriture avec python
J'ai essayé de prédire et de soumettre les survivants du Titanic avec Kaggle
J'ai essayé de trouver l'entropie de l'image avec python
J'ai essayé d'analyser les émotions de tout le roman "Weather Child" ☔️
J'ai essayé de trouver la moyenne de plusieurs colonnes avec TensorFlow
[Introduction au modèle SIR] Prédire l'heure de fin de chaque pays avec l'ajustement des données COVID-19 ♬
J'ai essayé de résoudre le problème de F02 comment écrire en temps réel hors ligne avec Python
J'ai essayé de notifier les informations de retard de train avec LINE Notify
Analyse des émotions avec traitement du langage naturel! J'ai essayé de prédire l'évaluation à partir du texte de l'avis
J'ai essayé de prédire le prix de l'immobilier à Boston avec PyCaret
J'ai essayé d'écrire dans un modèle de langage profondément appris
J'ai essayé de prédire les ventes de logiciels de jeux avec VARISTA en me référant à l'article du Codexa
J'ai essayé d'implémenter SSD avec PyTorch maintenant (édition du modèle)
J'ai essayé de résumer comment utiliser à nouveau le référentiel EPEL
J'ai essayé de savoir comment rationaliser le flux de travail avec Excel × Python, mon résumé d'article ★
J'ai essayé de décrire le trafic en temps réel avec WebSocket
J'ai essayé de résoudre l'édition du débutant du livre des fourmis avec python
J'ai essayé d'automatiser l'arrosage du pot avec Raspberry Pi
J'ai essayé de traiter l'image en "style croquis" avec OpenCV
J'ai essayé de démarrer avec Bitcoin Systre le week-end
J'ai fait apprendre à RNN la vague de péché et j'ai essayé de prédire
J'ai essayé de traiter l'image dans un "style de dessin au crayon" avec OpenCV
J'ai essayé d'agrandir la taille du volume logique avec LVM
J'ai essayé d'améliorer l'efficacité du travail quotidien avec Python
J'ai essayé de déplacer le ballon
J'ai essayé d'estimer la section.
[Python] J'ai essayé de visualiser la nuit du chemin de fer de la galaxie avec WordCloud!
Comment écrire hors ligne en temps réel J'ai essayé de résoudre E11 avec python
J'ai essayé d'améliorer la précision de mon propre réseau neuronal
765 J'ai essayé d'identifier les trois familles professionnelles par CNN (avec Chainer 2.0.0)
J'ai essayé d'obtenir le code d'authentification de l'API Qiita avec Python.
J'ai essayé d'extraire automatiquement les mouvements des joueurs Wiire avec un logiciel
J'ai essayé d'apprendre l'angle du péché et du cos avec le chainer
J'ai essayé avec les 100 meilleurs packages PyPI> J'ai essayé de représenter graphiquement les packages installés sur Python
J'ai essayé d'analyser la négativité de Nono Morikubo. [Comparer avec Posipa]
J'ai essayé de rationaliser le rôle standard des nouveaux employés avec Python
J'ai essayé de visualiser le texte du roman "Weather Child" avec Word Cloud