新型コロナウイルス(COVID-19)陽性患者数のグラフ 2

前回、新型コロナウイルスの患者のグラフをオープンデータから抜き出してグラフにしました。それだけだと、本当に意味がない感じだったので、近似式をだして予測してみました。

累計のグラフの出し方です。3月1日からのグラフにしています。

sr = df.cumsum()
fig = plt.figure(figsize=(12, 6))
ax = fig.add_subplot(111, xlabel="Date", ylabel="累計")
fig.suptitle('東京都 陽性患者数 累計', fontsize=20)
ax.bar(sr['2020-03-01':].index,sr['2020-03-01':].values)
ax.grid(True)
plt.xticks(rotation=30)
fig.savefig('corona2.png',bbox_inches="tight")

累乗近似をしてみました。

#NaNとなっているデータに0を入れる
sr = sr.asfreq('D')
sr = sr.fillna(0)

#curve_fitをつかう
from scipy.optimize import curve_fit
import numpy as np

def nonliner_fit(x, a, b, c):
     return bx*a + c
x = np.array(range(len(sr)))
y = sr.values
p_opt,cov = curve_fit(nonliner_fit,x,y)
p_opt
y_fit = np.vectorize(nonliner_fit)

グラフにしてみます。

fig = plt.figure(figsize=(12,8),dpi=100)
ax = fig.add_subplot(1,1,1)
fig.suptitle('東京都 陽性患者数 累計', fontsize=20)
ax.plot(x,y,lw=0,marker='o',clip_on=False,)
X=np.array(range(len(sr)))
ax.plot(X,y_fit(X,p_opt[0],p_opt[1],p_opt[2]),lw=2,color="red")
peri=-(-(len(sr))//7)
x1 = pd.date_range(sr.index[1],periods=peri, freq='7d')
xyobi = []
for i in range(peri):
a=1+i*7
xyobi.append(a)
plt.xticks(xyobi,x1.strftime("%y-%m-%d"))
plt.xticks(rotation=60)
ax.legend(["Value", "Approximation"])
plt.show()
fig.savefig('corona01.png',bbox_inches="tight")

いい感じじゃないですか。実際、こんなスピードで感染者が増えちゃうと困っちゃうんで、なんとか緩やかになってほしいですね。ちなみに、10日後、30日後、60日後、90日後までこの近似式で予測してみました。

10日後には5000人近くまで感染者が増えますね。

30日後には2万8千人近くまで感染者が増えますね。

60日後の梅雨に入るときには23万人超えですね。現時点では1750人程度なので爆発的に増えている感じになりますね。こんなになってたら梅雨と相まって相当な憂鬱になりそうですね。

7月で120万人を超えちゃいますね。ここまできたら猛暑とコロナで地獄ですね。致死率が3.5%で計算すると4万2千人が死んでしまうことになります。結構な数ですね。そうならないために今、外出は控えたほうが良いですね。

以上

関連する投稿:

新型コロナウイルス(COVID-19)陽性患者数のグラフ 2” への1件のフィードバック

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください