アルゴリズム忘備録

競技プログラミングとかデータ分析とか

サルでもわかる因果関係推論

データ分析をしていると、分析要件として因果関係の分析をすることになるケースが結構あったりします。そこでやりがちなのが、相関関係を因果関係と誤解してしまうケースです。例えば以下のようなケース。

f:id:phwinx:20170411234506p:plain

例えばデータXが勉強時間、データYが成績のとき、XとYに因果関係があるというのは自然な結論です。ところが、データXが年度、データYがあるグループの年ごとの運動能力テストの成績だとします。この場合、年が進むに連れ運動能力テストの成績が上がっているため、年ごとの体育のカリキュラム改定が功を奏した・・・と言うのは正しくありません。

 

このデータYのグループがもし小学生であった場合、年齢による身体能力の向上という隠れファクターがあるからです。この隠れファクターのことを交絡といったりします。一般に因果関係推論ではこの交絡をいかに見つけるか、というのが一つの鍵になっています。すべてを洗い出すのは困難でも、ここはできるだけ頑張るべきです。

 

逆に元データを生成する段階で、この交絡という要素を極限まで排除したデータを生成するのが実験研究といわれる方法で、代表的な例では新薬の実験です。ところが一般のデータ解析では実験研究というのはコスト的な関係や、顧客要件的に無理な場合がほとんどでしょう。どちらかというと、データは既にある、そこから何らかの因果関係を導け、という課題ばかりです。

 

さて、その方法としては真面目にやるのであれば、バックドア基準や傾向スコアと言った方法があるのですが、単純なデータでもデータ数が十分確保できているのであれば適用機会が多く、私が気に入っているのが「回帰分断デザイン」です。

例えばですが、次のグラフを見てみます。

f:id:phwinx:20170412000900p:plain

横軸はある装置の運用日数で、50日たったら定期メンテナンスををするという運用をしているとき、縦軸は不具合が起きた数を示しています。この時定期メンテナンス(これを介入と言います)が効果があるかどうか(つまり因果関係)を調べたいとします。上の図だけで見ると、効果があるようにも見えますが、そもそも日数がたってくると不具合の数も増えてくるため全体傾向にまぎれてわかりにくくなってしまっています。

そこで、この介入の効果を見る簡単な方法として回帰分断デザインという方法があります。次の図を見てください。

f:id:phwinx:20170412001134p:plain

これは先程の図で、定期メンテナンスが行われたところで「分断」が起きていると仮定し、その前後のみに注目することでほぼ実験研究に近い現象になっている(準実験といったりします)といえるわけです。ここでは青線の範囲で示しています。ここに注目すると介入の前後の分断の大きさが介入の効果というわけです。本来はちゃんと有意差があるかどうかを計算しますが、上の図を見て感覚でもわかるかと思います。

 

この辺結構難しいのですが、岩波データサイエンスシリーズのVol3という名著がありましてとてもわかり易く書いてあるのでおすすめです。

(しかも1500円なんですよ!)

 

 

岩波データサイエンス Vol.3

岩波データサイエンス Vol.3