Markets & Python & ...

機関投資家の卵がPythonのコードと共に金融マーケットについて浅くつぶやきます

一気に増加してきた東京の新規感染者数

東京アラート解除宣言2日後の急増

東京都の小池百合子知事が6/12、都独自の行動ガイドラインである「東京アラート」を解除することを明らかにした。

「東京アラート」の実効性や目安となる数値の根拠、方向性が曖昧なことなどから一部で批判の声も上がっていたが、おそらく「COVID-19そのものが我々にもたらす影響」よりも、「COVID-19によって経済活動をストップすることの影響」が、遥かに大きそうだということを一旦結論づけての、経済活動再開への舵きりだったと思う。

ヴァイラスは目に見えないのでどの程度感染が拡大しているのかわからず、状況が刻一刻と変化する中で一律の基準を示すということは大変難しいことを考えると、一概にこの判断を真っ向から否定できる自信はない。
この判断が正しかったのかどうなのか、正解はまだ現時点ではわからないというべきでしょう。

そんな中、6/14の新規感染者数は47名にのぼり、久々に40名を超えてきた。どうも盛んに警戒してきた「夜の街」でクラスターが発生し、そこで18名を計上したようだ。

f:id:hiroshimaeasy:20200614213216p:plain
都内の新規感染者数とトレンドライン

日本の検査体制は相変わらず「クラスター潰し」なのか

なぜ「飲食店」の営業は認められ、「接待を伴う飲食業」が自粛あるいは営業縮小を求められるのか。
そして「接待に利用される料亭」は「接待を伴う飲食業」ではないというガイダンスを後から加えざるを得なくなる、という一連の動きをみていると、一貫性に乏しく合理性に欠けるようにも見える。
そして「3密」の代表格でありライブハウスよりもホストクラブよりも最も多くの人間がそのシチュエーションを経験していると思われる「会社での勤務」がなぜ、経営者への働きかけによって強く自粛の要請(という無言の圧力)がかけられなかったのかを考えると、やはりその方針は合理性に欠けるように見える。

日本の検査数の少なさは感染拡大初期段階から、国内外からも非難轟々だったが、相変わらず現在も感染経路不明者よりもクラスター潰しを重点に検査が行われているように感じる。報道・発表の仕方が「夜の街を控えて」をゴリ押しするのだから、そういうイメージをもたれても仕方があるまい。

今日の47人という発表はブレのようなもの

全国的な緊急事態宣言解除を受けて新規感染者数が再び増加傾向に転じることは、おそらくほぼ全ての国民が予想していたはずである。
しかしグラフのトレンドラインをみてわかるように、急激な上昇傾向に転じたわけでは今のところない。
しかも半数近くが感染経路が判明しているので、いわば「イレギュラーが発生したようなもの」と捉え過度に悲観的にならない方がよいと思われる。少なくとも今の時点では。
だが今後はわからない。引き続きしばらくはしっかり手洗いうがいして、できる範囲で経済を回していく他ない。

コードスニペット

pip install statsmodelsでstatsmodelsをインストールする必要があります。
seasonalをプロットすると季節調整がどのように行われているかグラフで確認できるので、興味がある方はseasonal.plot()で確認してみましょう。

import pandas as pd
import numpy as np
import datetime
import matplotlib.pyplot as plt
import seaborn as sns
import statsmodels.api as sm
plt.style.use('ggplot')


row_data = pd.read_csv('https://stopcovid19.metro.tokyo.lg.jp/data/130001_tokyo_covid19_patients.csv')
by_day = row_data.groupby('公表_年月日')

dates = []
counts = []
for bd in by_day:
    dates.append(bd[0])
    counts.append(len(bd[1]))

daily_cases = pd.DataFrame({'counts':counts} ,index=dates)

# この2行は最新データを追加する為に記述したもの。普段は不要
case6_14 = pd.Series(47, index=daily_cases.columns, name="2020-06-14")
daily_cases = daily_cases.append(case6_14)

datetimes = []
for d in daily_cases.index:
    datetimes.append(datetime.datetime.strptime(d, '%Y-%m-%d'))
daily_cases.index = datetimes
seasonal = sm.tsa.seasonal_decompose(daily_cases.counts, period=7)
daily_cases['trend'] = seasonal.trend

# グラフの描画
fig = plt.figure(figsize=(6,4), dpi=200)
plt.plot(daily_cases, alpha=0.7)
plt.show()