散布図
Spiegelhalter(2019)の散布図 Figure 0.1の描画を試みたスクリプトをリスト1に示す。入力データファイル00-1-shipman-confirmed-victims-x.csvは、Spiegelhalter(2019), p. xviに記載されているウェブサイトからダウンロードしたものである。リスト1のスクリプトを実行すると図1のグラフが表示される。
図1 記録時(年)と年齢の散布図
Shipmanの患者の死亡時(年)と死亡年齢の散布図である。Spiegelhalter (2019)は、1992年ごろを境として死亡者数が増加していると説明している。
リスト1 死亡記録時(年)と死亡年齢の散布図描画Pythonスクリプト例
import pandas as pd
import matplotlib.pyplot as plt
# ダウンロードしたファイルの読み込み
d_csv =
pd.read_csv('00-1-shipman-confirmed-victims-x.csv')
age = d_csv['Age']
year_death = d_csv['fractionalDeathYear']
gender = d_csv['gender']
age_woman = age[gender==0]
# 女性の死亡年齢
year_death_woman =
year_death[gender==0] # 女性の死亡記録時(年)
age_man = age[gender==1]
# 男性の死亡年齢
year_death_man = year_death[gender==1]
# 男性の死亡記録時(年)
fig = plt.figure(figsize=(7,7))
# 左下の区画: 散布図用
ax1 = plt.subplot2grid((4,4), (1,0),
rowspan=3,colspan=3)
# 左上の区画: 記録時(Year)のヒストグラム用
ax2 = plt.subplot2grid((4,4), (0,0),
rowspan=1, colspan=3, sharex=ax1)
# 右下の区画: 年齢のヒストグラム用
ax3 = plt.subplot2grid((4,4), (1,3),
rowspan=3, colspan=1, sharey=ax1)
ax1.scatter(year_death_woman,
age_woman, c='orange', alpha=0.5, edgecolors='k',
label = 'Women')
ax1.scatter(year_death_man, age_man, c='b',
alpha=0.5, edgecolor='k',
label = 'Men')
ax1.set_xlabel('Year', fontsize=14)
ax1.set_ylabel('Age of victim',
fontsize=14)
ax1.legend()
ax2.hist([year_death_woman,
year_death_man], color=['orange', 'b'],
label=['Women', 'Men'])
ax2.legend()
ax3.hist([age_woman, age_man],
color=['orange', 'b'], orientation='horizontal',
label=['Women', 'Men'])
ax3.legend()
fig.tight_layout()
fig.show()
岡本安晴(2019) いまさら聞けないPythonでデータ分析.丸善出版
Spiegelhalter, D. (2019). The art of statistics: Learning from data. Pelican