[PYTHON] Modèle SIR que même les élèves du premier cycle du secondaire peuvent comprendre

Récemment, j'entends souvent le terme modèle SIR lié au virus corona. On sait que le modèle SIR s'intègre bien dans le graphique des personnes infectées comme la grippe, et il est également utile pour les contre-mesures contre ce virus corona.

Il se trouve que je prends des cours similaires, donc il peut s'agir d'environ 100 bières, mais j'aimerais le résumer facilement afin que même les élèves du premier cycle du secondaire puissent le comprendre. Enfin, simulons avec du code Python.

Qu'est-ce qu'un modèle SIR?

Le modèle SIR est un modèle mathématique qui exprime la propagation des maladies infectieuses. S signifie personne non infectée, I signifie personne infectée (personne actuellement infectée, pas le nombre total de personnes infectées) et R signifie personne rétablie. Dans le modèle SIR, le récupérateur est immunisé et ne sera plus infecté. Il s'exprime par les trois formules suivantes en douceur sans utiliser de petit produit.

\Delta S = - \beta S I
\Delta I = \beta S I - \nu I
\Delta R = \nu I

Si vous connaissez la chimie, considérez-la comme une équation de vitesse de réaction (la loi de l'action de masse). $ \ Delta S $, $ \ Delta I $ et $ \ Delta R $ représentent les changements de $ S $, $ I $ et $ R $, respectivement. Plus précisément, combien $ S $, $ I $ et $ R $ augmenteront ou diminueront demain. Par exemple, le $ S $ de demain sera $ S + \ Delta S $. $ \ Beta $ est le taux d'infection et $ \ nu $ est le taux de guérison, qui est déterminé par le type de maladie que vous avez. $ 1 / \ nu $ est approximativement le nombre de jours qu'il faudra pour récupérer.

Maintenant, ajoutons les deux côtés de ces trois formules.

\Delta S + \Delta I + \Delta R = 0

Vous pouvez voir que c'est le cas. $ \ Delta S + \ Delta I + \ Delta R $ représente la somme de $ S $, $ I $ et $ R $ qui augmentera ou diminuera demain. C'est 0 $, ce qui signifie que ce modèle n'est pas un modèle étrange qui augmentera ou réduira la population totale. Cette fois, disons $ S + I + R = 1 $. Par exemple, lorsque $ I = 0,1 $, cela signifie que 10% des habitants du pays sont $ I $ (personne infectée).

Signification du modèle SIR

Ensuite, considérons la signification de la formule. La première formule était la suivante.

\Delta S = - \beta S I

Cette formule montre que demain, S (non infecté) sera réduit de $ \ beta S I $. Diminuer signifie devenir une personne infectée. La raison pour laquelle le montant de la réduction est déterminé par le produit de $ S $ et $ I $ peut être facilement imaginée en substituant une valeur spécifique.

Dans un pays où tout le monde est infecté et où il n'y a pas de personnes non infectées, $ S = 0 $, donc $ SI = 0 . De même, dans un pays où il n'y a pas de personnes infectées ( I = 0 $), $ SI = 0. C'est $. Dans les pays où les personnes non infectées et à moitié infectées sont moitié-moitié, $ SI = 0,5 \ fois 0,5 = 0,25 $, ce qui est le plus élevé. En d'autres termes, $ SI $ représente quelque chose comme le taux de rencontre entre les personnes infectées et non infectées.

En résumant ce qui précède, nous pouvons voir que cette formule exprime que le produit du taux de rencontre et du taux d'infection $ \ beta $ est nouvellement infecté. Ensuite, regardons la troisième formule.

\Delta R = \nu I

Cette formule signifie qu'autant de personnes que le nombre de personnes infectées multiplié par le taux de guérison se rétablira. Il semble un peu étrange que le nombre de récupération dépende du pourcentage de personnes infectées, mais le modèle SIR le suppose. Enfin, regardons la deuxième formule.

\Delta I = \beta S I - \nu I

Compte tenu de la signification des première et troisième formules, vous pouvez voir que le nombre de personnes infectées augmente du nombre de (personnes nouvellement infectées) - (personnes nouvellement rétablies). Lorsque (personne nouvellement infectée) <(personne nouvellement rétablie), cela devient négatif, nous pouvons donc voir que le nombre de personnes infectées diminue.

Numéro de reproduction de base

Je l'écrirai pendant mon temps libre

Simulation en Python

J'écrirai l'explication pendant mon temps libre

sir.py


import matplotlib.pyplot as plt
import numpy as np

beta = 0.5
nu = 0.3
period = 100

def next_state(s, i, r):
    delta_s = - beta*s*i
    delta_i = beta*s*i - nu*i
    s = s + delta_s
    i = i + delta_i
    if s < 0:
        s = 0
    if i > 1:
        i = 1
    r = 1 - s - i
    return s, i, r

def main():
    results = []
    i = 0.01
    r = 0
    s = 1 - i - r

    l_s = [s]
    l_i = [i]
    l_r = [r]
    results.append([s,i,r])
    r0 = beta*s/nu
    
    print(s, i, r)
    for t in range(period):
        s, i, r = next_state(s, i, r)
        results.append([s,i,r])
        l_s.append(s)
        l_i.append(i)
        l_r.append(r)
    print("R0:{}".format(r0))
    plt.figure()
    plt.title("R0:{}".format(format(r0,".3f")))
    plt.xlabel('Time')
    plt.ylabel('Rate')

    x = np.linspace(0, 100, period+1)
    plt.plot(x, l_s, label="S")
    plt.plot(x, l_i, label="I")
    plt.plot(x, l_r, label="R")
    plt.legend()
    plt.show()
    
main()

Résultat d'exécution sir.png

Recommended Posts

Modèle SIR que même les élèves du premier cycle du secondaire peuvent comprendre
Apprentissage automatique que les élèves du premier cycle du secondaire comprennent parfaitement grâce à cela [mis à jour quotidiennement]
Comité du premier cycle du secondaire
Introduction à Word2Vec que même les chats peuvent comprendre
Introduction à Python que même les singes peuvent comprendre (partie 3)
Introduction à Python que même les singes peuvent comprendre (partie 1)
Introduction à Python que même les singes peuvent comprendre (partie 2)
Filtre de Kalman que vous pouvez comprendre
Comité du premier cycle du secondaire (version Réseau X)
Non local (désolé de ne pas pouvoir expliquer) auquel les débutants en Python (élèves du premier cycle du secondaire) étaient dépendants
Résumé des problèmes d'AtCoder C qui peuvent être résolus en mathématiques au secondaire
[Pour les débutants] Super introduction aux réseaux de neurones que même les chats peuvent comprendre
Script du "Livre de programmation à partir d'élèves du primaire et du premier cycle du secondaire"