Heutzutage heißt es im Fernsehen und in anderen Medien, dass "80% der Verhaltensbeschränkungen notwendig sind, um die neue Koronapneumonie zu lösen". Es scheint, dass die Basis dieser 80% -Zahl eine klassische Modellgleichung ist, die als SIR-Modell bezeichnet wird. Ich bin neugierig, habe aber das SIR-Modell implementiert und den Effekt der Selbstbeherrschungsrate überprüft.
** SIR-Modell ** ist ein Klassiker, der den kurzfristigen epidemischen Prozess von [Infektionskrankheiten] definitiv beschreibt (https://ja.wikipedia.org/wiki/infectious krankheiten). [Modellgleichung](https://ja.wikipedia.org/w/index.php?title=model Gleichung & Aktion = Bearbeiten & Redlink = 1). Der Name steht für [Model](https://ja.wikipedia.org/wiki/Mathematical model)
- Empfindlichkeitsinhaber (** S ** usceptible) --Infected (** I ** negativ)
- Immunitätsinhaber (** R ** wiederhergestellt oder Quarantäne [** R ** entfernt](https: //ja.wiktionary). org / wiki / entfernt)))
Benannt nach dem Akronym>. Das Prototypmodell ist [WO Kermac](https://ja.wikipedia.org/w/index.php?title=William Oglevi Carmac & action = edit & redlink = 1) (englische Version //en.wikipedia.org/wiki/William_Ogilvy_Kermack)) und [AG McKendrick](https://ja.wikipedia.org/w/index.php?title=Anderson Gray McKendrick & action = [1 ] vorgeschlagen in einem Artikel von 1927 von edit & redlink = 1) (englische Version) / wiki / SIR-Modell # cite_note-1).
- Β *> 0 steht jedoch für die Infektionsrate, * γ *> 0 für die Wiederfindungsrate (Isolationsrate) (invers 1 / * γ * für die durchschnittliche Infektionsdauer).
Aussteller: [wikipedia]([https://ja.wikipedia.org/wiki/SIR%E3%83%A2%E3%83%87%E3%83%AB](https://ja.wikipedia.org/ Wiki / SIR-Modell)))
Das SIR-Modell ist eine ternäre simultane Differentialgleichung von S, R, I,
Literatur → https://www.biorxiv.org/content/10.1101/2020.01.25.919787v1
Wenn Sie die obige Formel als Vorwärtsdifferenz aufschreiben,
Verwenden Sie matplotlib zur Grafikvisualisierung.
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
Parameter | Erläuterung |
---|---|
R | Grundlegende Anzahl von Reproduktionen (Anzahl neu infizierter Personen pro infizierter Person während normaler Aktivitäten) |
activity | Aktivitätsrate während der Selbstbeherrschungsperiode (1 ist normal) Zum Beispiel 1 für 80% Selbstbeherrschung-0.8=0.Es wird 2 sein. |
x0 | Anzahl der Erstinfektionen |
infection_days | Tage bis zur Quarantäne oder Wiederherstellung |
dt | Rechenzeitschritt |
stop_day | Startdatum für Selbstbeherrschung (Aktivitätsrate ändert sich von 1 zu Aktivität nach diesem Datum) |
start_day | Der Tag, um die Selbstbeherrschung zu beenden und normale Aktivitäten wieder aufzunehmen |
total_day | Gesamte Simulationstage |
x = [x0]
new = [0]
Variablennamen | Erläuterung |
---|---|
x[day] | t=Anzahl der infizierten Personen am Tag |
new[day] | t=Anzahl der Neuinfektionen am Tag |
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 stellt die Aktivitätsrate dar, die 1 ist, bis "Tag" zu "Stopptag" wird, "Aktivität" von "Stopptag" zu "Starttag" und danach 1. Durch Multiplizieren dieses Wertes mit R wird die Grundanzahl der Reproduktionen zum Zeitpunkt der Selbstbeherrschung dargestellt. Wenn zum Beispiel p = 0,5 ist, dann ist 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()
Die Anzahl der infizierten Personen nahm ab dem Startdatum der Selbstbeherrschung (stop_day
) schnell ab, aber das Aktivitätsstartdatum ( start_day
) wurde erreicht, bevor es vollständig ausgerottet wurde, und die Anzahl der infizierten Personen stieg nach diesem Tag allmählich an. Ich bin. Sie können sehen, dass selbst wenn die Anzahl der infizierten Personen abnimmt, dies normalerweise nutzlos ist.
Da der Graph schwer zu sehen ist, setze ich start_day = 180
(keine Reaktivierung). Es ist eine Grafik, die Sie oft im Fernsehen sehen. Wenn "Aktivität = 0,4", dann ist R × p = 1, was bedeutet, dass ** durchschnittlich 1 Person pro infizierter Person infiziert ist **. Unter der Prämisse von R = 2,5 ist es notwendig, den Status quo mit einer Reduzierung um 60% beizubehalten und die Anzahl der Infizierten unter Berücksichtigung der Unsicherheit um 80% zu reduzieren.
Auch hier dient der Quellcode für diesen Artikel nur dem ** intuitiven Verständnis, wie gut die Regulierung Infektionen kontrollieren kann **. Ich denke, das Modell ist zu einfach und zu eng für eine quantitative Bewertung.
from matplotlib import pyplot
#Grundlegende Anzahl von Reproduktionen (Anzahl neu infizierter Personen pro infizierter Person während normaler Aktivitäten)
R = 2.5
#Aktivitätsrate während der Selbstbeherrschungsperiode (1 ist normal)
activity = 0.2
#Anzahl der Erstinfektionen
x0 = 200
#Tage bis zur Quarantäne oder Wiederherstellung
infection_days = 14
#Rechenzeitschritt
dt = 1/infection_days
#Startdatum für Selbstbeherrschung (Aktivitätsrate ändert sich von 1 zu Aktivität nach diesem Datum)
stop_day = 30
#Der Tag, um die Selbstbeherrschung zu beenden und normale Aktivitäten wieder aufzunehmen
start_day = 150
#Gesamte Simulationstage
total_day = 180
#Aktuelle Anzahl infizierter Personen
x = [x0]
#Anzahl der neu infizierten Personen
new = [0]
#Wertaktualisierung (Differenzmethode)
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)
#Grafikanzeige
pyplot.plot(x,label='Infected persons')
pyplot.plot(new,label='New infected persons')
pyplot.xlabel('days')
pyplot.ylabel('Persons')
pyplot.legend()
pyplot.show()