[2021-12-03] 2021年10月までのデータを追加した。
[2021-11-02] 2021年9月までのデータを追加した。
[2021-10-13] 2021年8月までのデータを追加した。
[2021-09-01] 2021年7月までのデータを追加した。
[2021-08-09] 2021年6月までのデータを追加した。
[2020-06-11] 2020年4月分のデータを追加した。
[2020-06-13] 日経新聞6月11日記事を引用した。
[2020-07-03] 2020年5月分のデータを追加した。
[2020-08-17] 2020年6月分のデータを追加した。
Financial Times の COVID-19 グラフでお馴染みの超過死亡(excess mortality)が日本でも見られるかが話題になっている。2020年5月5日の時点ではインフルエンザ関連死亡迅速把握システムの東京のグラフ(下の左側)に超過死亡が見えるという説があった。しかし,この統計はデータが増えるにしたがって変化する(日本の「超過死」についての注意事項参照)。実際,2020年5月24日時点では右側のようになり,山が消えている。
このあたりの事情は5月24日に国立感染症研究所がインフルエンザ関連死亡迅速把握システムについてのQ&Aでも説明している。これと行き違いで日経新聞が5月24日に上の左のグラフだけ見てコロナ感染死、把握漏れも 「超過死亡」200人以上かという記事を書いてしまう。
日経新聞は6月11日にも特定警戒11都府県で「超過死亡」 緊急事態発令の4月という記事で下図のような超過死亡を掲載している:
産経新聞も都内死者が3、4月過去最多 「超過死亡」コロナ公表人数の12倍という記事で同様な超過死亡を指摘している:
しかし,以下で東京について示すように,高齢化とともに死亡数は年々増加する傾向があり,過去の平均と2020年を比べて超過死亡ありとするのは問題がある。
さて,日本全体の人口動態統計速報は集計に2ヶ月近くかかる(2020年2月分は2020年4月24日に出た。3月分は5月26日に出た)。
そこで,ここでは東京都の人口データを調べてみる(大阪の超過死亡?も参照)。すでに何人もの方が同様なグラフを描いておられるので,以下に書いたことは n 番煎じである。
東京都の死者数などの統計は東京都の人口(推計)以下にある。2011年の大震災の年も調べたかったので,2010年以降の毎月の死者数を tokyodeaths.csv というファイルに収めた。
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
df = pd.read_csv('https://okumuralab.org/~okumura/python/data/tokyodeaths.csv')
単純に月ごとにプロットすると,大の月・小の月の影響で凸凹する。しかも,2020年のようなうるう年の2月は平年に比べて 3.6% もの「超過死亡」になってしまう。そこで,1日あたりの死者数に直してからプロットする。
def days(year, month):
m = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
return m[month - 1] + ((month == 2) and
((year % 4 == 0) and (year % 100 != 0) or (year % 400 == 0)))
perday = np.array([r[2] / days(r[0], r[1]) for i, r in df.iterrows()])
for y in range(2010, 2021):
plt.plot(df[df['year'] == y]['month'], perday[df['year'] == y], 'o-k', alpha=0.2)
plt.plot(df[df['year'] == 2011]['month'], perday[df['year'] == 2011], 'o-', label='2011')
plt.plot(df[df['year'] == 2021]['month'], perday[df['year'] == 2021], 'o-', label='2021')
plt.legend()
plt.savefig('tokyodeaths1.svg', bbox_inches="tight")
月による変動はどの年もほぼ同じだが,次第に増える傾向があるのは,東京都の人口増加と高齢化によるものであろう。このため,次のように描くほうがよかろう:
plt.clf()
plt.clf()
for m in range(1, 13):
plt.plot(df[df['month'] == m]['year'], perday[df['month'] == m], marker=f'${m}$')
plt.savefig('tokyodeaths2.svg', bbox_inches="tight")
2月は2020年に顕著な減少が見られる。理由としては,2020年の冬は温暖であり,新型コロナウイルス感染対策のおかげでインフルエンザも少なかったことが考えられる。一方で,4月は平年よりやや寒かった。
なお,死亡数が死亡日ベースではなく届出日(受理日)ベースであれば,休日の影響で月末の死亡が翌月に回る割合が年によって異なるというご指摘もいただいた。
Last modified: