「何が原因か」を探すのかと「どれだけ効くか」を測るのか──因果探索と因果推論の違い

目次

イントロダクション

クーポンをもらった顧客は、購入額が多い。ここから、2種類の問いが生まれます。

  • 問い①: クーポンは購入額をどれだけ増やしているのか?
  • 問い②: そもそも、購入額に影響しているのはクーポンなのか、顧客の優良度なのか、それとも別の要因なのか? 何が何の原因なのか?

問い①に答えるのが因果推論、問い②に答えるのが因果探索です。この記事ではこの2つの違いを整理します。

因果推論とは

因果推論とは「原因と結果の関係(因果の構造)についての仮定をおいたうえで、原因が結果に与える効果の大きさを推定する」手法の総称です。RCT(A/Bテスト)、DID、傾向スコア、操作変数法、RDDなどが含まれます。

  • 入力: データと、因果の構造についての仮定(どの変数を調整すべきか、など)
  • 出力: 効果の大きさ(たとえば、クーポンで、購入額が何円増えるか)

因果探索とは

因果探索とは「データから変数のあいだの因果の構造(どの変数がどの変数の原因か)を推定する」手法の総称です。

  • 入力: 複数の変数の観察データ(あれば背景知識)
  • 出力: 因果グラフ(変数をつなぐ矢印)
因果推論因果探索
問い原因は結果にどれだけ効くかどの変数がどの変数の原因か
入力データ + 因果の構造の仮定複数の変数のデータ(+背景知識)
出力効果の大きさ因果グラフ(矢印)
代表的な手法RCT、DID、傾向スコア、操作変数法、RDDPC、GES、LiNGAM
主な前提交絡が調整できていることなどマルコフ条件、忠実性、潜在的な交絡がないことなど

例①:因果推論(因果グラフが分かっているとき)

顧客の「優良度」(低頻度層・高頻度層)が、「クーポンを受け取るか」と「購入額」の両方に影響しているとします。因果グラフは、「優良度 $\to$ クーポン」「優良度 $\to$ 購入額」「クーポン $\to$ 購入額」です。架空のデータ(単位は千円)は次のとおりです。

層人数クーポンありクーポンなし平均購入額(あり)平均購入額(なし)
低頻度層10020803.02.0
高頻度層10080209.08.0
  • ① 単純に比べると: ありの平均 $\frac{20\times3.0 + 80\times9.0}{100}=7.8$、なしの平均 $\frac{80\times2.0 + 20\times8.0}{100}=3.2$ → 差は $+4.6$
  • ② グラフを使うと: 優良度はクーポンと購入額の両方に影響する「交絡」です。優良度の層ごとに比べると、差は低頻度層で $+1.0$、高頻度層で $+1.0$ → 効果は $+1.0$

因果推論は、「優良度を調整すべきだ」という、因果グラフについての仮定を使って、効果の大きさ($+1.0$)を計算します。単純な比較の$+4.6$には、優良度の違いが混ざっています。

注意点:グラフの仮定が間違っていると結果も間違います。たとえば、優良度がクーポンと購入額の「結果」(両方から矢印が入る変数)だった場合は、優良度で層別するとかえって偏りが生じます。

例②:因果探索(因果グラフを探すとき)

今度は、因果グラフが分からないとします。X、Y、Zの3つの変数の観察データだけがあります。因果探索の代表的な手法であるPCアルゴリズムは、「条件付き独立」を手がかりにグラフを組み立てます。ここでは、条件付き独立を偏相関(Zの影響を取り除いた、XとYの相関)で調べます。

$$
r_{XY\cdot Z}=\frac{r_{XY}-r_{XZ}r_{YZ}}{\sqrt{(1-r_{XZ}^{2})(1-r_{YZ}^{2})}}
$$

図1: 3つの構造と、条件付き独立のパターン。連鎖と分岐は同じパターン(Zを与えるとXとYが独立)になるため区別できない。合流だけが別のパターンになる。

  • ケースA: $r_{XY}=0.6$、$r_{XZ}=0.8$、$r_{YZ}=0.75$ のとき、分子は $0.6-0.8\times0.75=0.6-0.6=0$ なので、偏相関は $0$ です。$Z$を与えると$X$と$Y$は独立なので$X$と$Y$を直接つなぐ辺は消えます。残る辺は、$X-Z$と$Z-Y$です。
  • ケースB: $r_{XY}=0$、$r_{XZ}=0.6$、$r_{YZ}=0.6$ のとき、偏相関は $\frac{0-0.36}{1-0.36}=-0.5625$ です。$X$と$Y$はもともと独立なのに$Z$を与えると依存します。これは$Z$が$X$と$Y$の「結果」($X$と$Y$から矢印が入る合流点)のときに現れるパターンです。

ケースAは、$X\to Z\to Y$、$X\leftarrow Z\leftarrow Y$、$X\leftarrow Z\to Y$ のどれでも同じ条件付き独立のパターンになります。そのため、データだけでは矢印の向きを決められません(マルコフ同値類)。ケースBは、「XとYは独立、Zを与えると依存」というパターンが$X\to Z\leftarrow Y$ だけで説明できるため向きが決まります。

注意点:数値例①の優良度・クーポン・購入額の3変数はどの2つも関連があり、3つすべてが辺でつながります。このような場合は、矢印の向きをデータから区別できません。「優良度 → クーポン → 購入額」という時間の順序のような背景知識が必要になります。

2つの関係

因果探索は「因果グラフを見つける」手法、因果推論は「因果グラフを前提に、効果を測る」手法です。つなげて使うこともできます。

図2: 因果探索はデータから因果グラフを推定し、因果推論は因果グラフを前提に効果の大きさを求める。

注意点:因果探索で得たグラフは、「正解」ではなく「仮説」です。探索自体が強い前提を置いているため、その結果をそのまま因果推論の前提にすると、誤りが効果の推定に伝わります。実務では、領域知識(時間の順序など)でグラフを確認し補ってから、因果推論に使います。また因果探索は、因果推論に必ず必要なわけではありません。 因果推論では領域知識から因果グラフ(どの変数を調整するか)を決めることが一般的です。RCTならグラフを知らなくても効果を推定できます。

まとめ

  • 因果推論: 因果グラフの仮定のもとで、「原因が結果にどれだけ効くか」を測る
  • 因果探索: データから「何が何の原因か」(因果グラフ)を推定する
  • 限界: 因果探索の結果は仮説。向きは同値類までしか決まらないことがある。因果推論はグラフが間違えば効果も間違う
  • 使い方: 探索で候補を出し、領域知識で確認し、因果推論で効果を測る
CTA
  • URLをコピーしました!
  • URLをコピーしました!
この記事を書いた人
目次