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.
Um kurz aus der Schlussfolgerung zu erklären,
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.
Dieser Code ist auf GitHub verfügbar. Es wird im Jupyter Notebook-Format gespeichert. (Dateiname: 03_R0_estimation-WLD-02b.ipynb)
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.
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.
Hier sind die Ergebnisse für Festlandchina, Italien, die Vereinigten Staaten, Spanien, Iran und Südkorea.
Hier ist das Ergebnis der Sammlung von Ländern mit vielen infizierten Menschen in Europa, einschließlich Italien.
Hier sind die Ergebnisse für Taiwan, Japan, Hongkong und Singapur.
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.
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).
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.
Ich habe auf die folgende Seite verwiesen.
[^ 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