$shibayu36->blog;

クラスター株式会社のソフトウェアエンジニアです。エンジニアリングや読書などについて書いています。

データ分析の基本の因果推論を学ぶため、「原因と結果の経済学」を読んだ

データ分析をやっていると、ある施策の効果検証をすることが多い。効果検証では、ある施策Aが仮説通りにある指標Bを変化させられたのかを検証したい。これはつまり「ある施策Aの実施」と「ある指標B」が因果関係にあるかを推論したいと言い換えられる。

このことからデータ分析をするには、因果推論の技術の習得が基本であると考え、「原因と結果」の経済学という本を読んだ。

この本は評価が非常に高かったのだけれど、その評価に違わず因果推論の技術の入門に最適だった。明示的にデータ分析担当にならなくてもエンジニアはデータを見る機会が多いので、その解釈を間違えないように読んでおくと良いと感じた。

たとえば印象に残った部分だと以下の話があった。

  • 因果関係の存在を証明するためには、原因が起こったという「事実」における結果と、原因が起こらなかったという「反事実」における結果の二つの結果を比較する必要がある
    • しかし反事実の確認はタイムマシンがなければできないため、もっともらしい値で穴埋めする方法を考えなければならない
    • もっともらしい値を出すためには、因果推論したい「原因」以外の条件が揃ったもう一つの比較可能なグループを作る必要がある
    • すべての因果推論の技術は、この比較可能なグループを作ることを目的としている
  • 因果関係を確認するためには、3つのチェックポイントを確認する必要がある
    • 全くの偶然ではないか、交絡因子が存在しないか、逆の因果関係ではないか
  • ある実験をした前後での比較は因果関係を明らかにすることはできない
    • 時間とともに起こる自然な変化 = トレンドの影響を考慮できない
    • 平均への回帰(= 極端な値をとったあとは徐々にいつもの水準に近づいていく)に対処できない

このあたりの話をベースとして、比較可能なグループを作りだす因果推論の手法について1つずつ解説してくれる構成になっているため理解しやすかった。たとえば手法としてランダム化比較試験、差の差分析、マッチング法などを教えてくれる。

このように非常に短いページ数で、因果推論の基本を教えてくれるのでおすすめだ。データ分析担当になった人はもちろん、エンジニアやPMなどもさっと目を通すと参考になりそうだ。

読書ノート

- 因果関係を確認する3つのチェックポイント 29
    - まったくの偶然ではないか
        - 例: 地球の温暖化が進むと海賊の数が減る
    - 第3の変数(=交絡因子)は存在していないか
    - 逆の因果関係は存在していないか
- 因果関係の存在を証明するためには、以下二つの結果を比較する必要がある 41
    - 原因が起こったという「事実」における結果
    - 原因が起こらなかったという「反事実」における結果
        - 反事実 = 仮に〜しなかったらどうなっていたか
    - 反事実はタイムマシンがないと確認できないため、もっともらしい値で穴埋めする方法を考えなければならない
- 穴埋めをするには、比較可能なグループを見つける必要がある 50
    - 例: 売り上げに影響しそうなすべての特徴が似通っていて、2つのグループの唯一の違いは「広告を出したかどうか」だけなら、比較可能
- 因果関係を明らかにするための方法は、全て「比較可能なグループを作り出し、反事実をもっともらしい値で置き換える」ことをしている 53 ⭐️
- 因果関係を証明する方法: ランダム化比較試験 80
    - 対象となる人々を、乱数表などで介入群(事実)と対照群(反事実)にランダムに割り付ける
- 因果関係を証明する方法: 自然実験 96
    - 対象となる人々が、制度の変更、自然災害などの「外生的なショック」によって、介入群と対照群に自然に分かれてしまったという状況を利用する
    - 観察データから「あたかも人為的な実験が行われたかのような」状況を見出す
- ある実験をした前後での比較は因果関係を明らかにすることはできない 106
    - 時間とともに起こる自然な変化 = トレンドの影響を考慮できない
    - 平均への回帰(= 極端な値をとったあとは徐々にいつもの水準に近づいていく)に対処できない
- 因果関係を証明する方法: 差の差分析 102
    - 介入群と対照群において、介入前後の結果の差の、さらに差を見て因果効果を判定する方法。ただし元々のトレンドが同じ、介入のタイミングで別の変化が起きていないという2つの前提条件あり
    - 使える前提条件
        - イベントの前のトレンドが平行である 114
        - 指標に影響を与える「別の変化」が起きていない 117
            - 例: Aにだけ指標に影響を与えるドラマが放映されていた
- 因果関係を証明する方法: 操作変数法 138
    - 「原因に影響を与えることを通じてしか結果に影響を与えない」という操作変数を用いて、介入群と対照群を比較可能にする。前提条件は2つで、操作変数が原因には影響を与えるが結果には直接影響しない、操作変数と結果の両方に影響する第4の変数が存在しないこと
- 因果関係を証明する方法: 回帰不連続デザイン 155
    - 恣意的に決定されたカットオフ値の両サイドで、介入群と対照群が分かれる状況を利用する。前提条件は、カットオフ値の周辺で結果に影響を与える他のイベントが起きていないこと
    - 例: 従業員が50人を超えた店舗でだけ広告を出せるケース
- 因果関係を証明する方法: マッチング法 175
    - 結果に影響を与えるような共変量を用いて、対照群の中から、介入群によく似たサンプルをマッチさせて比較する。複数の共変量があるなら、それらをまとめたスコア(=プロペンシティ・スコア・マッチング)を使うこともある。マッチングが成り立つ条件は、結果に影響を与えるような共変量が全て観察可能であること
- 因果関係を証明する方法: 回帰分析 182
    - 原因と結果に最適な線を引くことで、因果効果を推定する。ただし交絡因子が存在していないことが条件
    - 交絡因子が似ている人の中で、回帰分析を行うと影響を取り除ける = 重回帰分析
        - 飲酒と肺がんの因果関係を見つけたい -> 喫煙量が同じ人の中で飲酒量が多い人と少ない人を比較し、肺がんのリスクが異なるかどうかを調べる
        - ただし中間変数を取り除くと本来の影響を過小評価してしまうので注意 191
- 因果推論のステップ 196 ⭐️
    - 1. 原因と結果を明確に定義する
        - 原因として広告をとっても、広告料なのか、掲載面積なのか、もしくは単に出したかどうかなのか
        - 結果として売上でも、売上高なのか営業利益なのか
    - 2. 3つのチェックポイントの確認
        - 全くの偶然ではないか、交絡因子が存在しないか、逆の因果関係ではないか
    - 3. もっともらしい値を使い、反事実を作り出す
        - 広告を出した時と比較するため、広告を出さなかった時という反事実を、もっともらしい値を使って作りだす
        - 手法は書籍で紹介されたもの