Aujourd'hui, on dit à la télévision et dans d'autres médias que "80% des restrictions comportementales sont nécessaires pour résoudre la nouvelle pneumonie corona". Il semble que la base de ce nombre de 80% soit une équation de modèle classique appelée modèle SIR. Je suis curieux, mais j'ai implémenté le modèle SIR et vérifié l'effet du taux d'auto-retenue.
** Le modèle SIR ** est un classique qui décrit définitivement le processus épidémique à court terme des [maladies infectieuses](https://ja.wikipedia.org/wiki/infectious disease). [Équation du modèle](https://ja.wikipedia.org/w/index.php?title=model equation & action = edit & redlink = 1). Le nom est pour [Model](https://ja.wikipedia.org/wiki/Mathematical model)
--Sensibilité titulaire (** S ** usceptible) --Infecté (** I ** négatif)
- Détenteur de l'immunité (** R ** récupéré ou mise en quarantaine [** R ** emoved](https: //ja.wiktionary. org / wiki / supprimé)))
Nommé d'après l'acronyme>. Le modèle prototype est [WO Kermac](https://ja.wikipedia.org/w/index.php?title=William Oglevi Carmac & action = edit & redlink = 1) (version anglaise //en.wikipedia.org/wiki/William_Ogilvy_Kermack)) et [AG McKendrick](https://ja.wikipedia.org/w/index.php?title=Anderson Gray McKendrick & action = [1 ] proposé dans un article de 1927 par edit & redlink = 1) (version anglaise) / wiki / modèle SIR # cite_note-1).
Cependant, * β *> 0 représente le taux d'infection, * γ *> 0 représente le taux de récupération (taux d'isolement) (l'inverse 1 / * γ * représente la période moyenne d'infection).
Exposant: [wikipedia]([https://ja.wikipedia.org/wiki/SIR%E3%83%A2%E3%83%87%E3%83%AB](https://ja.wikipedia.org/ modèle wiki / SIR)))
Le modèle SIR est une équation différentielle simultanée ternaire de S, R, I,
Littérature → https://www.biorxiv.org/content/10.1101/2020.01.25.919787v1
Si vous notez la formule ci-dessus comme une différence à terme,
Utilisez matplotlib pour la visualisation des graphiques.
from matplotlib import pyplot
R = 2.5
activity = 0.2
x0 = 200
infection_days = 14
dt = 1/infection_days
stop_day = 30
start_day = 150
total_day = 180
Paramètres | La description |
---|---|
R | Nombre de reproductions de base (nombre de personnes nouvellement infectées par personne infectée pendant les activités normales) |
activity | Taux d'activité pendant la période de maîtrise de soi (1 est normal) Par exemple, 1 pour 80% de maîtrise de soi-0.8=0.Ce sera 2. |
x0 | Nombre d'infections initiales |
infection_days | Jours de quarantaine ou de récupération |
dt | Pas de temps de calcul |
stop_day | Date de début de l'autolimitation (le taux d'activité passe de 1 à activité après cette date) |
start_day | Le jour pour mettre fin à la maîtrise de soi et reprendre les activités normales |
total_day | Nombre total de jours de simulation |
x = [x0]
new = [0]
Nom de variable | La description |
---|---|
x[day] | t=Nombre de personnes infectées par jour |
new[day] | t=Nombre de nouvelles infections par jour |
for day in range(1,total_day):
p = 1
if day >= stop_day:
p = activity
if day >= start_day:
p = 1
x.append(x[day-1]+x[day-1]*(R*p-1.0)*dt)
new.append(x[day-1]*R*p*dt)
p représente le taux d'activité, qui est de 1 jusqu'à ce que «day» devienne «stop_day», «activité» de «stop_day» à «start_day», et 1 après cela. En multipliant cette valeur par R, il représente le nombre de base de reproductions au moment de la maîtrise de soi. Par exemple, si p = 0,5, alors R × p = 2,5 × 0,5 = 1,25.
pyplot.plot(x,label='Infected persons')
pyplot.plot(new,label='New infected persons')
pyplot.xlabel('days')
pyplot.ylabel('Persons')
pyplot.legend()
pyplot.show()
Le nombre de personnes infectées a diminué rapidement à partir de la date de début de l'autolimitation (stop_day
), mais la date de début de l'activité ( start_day
) a été atteinte avant qu'elle ne soit complètement éradiquée, et le nombre de personnes infectées a progressivement augmenté après ce jour. Je suis. Vous pouvez voir que même si le nombre de personnes infectées diminue, c'est généralement inutile.
Comme le graphique est difficile à voir, j'ai mis start_day = 180
(pas de réactivation). C'est un graphique que vous voyez souvent à la télévision. Si «activité = 0,4», alors R × p = 1, ce qui signifie que ** en moyenne 1 personne est infectée par personne infectée **. Sous la prémisse de R = 2,5, il est nécessaire de maintenir le statu quo avec une réduction de 60% et de réduire le nombre de personnes infectées de 80% en tenant compte de l'incertitude.
Encore une fois, le code source de cet article est juste pour ** une compréhension intuitive de la façon dont la réglementation peut contrôler les infections **. Je pense que le modèle est trop simple et trop strict pour une évaluation quantitative.
from matplotlib import pyplot
#Nombre de reproductions de base (nombre de personnes nouvellement infectées par personne infectée pendant les activités normales)
R = 2.5
#Taux d'activité pendant la période de maîtrise de soi (1 est normal)
activity = 0.2
#Nombre d'infections initiales
x0 = 200
#Jours de quarantaine ou de récupération
infection_days = 14
#Pas de temps de calcul
dt = 1/infection_days
#Date de début de l'autolimitation (le taux d'activité passe de 1 à activité après cette date)
stop_day = 30
#Le jour pour mettre fin à la maîtrise de soi et reprendre les activités normales
start_day = 150
#Nombre total de jours de simulation
total_day = 180
#Nombre actuel de personnes infectées
x = [x0]
#Nombre de personnes nouvellement infectées
new = [0]
#Mise à jour de la valeur (méthode de différence)
for day in range(1,total_day):
p = 1
if day >= stop_day:
p = activity
if day >= start_day:
p = 1
x.append(x[day-1]+x[day-1]*(R*p-1.0)*dt)
new.append(x[day-1]*R*p*dt)
#affichage graphique
pyplot.plot(x,label='Infected persons')
pyplot.plot(new,label='New infected persons')
pyplot.xlabel('days')
pyplot.ylabel('Persons')
pyplot.legend()
pyplot.show()
Recommended Posts