歩行中の交通事故の7歳ピーク

交通事故件数が7歳にピークがあるという話を聞いて,検証しようとした。

e-Statで「人口動態調査」を検索して,「ファイル」をクリックすると,こちらの画面になる。最初の「死因」→「年次」をクリックし,最新の「2018年」をクリックすると,こちらの画面になる。「3」の「死亡数,死因(死因簡単分類)・性・年齢(各歳・小学生-中学生再掲)別」の「CSV」をクリックすると,jch030000.csvというCSVファイルがダウンロードされる。これを読んでグラフにしてみる:

import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv('jch030000.csv', encoding='cp932', skiprows=2, na_values='-')
x = df[df.iloc[:,0].astype(str).str.contains('交通事故')].T
# または x = df.iloc[['交通事故' in str(i) for i in df.iloc[:,0]]].T

plt.plot(range(0,117), x[3:120].astype(float), "o-")
plt.xlabel('年齢')
plt.ylabel('死亡数')
plt.savefig('200206a.svg', bbox_inches="tight")
2018年の交通事故による死亡数

20歳前後と80歳前後に山があるが,7歳のピークは見えない。なお,上のようなデータフレームの文字列の扱いについては Python Data Science HandbookVectorized String Operations が参考になる。

7歳ピークの発端は公益財団法人交通事故総合分析センターイタルダインフォメーション No.116「子供の歩行中の事故」のようだ。ここに載っている歩行中の交通事故死傷者数のグラフは7歳に鋭いピークがある。

さらに教えていただいたことによれば,元の研究は平成28年 第19回 交通事故・調査分析研究発表会の「子供の歩行中の交通事故」で,このデータはこちらからPDF形式でダウンロードできる(無料の会員登録が必要)。ほかにもたくさんのデータが1000円〜2000円の値段でダウンロードできるようである。オープンデータではなく,会員規約によれば「提供されたデータは、会員の作成する報告書、論文、パンフレット等にデータの提供元(分析センター)を明示することを条件として使用できるものとします(掲載された時はコピーを1部FAX又は郵送にて分析センターへ提出願います。)」「他社から委託を受けて行う業務などに使用することを禁止します」などの制約がある。

とりあえず上記PDFをいただいてきてCSVに変換し,グラフを描いてみた。1995年には顕著だった7歳の鋭いピークが,2015年ではかなり緩和されていることがわかる。なお,最左端は1歳以下,最右端は81歳以上である。

df = pd.read_csv('19_02data_1.csv')
plt.plot(df['年齢'], df['1995年'], "o-")
plt.plot(df['年齢'], df['2015年'], "o-")
plt.grid()
plt.legend(['1995年','2015年'])
plt.xlabel('年齢')
plt.ylabel('歩行中の交通事故 死傷者数')
plt.savefig('200207a.svg', bbox_inches="tight")
歩行中の交通事故 死傷者数

警察庁警察白書令和元年版第5章第2節第1項 歩行者の安全確保 の図表5-12にも同様なグラフがあり,データがExcel形式でダウンロードできる。こちらは絶対数ではなく人口10万人あたり,2014〜2018年平均,分母の人口は2016年10月1日のものである。

df = pd.read_excel('v5z05120.xlsx', skiprows=1, skipfooter=1)
df.columns = ['年齢', '歩行中死者数', '歩行中死傷者数']
df['年齢'] = df['年齢'].str.extract('(\d+)').astype(int)

plt.clf()
plt.plot(df['年齢'], df['歩行中死傷者数'], "o-")
plt.grid()
plt.xlabel('年齢')
plt.ylabel('歩行中死傷者数')
plt.savefig('200207b.svg', bbox_inches="tight")
歩行中死傷者数

Last modified: