Ich habe versucht zu simulieren, wie sich die Infektion mit Python ausbreitet

Motivation

Dieses Mal habe ich versucht zu simulieren, wie sich die Infektion ausbreitet, damit es einer der Ausgangspunkte ist, die von Herrn Merkel und Herrn Johnson erwähnten Inhalte und die vom Ministerium für Gesundheit, Arbeit und Soziales angekündigten Inhalte richtig zu verstehen.

Warum Qiita?

Zu diesem Zeitpunkt (1. April 2020) möchten einige Leute möglicherweise keine solche Simulation durchführen, aber ich dachte, dass Leute, die Qiita lesen, den Zweck und den Inhalt richtig verstehen würden. Es kann gelöscht werden, wenn die Zeit gekommen ist.

Inhalt?

Die Quelle ist auf Github verfügbar. (https://github.com/ryos36/sim-covid-19). Bitte beachten Sie, dass es keine medizinische oder mathematische Grundlage gibt (insbesondere keine Statistik). Das Ergebnis ist auch nur eine Simulation. Wenn Sie die Parameter ändern, entspricht das Ergebnis Ihren Wünschen.

Inhalt des Programms

Das Programm ist in Python geschrieben. Es wird Fehler geben, da es nicht vollständig getestet und ziemlich schnell gemacht wurde. Ich persönlich bin an diesem Punkt gut, weil ich anständige Ergebnisse bekomme. Die Parameter können geändert werden. Die Erklärung finden Sie vorerst in Param.md (https://github.com/ryos36/sim-covid-19/blob/master/Param.md) auf github. Vielleicht reicht das nicht. Wenn Sie interessiert sind, lesen Sie bitte die Quelle. Ich werde die Quelle derzeit nicht erklären.

Die Quelle ist verschmutzt

Es ist nicht klassifiziert (weil int schneller zu sein schien, ich habe es nicht überprüft), und es gibt eine verschwenderische Schleife. Die erste Halbschleife (Aktualisierungen), die zweite Halbschleife (Sammeln statistischer Informationen), die Zeichenschleife und die Bewegungssimulationsschleife können wahrscheinlich innerhalb einer Schleife erreicht werden (wenn Sie jetzt darüber nachdenken, erhöht sich die Simulationsgeschwindigkeit. Es wird vervierfacht).

Die Simulation ist langsam

Die Simulation braucht Zeit, weil sie nicht auf Beschleunigung abzielt. In Zukunft würde ich gerne eine Intercity-Simulation durchführen, aber wenn Sie dies tun, ist es besser, richtig zu klassifizieren und zu organisieren. Wenn Sie es in CUDA schreiben, wird es schneller sein.

Entspricht keiner Benutzeroberfläche

Es ist nicht grafisch dargestellt und es ist schwierig, Parameter flexibel anzugeben. Machen Sie es zu einer Web-App, indem Sie es mit dem JavaScript einer anderen Person verknüpfen.

Mach eine Simulation.

Vor der Simulation werde ich die Informationen auflisten, die motivierend erscheinen (Quelle, die korrekt zu sein scheint).

Es gibt wahrscheinlich zwei Szenarien für eine COVID-19-Infektion. ――Es wird schließlich wie Influenza konvergieren ――60 bis 70% infiziert (bis) konvergieren Diesmal nahm ich die Position ein, dass sich die Infektion ausbreitet, bis die letztere Massenimmunität erreicht ist.

Einige Leute simulieren mit so etwas wie einem molekularen Modell. (Originalquelle scheint Washington Post zu sein)

Lassen Sie uns einfach simulieren

Zur Zeit ist es flexibel, deshalb habe ich versucht, die "Gerüchte", die auf den Straßen fließen, zu quantifizieren und zu simulieren. Die wichtigen Parameter in dieser Simulation sind wie folgt.

Was bedeutet das?

Was dieses Modell bedeutet, ist einfach, wie viele Menschen letztendlich von den beiden Parametern des R0-Werts und der zu simulierenden Population infiziert werden? Es repräsentiert nur. Sie können es tatsächlich durch Berechnung herausfinden, ohne zu simulieren. Wenn die Bevölkerung 1920 * 1080 = 2073600 ist, die Infektionsrate 80% beträgt, die Schweregradrate 5% beträgt und die Eliminationsrate schwerer Fälle 5% beträgt (= 0,25% Sterblichkeitsrate), werden 4147,2 Menschen getötet. Die Hospitalisierungsrate und Letalitätsrate der Influenza scheint niedriger zu sein. (https://www.hosp.med.osaka-u.ac.jp/home/hp-infect/file/ictmon/ictmon162.pdf) Wenn Sie derselben Population eine Infektionsrate von 16% und eine Letalitätsrate von 0,001% zuweisen 3,46 Personen. Abgesehen von dieser Simulation ist es für alle Infektionskrankheiten gleich, dass das Opfer mit einer bestimmten Wahrscheinlichkeit vorhergesagt wird. Der erste Punkt, den diese Simulation vorschlägt, ist nicht die Anzahl der Opfer, sondern die Dauer. Die Konvergenz dauert mehr als 300 Tage. Ich habe das Wort Vorschlag verwendet, aber es kann richtig sein zu sagen, dass es eher simuliert als vorgeschlagen wurde, weil die Simulation so entworfen wurde.

Wie schätzen Sie die Anzahl der Opfer ein?

Von hier an ist es eine sensible Geschichte. Selbst im selben Fall wird das Opfer, das die Gesellschaft annehmen muss, und das Opfer, das der Einzelne nicht annehmen kann, unterschiedlich sein. Es gibt auch viele emotionale Probleme. Legen Sie es vorerst nur für die Simulation beiseite. Die Anzahl der Betten wurde bei der Simulation ebenfalls berücksichtigt. Wir vergleichen die Anzahl der Menschen, die schwer krank werden, mit der voreingestellten Anzahl der Wetten (unter der Annahme von 1/1000 der Bevölkerung). Wenn die Anzahl der Betten nicht ausreicht, ist die Wahrscheinlichkeit des Verschwindens hoch. Wir simulieren nicht die Symptome jeder Person. Vergleichen und simulieren wir den Fall, in dem genügend Betten vorhanden sind, und den Fall, in dem nicht genügend Betten vorhanden sind. image.png

Wenn die linke nicht ausreicht und die rechte reichlich vorhanden ist. Die orange Farbe der Grafik ist das Opfer. Da die Anzahl der Betten gering ist, nimmt die Anzahl der schwerkranken Menschen ab, wenn sie still nach Hause zurückkehren, anstatt geheilt zu werden. Dies ist ein ziemlich schockierendes Simulationsergebnis. Ich möchte, dass Sie nur über die Simulation sprechen.

Unterdrücken Sie Fernreisen

In dieser Simulation verlangsamt die Unterdrückung von Fernreisen die Ausbreitung der Infektion. Dieser Herr ist ein Songwriter. Da die Simulation ursprünglich mehr als 300 Tage dauert, ist sie schonend. Dies bedeutet jedoch, dass der Simulationszeitraum mehrere Jahre dauern wird.

image.png

Die obige Grafik zeigt die Anzahl der schwerkranken Menschen. Mit 400 Tagen Fernreisekontrolle (rot gefärbter Zeitraum) konnten wir eine Situation schaffen, in der wir immer die Anzahl der Betten sichern konnten. Das Ergebnis ist, dass die vollständige Konvergenz mehr als 700 Tage dauert.

Ist eine intermittierende Unterdrückung von Fernbewegungen (Lockdown) wirksam?

Das Ergebnis (in der Simulation), dass die Unterdrückung von Fernreisen effektiv zu sein scheint, aber ich möchte es in meinem Leben so angenehm wie möglich machen. Simulieren wir mit der Vorhersage, dass "es möglich sein wird, wenn Fernbewegungen zeitweise unterdrückt werden".

image.png

Die obige Abbildung zeigt die Anzahl der infizierten Personen. Eine Unterdrückung für 7,14 Tage hat wenig Wirkung. Es gibt einen deutlichen Unterschied in der Grafik nach 28 Tagen. Wenn wir es 400 Tage hintereinander machen würden, könnte es fast flach sein. Es zeigt sich auch, dass die Unterdrückung nach der Ausbreitung der Infektion weniger wirksam ist. Die Unterdrückung sollte etwas früher beginnen.

Vergleich mit Imperial-College-COVID19-NPI-Modellierung-16-03-2020.pdf

Vergleichen wir es mit Imperial-College-COVID19-NPI-Modellierung-16-03-2020.pdf. Als nächstes werde ich die Figur aus dem PDF ausleihen.

image.png

Dieses PDF schlägt eine ** Unterdrückung ** für 4 Wochen vor, zunächst 6 Wochen im Abstand von 2 Wochen. Machen wir dasselbe mit dieser Simulation.

image.png

Die Auswertung der Ergebnisse ist sehr schwierig geworden. Blau ist die Anzahl der schwerkranken Menschen, Orange ist die Anzahl der Menschen, die gestorben sind, und Grau ist die Unterdrückungsperiode. Oben in den drei Diagrammen war die Unterdrückung zu früh. Der Boden war spät, aber es hat funktioniert. Es scheint, dass die Unterdrückung zu einem angemessenen Zeitpunkt für einen angemessenen Zeitraum durchgeführt werden sollte, und in der Simulationsumgebung sollte die Unterdrückung so durchgeführt werden, dass etwa 0,3% der Bevölkerung mit schwerer Krankheit erfasst werden. Es war wie. In der realen Welt gibt es zu viele Parameter und es kann ziemlich schwierig sein, das richtige Timing zu finden.

Simulationsherausforderungen

Die Simulationsergebnisse hängen von der programmatischen Struktur ab. Berechnen Sie beispielsweise unterschiedliche Ergebnisse, wenn sich der Startpunkt in der Mitte und am linken Ende befindet. Es kann sein, dass geografische Faktoren berücksichtigt werden, aber es ist immer noch ein Programmproblem. Reale Städte sind kontinuierlich und die Bevölkerungsdichte ist nicht einheitlich, daher sollten sie bei der Simulation berücksichtigt werden.

image.png

Wenn der Startpunkt wie in der Abbildung gezeigt in der Mitte liegt, breitet sich die Infektion schnell aus und der Schaden ist groß (bei Simulation).

Es ist nur eine Simulation

Last but not least ist dies nur eine Simulation. Was kann ich sagen? Was kann überprüft werden? Dies ist sehr schwierig, da die tatsächlichen Daten nicht genau gefunden werden können.

Vielleicht fangen einige Leute an zu sagen, dass es ein "langfristiger Kampf" ist, also denke ich, dass sie irgendwo mit genauen Daten und mathematischeren und analytischeren Methoden simulieren. Wenn diese Programme und Formeln von mehreren Forschern und Programmierern veröffentlicht und verifiziert werden, wird dies zumindest im Hinblick auf die Simulation besser verstanden.

Intuitiv bewegen sich Menschen, bewegen sich aber nicht häufig, so dass es schwierig erscheint, ein solches menschliches Verhalten mathematisch vollständig zu integrieren. Sind diese programmatischen Simulationen in diesem Sinne sinnvoll?

Ein Jahr später war die bloße Simulation eine Simulation. Ich hoffe, ich kann mit einem glücklichen Gefühl zurückblicken.

Ergänzung

Unmittelbar nach der Notstandserklärung (10. April 2020)

Die Zahl wird aus den Fragen und Antworten (für die breite Öffentlichkeit) zum neuen Koronavirus zitiert. In der Grundrichtlinie für Maßnahmen gegen neue Coronavirus-Infektionen (25. Februar, 2. Jahr von Reiwa) wurde der Peak wie in der Abbildung gezeigt erläutert.

image.png

Wahrscheinlich sollte es Massenimmunität sein. (Ich mache mir Sorgen, dass das Gebiet des Berges anders ist)

Die Informationen begannen sich ein wenig zu ändern, nachdem der Notfall erklärt worden war. Informationen aus der "Expertenkonferenz zu Gegenmaßnahmen gegen neue Corona-Virus-Infektionskrankheiten" sind aufgeführt.

image.png

"Wir wollen den Kontakt mit Menschen auf mindestens 70% und bis zu 80% reduzieren." Dann wird, wie in der Grafik gezeigt, die Anzahl der Patienten sinken. Dies ist keine Simulation, und es scheint, dass die Anzahl von R0 mit 0,2 (80% Reduktion) multipliziert wird, um die Anzahl anzuzeigen, die nach der Latenzzeit + der Zeit bis zur Heilung der Fall sein wird.

Betrachtet man die Erfolge in Hokkaido (zitiert von der Hokkaido-Regierung), so scheint es, dass es flach sein wird. image.png

Ich möchte zukünftige Trends im Auge behalten.

Recommended Posts

Ich habe versucht zu simulieren, wie sich die Infektion mit Python ausbreitet
Ich habe versucht, eine CSV-Datei mit Python zu berühren
Ich habe versucht, Soma Cube mit Python zu lösen
Ich habe versucht, das Problem mit Python Vol.1 zu lösen
Ich habe untersucht, wie der Arbeitsablauf mit Excel x Python optimiert werden kann
Ich habe untersucht, wie der Arbeitsablauf mit Excel x Python ④ optimiert werden kann
Ich habe versucht herauszufinden, wie der Arbeitsablauf mit Excel x Python optimiert werden kann
Ich habe untersucht, wie der Arbeitsablauf mit Excel x Python optimiert werden kann
Ich habe untersucht, wie der Arbeitsablauf mit Excel x Python optimiert werden kann
Beim 15. Offline-Echtzeitversuch habe ich versucht, das Problem des Schreibens mit Python zu lösen
Ich habe versucht, die Anfängerausgabe des Ameisenbuchs mit Python zu lösen
Ich habe versucht, die Effizienz der täglichen Arbeit mit Python zu verbessern
Ich habe versucht, das Problem von F02 zu lösen, wie man mit Python offline in Echtzeit schreibt
Ich schrieb einen Test in "Ich habe versucht, die Wahrscheinlichkeit eines Bingospiels mit Python zu simulieren".
Ich habe versucht, das Bild mit Python + OpenCV zu "glätten"
Ich habe versucht, das Bild mit Python + OpenCV zu "differenzieren"
Ich habe versucht, die Daten mit Zwietracht zu speichern
Ich habe versucht, CloudWatch-Daten mit Python abzurufen
Ich habe versucht, LLVM IR mit Python auszugeben
Ich habe versucht, das Bild mit Python + OpenCV zu "binarisieren"
Ich habe versucht, die Herstellung von Sushi mit Python zu automatisieren
[Python] Ich habe versucht, die Nacht der Galaxienbahn mit WordCloud zu visualisieren!
Wie man offline in Echtzeit schreibt Ich habe versucht, E11 mit Python zu lösen
Ich habe versucht, den Authentifizierungscode der Qiita-API mit Python abzurufen.
Ich habe es mit den Top 100 PyPI-Paketen versucht.> Ich habe versucht, die auf Python installierten Pakete grafisch darzustellen
Ich habe versucht, die Standardrolle neuer Mitarbeiter mit Python zu optimieren
Ich habe versucht, die Filminformationen der TMDb-API mit Python abzurufen
Wie man offline in Echtzeit schreibt Ich habe versucht, E12 mit Python zu lösen
Ich habe versucht herauszufinden, wie ich den Arbeitsablauf mit Excel × Python, meiner Artikelzusammenfassung ★, optimieren kann
Ich habe fp-Wachstum mit Python versucht
Ich habe versucht, mit Python zu kratzen
Ich habe gRPC mit Python ausprobiert
Ich habe versucht, mit Python zu kratzen
Ich habe versucht, die Sündenfunktion mit Chainer zu trainieren
Ich habe versucht, die in Python installierten Pakete grafisch darzustellen
Ich habe versucht zusammenzufassen, wie man Matplotlib von Python verwendet
[Einführung in Python] Wie iteriere ich mit der Bereichsfunktion?
Ich habe versucht, Mine Sweeper auf dem Terminal mit Python zu implementieren
Ich habe versucht, mit Blenders Python script_Part 01 zu beginnen
[Python] So legen Sie den Download-Speicherort mit youtube-dl fest
Ich habe versucht, mit Blenders Python script_Part 02 zu beginnen
Ich habe versucht, künstliches Perzeptron mit Python zu implementieren
Ich möchte mit Python-Datenklasse nach hinten erben
[Python] Ich habe versucht, die Top 10 der Lidschatten grafisch darzustellen
Ich habe versucht zusammenzufassen, wie man Pandas von Python benutzt
[Python] So schreiben Sie den Tabellenstil mit python-pptx um [python-pptx]
Ich habe versucht, die Methode zur Mittelung der Dollarkosten zu simulieren
Ich habe versucht, die API mit dem Python-Client von echonest zu erreichen
Ich habe versucht, die String-Operationen von Python zusammenzufassen
Ich habe versucht, AOJs Integer-Theorie mit Python zu lösen
Simulieren wir den Übergang der Infektionsrate in Bezug auf die Bevölkerungsdichte mit Python
Ich habe versucht, die Tweets von JAWS DAYS 2017 mit Python + ELK einfach zu visualisieren
Ich habe versucht, die Literatur des neuen Corona-Virus mit Python automatisch an LINE zu senden
Ich habe versucht, das Bild mit Python + OpenCV "gammakorrektur" zu machen
Ich habe versucht, die Emotionen des gesamten Romans "Wetterkind" zu analysieren
Python: So verwenden Sie Async mit