[PYTHON] Lassen Sie uns die Konvergenzzeit anhand des globalen Trends der effektiven Reproduktionszahl des neuen Koronavirus untersuchen

Einführung

In Bezug auf die neue Coronavirus-Infektion (COVID-19) wird die Anzahl der wirksamen Reproduktionen [^ 1] nach Präfektur [https://qiita.com/oki_mebarun/items/e68b34b604235b1f28a1] und [Ranking] analysiert. ](Https://qiita.com/oki_mebarun/items/a21dd3ebf03c64066d29), aber dieses Mal werden wir uns die Weltdaten ansehen und prüfen, ob die Konvergenzzeit aus dem Übergang der effektiven Reproduktionszahl vorhergesagt werden kann. Ich sah es. Insbesondere da die Olympischen Spiele 2020 in Tokio kurz vor der Durchführung im Juli stehen, ist zu hoffen, dass die Konvergenz nicht nur in Japan, sondern auch weltweit so bald wie möglich erfolgt.

Fazit

Um kurz aus der Schlussfolgerung zu erklären,

  1. In Europa erreichte die Infektion ihren Höhepunkt um den 21. März und die effektive Reproduktionszahl hat möglicherweise $ R \ leq 1 $ erreicht, es wird jedoch angenommen, dass sie Anfang April beobachtet wird. ..
  2. In den Vereinigten Staaten, Australien, Südostasien (Malaysia, Indonesien) und im Nahen Osten (Türkei, Israel) ist der Wert von R $ um 10 auf einem hohen Niveau geblieben, und es besteht keine Tendenz zur Konvergenz, sodass die Situation unvorhersehbar ist.
  3. Selbst in Ländern, in denen die Expansion relativ verhalten ist (Taiwan, Hongkong, Singapur, Japan), kann es gelegentlich zu einem Anstieg von R $ kommen. Achten Sie daher auf Zuflüsse aus dem Ausland.

Annahme

Die Grundformel entspricht dem Inhalt von Vorheriger Artikel. Ich habe die Parameter auch nicht geändert. Darüber hinaus verwenden wir den New Corona Virus Dataset. Ich tat. Wir würdigen die Bemühungen, die mit solchen öffentlichen Daten unternommen werden. Aufgrund der zeitlichen Verzögerung bei der Suche nach einem positiven Test nach der Latenzzeit und der Infektionsperiode wurden die Ergebnisse vor den letzten zwei Wochen nicht erhalten.

Versuchen Sie mit Python zu rechnen

Dieser Code ist auf GitHub verfügbar. Es wird im Jupyter Notebook-Format gespeichert. (Dateiname: 03_R0_estimation-WLD-02b.ipynb)

Code

Insbesondere gibt es nicht viele Änderungen, da sie dem [vorherigen Artikel] folgen (https://qiita.com/oki_mebarun/items/e68b34b604235b1f28a1). Um es ganz klar auszudrücken, wir nehmen die Differenz, um die kumulierten Wertdaten in tägliche feste Daten umzuwandeln.

def readCsvOfWorldArea(area : None):
    #Download von der unten stehenden URL
    # https://hackmd.io/@covid19-kenmo/dataset/https%3A%2F%2Fhackmd.io%2F%40covid19-kenmo%2Fdataset
    fcsv = u'World-COVID-19.csv'
    df = pd.read_csv(fcsv, header=0, encoding='sjis', parse_dates=[u'Datum'])
    #Datum,Zielländer extrahieren
    if area is not None:
        df1 = df.loc[:,[u'Datum',area]]
    else:
        df1 = df.loc[:,[u'Datum',u'Infizierte Menschen auf der ganzen Welt']]        
    df1.columns = ['date','Psum']
    ##Kumulativ ⇒ tägliche Umrechnung
    df2 = df1.copy()
    df2.columns = ['date','P']
    df2.iloc[0,1] = 0
    ##Zeichenkette ⇒ Zahlenwert
    getFloat = lambda e: float('{}'.format(e).replace(',',''))
    ##Differenzberechnung
    for i in range(1,len(df1)):
        df2.iloc[i, 1] = getFloat(df1.iloc[i, 1]) - getFloat(df1.iloc[i-1, 1] )
    ##
    return df2

Dem R-Berechnungsprozess wurde ein gleitender Durchschnitt hinzugefügt. Der Durchschnitt wird 3 Tage vorher und nachher genommen.

def calcR0(df, keys):
    lp = keys['lp']
    ip = keys['ip']
    nrow = len(df)
    getP = lambda s: df.loc[s, 'P'] if s < nrow else np.NaN
    getP2 = lambda s: np.average([ getP(s + r) for r in range(-1,2)])
    for t in range(1, nrow):
        df.loc[t, 'Ppre'] = sum([ getP2(s) for s in range(t+1, t + ip + 1)])
        df.loc[t, 'Pat' ] = getP2(t + lp + ip)
        if df.loc[t, 'Ppre'] > 0:
            df.loc[t, 'R0'  ] = ip * df.loc[t, 'Pat'] / df.loc[t, 'Ppre']
        else:
            df.loc[t, 'R0'  ] = np.NaN
    return df

Um die Achsen besser sichtbar zu machen, werden sie auch auf logarithmischen Achsen angezeigt.

def showResult3(dflist, title):
    # R0=1
    dfs = dflist[0][0]
    ptgt = pd.DataFrame([[dfs.iloc[0,0],1],[dfs.iloc[len(dfs)-1,0],1]])
    ptgt.columns = ['date','target']
    ax = ptgt.plot(title='COVID-19 R0', x='date',y='target',style='r--', figsize=(10,8))
    ax.set_yscale("symlog", linthreshy=1)
    #
    for df, label in dflist:
        showResult2(ax, df, label)
    #
    ax.grid(True)
    ax.set_ylim(0,)
    plt.show()
    fig = ax.get_figure()
    fig.savefig("R0_{}.png ".format(title))

Ich konnte damit umgehen, ohne den ursprünglichen Code so stark zu ändern, was hilfreich war.

Berechnungsergebnis

Schauen wir uns nun die Berechnungsergebnisse an. Wenn $ R_0> 1 $ ist, breitet sich die Infektion aus, und wenn $ R_0 <1 $, konvergiert die Infektion.

Bereich, in dem eine explosive Infektion beobachtet wurde

Hier sind die Ergebnisse für Festlandchina, Italien, die Vereinigten Staaten, Spanien, Iran und Südkorea. R0_爆発的感染が観測された地域.png

Europa

Hier ist das Ergebnis der Sammlung von Ländern mit vielen infizierten Menschen in Europa, einschließlich Italien. R0_ヨーロッパ.png

Gebiete, in denen Infektionen in Asien relativ unterdrückt werden

Hier sind die Ergebnisse für Taiwan, Japan, Hongkong und Singapur. R0_アジア周辺で比較的感染が抑制されている地域.png

Bereiche, in denen Bedenken hinsichtlich der künftigen Ausbreitung von Infektionen bestehen

Wenn man sich die Grafik ansieht, wenn nicht alle, dann ist dies das Ergebnis der Erfassung von Ländern, in denen sich $ R $ auf einem hohen Niveau bewegt und keine Tendenz zur Konvergenz besteht. R0_今後感染拡大が懸念される地域.png

Zeichnen wir eine ungefähre Formel für die Anzahl der effektiven Reproduktionen basierend auf den Ergebnissen in Europa.

Wenn wir uns die Veränderungen in der Anzahl der effektiven Reproduktionen ansehen, können wir sehen, dass nach einem starken Anstieg die Tendenz besteht, dass die Anzahl allmählich exponentiell abnimmt. Insbesondere bei Betrachtung der Ergebnisse in Europa können wir unabhängig vom Land die gleiche Konvergenztendenz feststellen. Daher habe ich es mit der folgenden Näherungsformel angewendet.

R(t) = R(t_0) \cdot 2^{-\frac{t-t_0}{T}}

Mit anderen Worten, das Modell ist, dass die Halbwertszeit von $ R (t) $ $ T $ ist. Wenn Sie $ T = 7,5 [Tage] $ setzen und es mit dem Diagramm der europäischen Region abgleichen, sieht es tatsächlich so aus (die gepunktete Linie in der Abbildung ist die Schätzformel). R0_ヨーロッパ+推定.png

Wenn Sie von hier aus speziell $ R (t) $ durch das Datum ersetzen,

Das Ergebnis ist. Natürlich ist es eine Annäherung, daher ist dies möglicherweise nicht der Fall. Wenn jedoch am letzten 21. März $ R <1 $ erreicht wurde, sollte um den 4. April, 13 Tage später, eine Tendenz beobachtet werden, dass der Anstieg der Neuinfektionen konstant bleibt. .. In diesem Fall nimmt die Anzahl der Krankenhauspatienten stetig ab und es wird eine Konvergenz festgestellt.

Darüber hinaus ist hier das Ergebnis der Anwendung der obigen Näherungsformel auf andere Regionen.

Bereich, in dem eine explosive Infektion beobachtet wurde

R0_爆発的感染が観測された地域+推定.png

Bereiche, in denen Bedenken hinsichtlich der künftigen Ausbreitung von Infektionen bestehen

R0_今後感染拡大が懸念される地域+推定.png

Außerdem ...

Referenzlink

Ich habe auf die folgende Seite verwiesen.

  1. Neuer Corona-Virus-Datensatz
  2. "Statusanalyse / Empfehlungen für Gegenmaßnahmen gegen neue Corona-Virus-Infektionskrankheiten" (19. März 2020)
  3. Berechnen Sie den Übergang der Grundreproduktionsnummer des neuen Koronavirus nach Präfektur
  4. Rangfolge der Anzahl wirksamer Reproduktionen des neuen Koronavirus nach Präfektur

[^ 1]: In diesem Artikel wird die Anzahl der Sekundärinfektionen durch eine infizierte Person definiert (zu einem bestimmten Zeitpunkt t unter bestimmten Maßnahmen).

Recommended Posts

Lassen Sie uns die Konvergenzzeit anhand des globalen Trends der effektiven Reproduktionszahl des neuen Koronavirus untersuchen
Berechnen wir den Übergang der Grundreproduktionszahl des neuen Koronavirus nach Präfektur
Lassen Sie uns eine Rangfolge der Anzahl der wirksamen Reproduktionen des neuen Koronavirus nach Präfektur erstellen
Lassen Sie uns die medizinische Kollapshypothese des neuen Koronavirus testen
Untersuchen Sie den Fehlerbereich bei der Anzahl der Todesfälle aufgrund einer Lungenentzündung
Stellen wir uns die Anzahl der mit Matplotlib mit dem Coronavirus infizierten Personen vor
Zeichnen Sie die Ausbreitung des neuen Koronavirus
Hat die Anzahl der Ladenschließungen aufgrund des Einflusses des neuen Koronavirus zugenommen?
Schätzen Sie die maximale Infektiosität des neuen Coronavirus ab
GUI-Simulation des neuen Koronavirus (SEIR-Modell)
Berechnung der minimal erforderlichen Stimmenzahl aus der Stimmenzahl
Visualisieren Sie die Anzahl der Beschwerden von Lebensversicherungsunternehmen
Ich habe versucht, die Anzahl der Todesfälle pro Kopf von COVID-19 (neues Koronavirus) nach Ländern zu tabellieren
[Einführung in das logarithmische Diagramm] Prognostizieren Sie die Endzeit jedes Landes anhand des logarithmischen Diagramms der Infektionszahldaten ♬
Simulieren wir den Effekt der Einführung einer Kontaktverfolgungs-App als Gegenmaßnahme gegen den neuen Koronavirus
Ich habe versucht, den Trend der Anzahl der Schiffe in der Bucht von Tokio anhand von Satellitenbildern zu ermitteln.