統計的因果探索について #2:擬似相関を見てみる
目次
はじめに
前回の記事の続きです。 mlengineer.hatenablog.com 以下の記事は、自分なりのメモとしてまとめることを第一にしているので、わかりにくい点や間違いがあるかもしれません。 参考文献はMLPシリーズの「統計的因果探索」1で、この中のChapter1の内容を自分なりの解釈でまとめたものです。
擬似相関
前回は、Kaggleでも利用されているtitanicのデータセットを利用して、変数間の相関を見てみました。 本当はその中で擬似相関といわれる現象が見えることを期待していたのですが、無相関に近い結果となってしまったので、今回は異なるデータセットを利用します。 よく利用されているボストン郊外の地域別の住宅価格についてのtoyデータセットがscikit-learnで利用できるので、これにします。 一先ずはこのデータセットをロードします。
from sklearn.datasets import load_boston boston = load_boston() print(boston.__dir__()) # show the keys of boston
ロードしたbostonは5つのkeyがあり、以下のようなデータです。
key | type | description |
---|---|---|
data | numpy.ndarray | 地域ごとの特徴量 |
target | numpy.ndarray | 地域ごとの住宅価格(1,000 ドル単位で所有住宅価格の中央値) |
feature_names | numpy.ndarray | 特徴量の名前 |
DESCR | str | データセットの説明書 |
filename | str | bostonデータセット(csv)の場所 |
filenameはpprintすると、sklearn/datasets/data/boston_house_prices.csvといった保存場所を教えてくれます。 data.shapeは(506, 13)、target.shapeは(506,)です。 DESCRをpprintすると細かい説明が確認できます。 bostonデータセットには、506行のサンプル(地域)、13列の特徴量が含まれています。
pd.DataFrame(boston.data, columns=boston.feature_names).head()
それぞれの特徴量は次の表のとおりです。2
Attribute | description |
---|---|
CRIM | 人口 1 人当たりの犯罪発生数 |
ZN | 25,000平方フィート以上の住居区画の占める割合 |
INDUS | 小売業以外の商業が占める面積の割合 |
CHAS | チャールズ川によるダミー変数 (1: 川の周辺, 0: それ以外) |
NOX | NOx の濃度 |
RM | 住居の平均部屋数 |
AGE | 1940 年より前に建てられた物件の割合 |
DIS | 5 つのボストン市の雇用施設からの距離 (重み付け済) |
RAD | 環状高速道路へのアクセスしやすさ |
TAX | $10,000 ドルあたりの不動産税率の総計 |
PTRATIO | 町毎の児童と教師の比率 |
B | 町毎の黒人 (Bk) の比率を次の式で表したもの。 1000(Bk – 0.63)2 |
LSTAT | 給与の低い職業に従事する人口の割合 (%) |
各特徴量は変数間が絡み合って、最終的には住宅価格に影響を与えていると考えられます。 とにかく、2変数間に相関があるのか確認するためにプロットしてみます。 こちらのソースコードをお借りしています3
この結果からNOXとDIS(雇用施設からの距離)は-0.769なので、距離が離れるほどNOXが低減するようです。
やはり雇用施設が集まっていると交通量の影響などによってNOXの多くなることが考えられます。
加えてNOXとINDUSが0.764と正の相関があり、小売以外の商業施設が多いとNOXが増加するようです。
さらに、INDUSとTAXは0.721と正の相関があり、小売以外の商業施設が多いと不動産税率の総計が高くなります。
これは小売以外の商業施設が多いと、中心街に近く不動産税率の総計が高くなる、と考えることもできます。
でも待ってください。
本当に相関から上記の考えが妥当であると言えるのでしょうか?
AGEとINDUSの間には0.645と正の相関がありますが、古い建物が多いほど小売以外の商業施設が多いというのは意味がわかりません。
さらにAGEとNOX間には0.731と正の相関がありますが、これも古い建物が多いほどNOXが増えるということになります。
そこで、例えばAGEとINDUSとは別に観測できていない変数 Resident Age(居住者の年齢)があったとします。 居住者の年齢が高ければ、長く住んでいるため建物も古い可能性があります。 そして居住者の年齢が高ければ、小売よりもマッサージやさんや娯楽施設といった商業施設が多くなりそうです。 このように、観測できていないが実は各変数に影響を及ぼすことで、観測されているAGEとINDUSに相関が出てしまった状況がありえます。 このような隠れている変数であり観測できている複数の変数に対して影響を及ぼす変数を、未観測共通原因(hidden common cause)と言い、 未観測共通原因を通じて直接は関係がない変数間で相関がでることを擬似相関(spurious correlation)といいます。
つまり、相関を鵜呑みにしてはいけません。
そこで物事の因果関係を深く探っていくことが重要になり、
因果探索というテーマにつながっていきます。
まとめ
今回はようやく擬似相関について触れることができました。 観測変数間に相関がみられても、未観測共通原因の影響を受けている可能性があることがわかりました。 データ分析において、自分がどういったバイアスをもってデータを眺めてしまっているのか常に注意が必要です。 次回は因果とはなんぞや?という話からできればと考えています。
参考文献
-
↩
- 作者: 清水昌平
- 出版社/メーカー: 講談社
- 発売日: 2017/05/25
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る