Depuis le 5 mars 2020, la situation au Japon contre le nouveau virus corona (COVID-19) a été prise très au sérieux, y compris les restrictions d'immigration en provenance d'autres pays. Le gouvernement a demandé que toutes les écoles primaires, secondaires et secondaires soient fermées dans tout le pays, et si certains en ont remis en question l'effet, il est également entendu que le jugement politique est nécessaire car il est difficile de démontrer une base scientifique. Je peux le faire. Cet article utilise le modèle SEIR, qui est l'un des modèles mathématiques des maladies infectieuses, pour vérifier s'il est possible de contrôler le pic d'infection en prenant un certain temps de congé dans un établissement scolaire / commercial (avec une échelle de 1000 personnes). est. Cependant, cet article est une simulation sous des hypothèses limitées et ne fournit pas de confirmation scientifique ou de preuves académiques. Nous ne prenons aucune responsabilité car cela peut être utile ou incorrect. Pour la plupart des programmes, j'ai fait référence à cet article.
Les détails du modèle SEIR sont omis dans cet article, mais dans Wikipedia Selon
Il est composé de, et son acronyme est appelé modèle SEIR. Il semble. Les paramètres du modèle SEIR comprennent
il y a. Selon Ministère de la santé, du travail et du bien-être, "La période de latence est actuellement connue de l'OMS. Est de 1 à 12,5 jours (principalement de 5 à 6 jours) », supposons donc 5,5 jours. La durée de l'infection est inconnue, mais on dit que l'apparition de la fièvre se poursuivra pendant environ 4 jours, puis elle se rétablira ou s'aggravera, donc on suppose qu'elle est de 8 jours. (Si la condition s'aggrave, on considère que le patient sera hospitalisé, mais la personne légèrement malade se rétablira tout en menant une vie normale sans en avoir conscience.) Le plus important est le taux d'infection, mais sur la base des données fournies par le ministère de la Santé, du Travail et des Affaires sociales, nous avons fait ce qui suit.
Selon Q&R of Ministry of Health, Labour and Welfare, la fréquence d'une personne infectée causant une infection secondaire est indiquée dans la figure ci-dessous. Il semble. À partir de ces données, en utilisant des nombres aléatoires uniformes, Définissez une fonction pour calculer le taux R0 (nombre de reproduction de base) qui produit une infection secondaire.
def COVID19R0(er):
if np.random.rand() < er:
# good environment
if np.random.rand() < 0.8:
R0 = 0
else:
R0 = np.random.randint(1,4)*1.0
else:
# bad environment
R0 = np.random.randint(0,12)*1.0
return R0
Ici, er est défini comme la probabilité que la source de l'infection se trouve dans un environnement mal ventilé.
Nous voulons également évaluer l'impact du congé, nous allons donc introduire les paramètres suivants.
Sur la base de R0 et de ces paramètres, j'ai modifié le modèle SEIR comme suit:
#define differencial equation of seir model
def seir_eq5(v,t, keys):
er = keys['er']
lp = keys['lp']
ip = keys['ip']
tb = keys['tb']
te = keys['te']
#
if t >= tb and t <= te: #Période de vacances
R0 = 0 #Complètement fermé (lorsqu'il n'y a personne dans l'école / le bureau des affaires)
else:
R0 = COVID19R0(er)
#
ds = - R0/ip * v[2] if v[0] >= 0 else 0 # note: s >= 0
de = -ds - (1/lp) * v[1]
di = (1/lp)*v[1] - (1/ip)*v[2]
dr = (1/ip)*v[2]
return [ds, de, di, dr]
Importez la bibliothèque pour exécuter la simulation.
import numpy as np
import matplotlib.pyplot as plt
Définissez une fonction pour résoudre ODE.
def my_odeint(deq, ini_state, tseq, keys):
sim = None
v = np.array(ini_state).astype(np.float64)
dt = (tseq[1] - tseq[0])*1.0
for t in tseq:
dv = deq(v,t, keys)
v = v + np.array(dv) * dt
if sim is None:
sim = v
else:
sim = np.vstack((sim, v))
return sim
Code qui calcule et trace les résultats.
#solve seir model
ini_state=[999,0,1,0]
t_max=180
dt=0.01
t=np.arange(0,t_max,dt)
#
keys = {'er':0.5, 'lp':5.5, 'ip':8, 'tb':0, 'te':0}
sim = my_odeint(seir_eq5, ini_state, t, keys)
#
plt.rcParams["font.size"] = 12
fig, ax = plt.subplots(figsize=(10,5))
ax.plot(t,sim)
ax.set_xticks(np.linspace(0,t_max,19))
ax.set_yticks(np.linspace(0,1000,11))
ax.grid(which='both')
ax.legend(['Susceptible','Exposed','Infected','Recovered'])
plt.show()
Ici, er (probabilité que la source de l'infection se trouve dans un environnement mal ventilé) a été supposé être de 0,5.
Nous commencerons avec une personne infectée le 0ème jour sur 1000 bureaux.
Le pic est vers le 60e jour, et il y a des jours où il y a jusqu'à environ 320 personnes infectées.
Le pic est vers le 95ème jour, et il y a des jours où il y a jusqu'à 310 personnes infectées. Il est intéressant de noter que les jours de retard de pointe (35 = 95-60) sont plus longs que les vacances (20 jours).
Les pics sont dispersés les jours 52 et 90, avec jusqu'à 200 jours infectés au jour 90.
Le résultat est le même que si vous ne prenez aucun congé. On pense que cela est dû au fait qu'au 60e jour, personne (sensible) n'était immunisé contre l'infection S:.
De ce qui précède, les tendances suivantes peuvent être dérivées de la simulation concernant le contrôle maximal de l'infection en prenant une certaine période (20 jours) de congé de l'établissement scolaire / commercial (jusqu'à 1000 personnes).
Par conséquent, si vous souhaitez prendre un congé, il peut être plus efficace de le faire du «stade où l'infection commence à augmenter rapidement» à «avant que l'infection ne commence à disparaître».
Je me suis référé à la page suivante.
Recommended Posts