統計的因果探索: ノート1章、2章、3章

以下の本を読みます。キャラクターは架空のものです。解釈の誤りは筆者に帰属します。お気付きの点がありましたらご指摘いただけますと幸いです。

統計的因果探索 (機械学習プロフェッショナルシリーズ)

統計的因果探索 (機械学習プロフェッショナルシリーズ)

  • 作者:清水 昌平
  • 発売日: 2017/05/25
  • メディア: 単行本(ソフトカバー)
著者のスライド
まとめ

  • 1章: 【悲報】因果効果、相関係数からわからない
  • 2章: 構造的因果モデルの導入、それを用いた平均因果効果の定義、平均因果効果が推定できるランダム化実験
  • 3章: ランダム化実験できないときはどうやって平均因果効果を推定するの? → 因果グラフさえ特定すれば勝てる(そのノードXのノードYに対する平均因果効果はノードXとノードXの親たちでノードYを回帰した偏回帰係数だから)→ じゃあどうやって因果グラフ推定するの? → 構造的因果モデルに線形関数・非ガウスノイズを仮定すれば観測変数の分布から因果グラフを識別できて勝てる(LiNGAM)(非線形関数を許す手法もある;p56)(逆に関数とノイズに何も仮定しなかったり、線形関数・ガウスノイズだと因果グラフを識別できない)

f:id:cookie-box:20200101101614p:plain:w60

Chapter1 の例(13ページの図1.4)は、同じ相関係数なのに色々な因果のパターンがあるという例だけど、 \rho=0.79 でありうるすべてのパターンを図示すると以下のグラフの青線になるかな(もちろん Y → X の向きも同様ね)。

未観測共通原因 Z がないなら素直に X から Y に 0.79 の因果効果があるけど、XY も未観測共通原因 Z から a の因果効果を受けているときは、そのことが相関係数a^2 を上乗せしてしまう。だから、XY に対する因果効果は見かけの相関係数からそれを差し引かないといけない( b = \rho - a^2 )。 だから、b は 0.79 より小さいかもしれないし、0(因果関係なし)かもしれないし、下手したら負かもしれない。

f:id:cookie-box:20200101101603p:plain:w60

見かけ上は正の相関があるが本当の因果効果は負である、なんてことがあるでしょうか。

f:id:cookie-box:20200101101614p:plain:w60

そうだな、現実とは違うかもしれないけど、「ゲームソフトをたくさんもっている児童ほどテストの成績がよい」という正の相関があったとする。でも、実は「ゲームソフトをたくさんもっている」にも「テストの成績がよい」にも「家が裕福である」という交絡因子があまりにも大きく効いていたとする。そしたら、本当は「ゲームソフトをどれだけもっているか」の「テストの成績」に対する効果が負であったとしても正の相関が観測されるかもしれない。あとは、前の記事にもかいたけど、「若手の医師ほど手術の成功率が高い」とか。ベテランの医師ほど難しい手術をまかされるならね。…あ、でも、後者の場合は下図の左ではなくて右なのかな。「X: 経験年数」「Y: 手術の成功率」「Z: まかされる手術の難易度」だとしたら、X → Z だと思うし。

f:id:cookie-box:20200220110030p:plain:w360

f:id:cookie-box:20200101101603p:plain:w60

なるほど…Chapter1 を要約すると「因果効果の大きさ、わからない」といったところでしょうか。


それで Chapter2 に入ると、構造的因果モデルの流儀で「この集団において、xy の原因になる」とは、
p(y|{\rm do}(x=d)) \neq p(y|{\rm do}(x=c)) を満たす cd が存在する。
ということで、平均因果効果は \mathbb{E}(y|{\rm do}(x=d)) - \mathbb{E}(y|{\rm do}(x=c)) ですね。他方、「個体Aにおいて、xy の原因になる」は以下ということです。
y^{\rm (A)}_{x=d} \neq y^{\rm (A)}_{x=c} を満たす cd が存在する。

それで、(2.3) (2.4) 式の構造方程式モデルで x の値を 0 から 1 に変化させたときの平均因果効果は
 \mathbb{E}(y|{\rm do}(x=1)) - \mathbb{E}(y|{\rm do}(x=0)) = \mathbb{E}(f_y(1, e_y)) - \mathbb{E}(f_y(0, e_y))
ですが、 f_y(0, e_y) の分布と  f_y(1, e_y) の分布を同時に観測することはできないのですよね(22ページ)。そこで、x をランダムに 01 に決めることを考えます(ベルヌーイ分布で;テキストでは成功確率 1/2 とされていますが、ここの文脈に限っては 1/2 である必要もないはずです)。このとき、 f_y(0, e_y), \, f_y(1, e_y) のしたがう分布を x で条件付けても分布の形は変わりませんね。そうすると以下のトリックがつかえます。
 \begin{split}\mathbb{E}(y|{\rm do}(x=1)) - \mathbb{E}(y|{\rm do}(x=0)) &= \mathbb{E}(f_y(1, e_y)) - \mathbb{E}(f_y(0, e_y)) \\ &= \mathbb{E}(f_y(1, e_y)|x=1) - \mathbb{E}(f_y(0, e_y)|x=0) \\ &= \mathbb{E}(f_y(x, e_y)|x=1) - \mathbb{E}(f_y(x, e_y)|x=0) \\ &= \mathbb{E}(y|x=1) - \mathbb{E}(y|x=0) \end{split}
この式変形を日本語で説明するなら、さしずめ以下でしょう。
ランダム化実験のストーリー
  • ある薬がある病気の人たちを治す効果を測りたいのですが、「全員に薬を飲ませたときの病気の人の割合」「全員に薬を飲ませなかったときの病気の人の割合」を両方観測することはできません。前者を観測した後時間を巻き戻して後者を観測できればいいのですが、時間は巻き戻せませんので。
  • 全員にあらかじめコインを振ってもらうことにしましょう。まあ、あらかじめコインを振ってもらったところで、「全員に薬を飲ませたときの病気の人の割合」「全員に薬を飲ませなかったときの病気の人の割合」を両方観測することはできません。
  • ところでこのとき「全員に薬を飲ませたときの病気の人の割合」「全員に薬を飲ませたときの、コインが表の人の中での病気の人の割合」は等しくなるはずですね。コインを振った結果が病気が治るかどうかに影響を与えることはありませんから。同様に、「全員に薬を飲ませなかったときの病気の人の割合」「全員に薬を飲ませなかったときの、コインが裏の人の中での病気の人の割合」も等しくなるはずです(上式の2行目)
  • さらに、「全員に薬を飲ませたときの、コインが表の人の中での病気の人の割合」は、コインが表の人に薬を飲ませてコインが裏の人に薬を飲ませなかったときの、コインが表の人の中での病気の人の割合」と言い換えられます。「全員に薬を飲ませなかったときの、コインが裏の人の中での病気の人の割合」コインが表の人に薬を飲ませてコインが裏の人に薬を飲ませなかったときの、コインが裏の人の中での病気の人の割合」と言い換えられます(上式の3行目)
  • ~ときのがそろったのに気付くでしょう。もはや時間を巻き戻す必要がなくなったのです。
ここで仮定として、「病気が治っているかどうか」から「薬を飲むかどうか」の向きに因果があってはならないです。ここでは、後者は前者に時間的に先行しているので原因たりえないとありますが。
ときに副部長、上のランダム化実験の説明をかいていたら因果推論へのオールマイティなアプローチを思い付きました。タイムマシンの開発です!

f:id:cookie-box:20200101101614p:plain:w60

…部長だけがこっそり過去の行動を変えることができるタイムマシンがあるんだったらもう因果推論なんかやらずに20年前に戻ってヤフー株買えばいいじゃないか。

f:id:cookie-box:20200101101603p:plain:w60

それもそうですね。Chapter2 は構造的因果モデルの導入でした。Chapter3 は、この本のタイトルである「統計的因果探索」の基礎ということですが、そもそも統計的因果探索とは因果グラフを未知としてどうすれば因果グラフが推測できるかを取り扱う研究なのですね。確かに、「睡眠障害」と「抑うつ気分」はどちらが原因でどちらが結果なのか、はたまた因果関係はないのかわかりませんね。そして49ページにきて、Chapter1 の例(3つの因果グラフ)に戻ってきました。データが3つの因果グラフのうちどれから生成されたかを推測することを「因果探索の基本問題」とよぶと。そして「因果探索の基本問題」はノンパラメトリックアプローチでは解けない? では、パラメトリックに、かつ関数には線形性を・外生変数の分布にはガウス分布を仮定したら、やっぱり解けないと…。

f:id:cookie-box:20200101101614p:plain:w60

13ページの図1.4の3つの観測変数の分布は全部同じで区別できないってことだね。

f:id:cookie-box:20200101101603p:plain:w60

それで、このテキストで主に取り扱うのはセミパラメトリックに関数形のみを仮定し外生変数の分布には仮定をおかないアプローチで、特に関数に線形性・外生変数の分布に非ガウスを仮定する LiNGAM (Linear Non-Gaussian Acyclic Model) を解説すると。これで「因果探索の基本問題」が解けるということですが。「ガウス分布でさえなければ、どんな連続分布でもかまいません(53ページ)」というのもすごいですね。逆にいうと、それほどまでにガウス分布はデータがどうやって生まれたかを包み隠してしまうのでしょうか…。


それで、58ページからは未観測共通原因 Z が観測済みであると仮定していますね。そうすると X, Y, Z の因果グラフの候補は27通り(双方向の因果関係は考えないので;46ページ)…多いですね…非巡回の仮定を追加しても25通り…全然減ってないじゃないですか…。
しかし、未観測共通原因がなく因果関係が非巡回であれば、 x_i = f_i ({\rm pa}(x_i), e_i) (3.2) と、自分の親と自分の誤差変数から影響を受けるのみですね。さらに線形関数を仮定すれば  x_i = \sum_{x_j \in {\rm pa}(x_i)} b_{ij} x_j + e_i (3.3) です。これをさらに行列で x = Bx + e (3.5) とかけば行列 B \in \mathbb{R}^{p \times p} の1つのゼロ・非ゼロのパターンが1つの有効非巡回グラフに対応すると。それはそうですね。そして、ここでの統計的因果探索の目的が以下のように定式化されます。
データ行列  X \in \mathbb{R}^{p \times n} から構造方程式の係数行列  B \in \mathbb{R}^{p \times p} を推定する。
この B が推定できればどの変数とどの変数が親子関係にあるかわかります。そうなれば、 x_i に介入したときの x_j の期待値が以下で求めることができるとありますね(ただし x_jx_i の祖先ではないとします)。
\mathbb{E}(x_j | {\rm do}(x_i = c)) = \mathbb{E}_{{\rm pa}(x_i)} [ \mathbb{E}(x_j | x_i = c, \, {\rm pa}(x_i)) ]
えっと、右辺、なぜこうなっているのでしょう? 一度 x_i = cx_i の親で条件付けて x_j の期待値をとってから、x_i の親について期待値をとるんですか?

f:id:cookie-box:20200101101614p:plain:w60

単純に  \mathbb{E}(x_j | x_i = c) ではいけないのはわかるよね。これでは「x_i の親たちが  x_i = c にしてくれるようなとき」について期待値をとっていることになる。でもこれだと、 x_i の親の誰かから x_j に対する因果関係はあるが実は x_ix_j の間に因果関係はないというときにも、x_i = cc に応じて x_j の期待値は変わってしまう。でも、こんなのは x_ix_j に対する因果効果じゃない。x_i を変化させたって x_j は変化しないからね。本当に x_i を変化させたときの x_j の変化を知りたいなら、「x_i さんの親たちの実現値にかかわらず x_ic にしたときの」という条件付けが必要だ。まず x_i さんの親たちのある実現値に対して x_j の期待値を計算したのが  \mathbb{E}(x_j | x_i = c, \, {\rm pa}(x_i)) だよね。他方、x_i さんの親は x_i を経由せずに x_j に因果効果をもたらしている可能性はある。そこは期待値計算のときに考慮しなきゃだから、そこは普通に期待値をとって結局 \mathbb{E}_{{\rm pa}(x_i)} [ \mathbb{E}(x_j | x_i = c, \, {\rm pa}(x_i)) ] になる。

f:id:cookie-box:20200101101603p:plain:w60

む、そういわれるとそうですね…そして、x_i から x_j への平均因果効果は \mathbb{E}(x_j | {\rm do}(x_i = d))\mathbb{E}(x_j | {\rm do}(x_i = c)) の差であり、結局  \alpha_{ji}(d - c) になるんですね。この  \alpha_{ji}x_jx_i,\,  {\rm pa}(x_i) で回帰したときの x_i の偏回帰係数です。

f:id:cookie-box:20200101101614p:plain:w60

まとめると、「x_i から x_j への平均因果効果」を求める手順としては以下になるのかな。

  • 構造方程式の係数行列 B を推測し、因果グラフを描く。
  • x_jx_i の祖先ではないことを確認する(祖先であったら因果の向きに反する)。
  • x_i の親たち {\rm pa}(x_i) をリストアップする。
  • x_jx_i,\,  {\rm pa}(x_i) で回帰する。
  • x_i の偏回帰係数  \alpha_{ji}x_i から x_j への平均因果効果である。

f:id:cookie-box:20200101101603p:plain:w60

72ページの図3.11には逆に説明変数に加えてはいけない例というのがありますが、その手順にきちんとしたがうなら誤って含めてしまうことはないですよね…。


74ページからはノンパラメトリックパラメトリックセミパラメトリックアプローチの比較ですね。というかまず、因果グラフが有効非巡回グラフならば因果的マルコフ条件が成り立つと。そして、忠実性? 「変数間の条件付き独立性が因果的マルコフ条件から導かれるものだけである」? それはそうなんじゃないですか? 因果的マルコフ条件から導かれない条件付き独立性って何ですか??

f:id:cookie-box:20200101101614p:plain:w60

77ページの図3.13、因果グラフだけみれば因果的マルコフ条件から導ける条件付き独立性がないのに、実は p(x,y,z)=p(z|y)p(y|x)p(x) になってるね…これは…x から送り出された x-xz で合流して起きた負の奇跡かな? 実質的に x から z への有向辺がないのと同じになってる。

f:id:cookie-box:20200101101603p:plain:w60

なるほど? しかし、それを仮定する必要があるんですか? だって、その77ページの図って、まさに副部長がいった通り「実質的に x から z への有向辺がないのと同じ」なんでしょう? じゃあ x から z への有向辺がない因果グラフを推測したって問題ないじゃないですか。それとも、誤差の議論などで不具合が出てくるんでしょうか。確かにあるはずの枝を見落とすと平均因果効果がくるってきそうですが…まあいいです。それで、各アプローチで因果グラフを特定できるかどうかを概観すると以下のようになるんですね。

  • ノンパラメトリックアプローチ: マルコフ同値類までしか特定できないので因果グラフを一意に推測できないことがある。以下の手順による。
    • 観測の変数の分布から条件付き独立性を見出す。
    • その条件付き独立性を与える因果グラフを探索する。
  • (線形性・ガウス性を仮定する)パラメトリックアプローチ: 同じ観測変数の分布を与える因果グラフを識別できない。
    • (平均因果効果のとりうる範囲を推定しようとする試みなどはある。)
  • セミパラメトリックアプローチ(LiNGAM): 誤差変数が非ガウスなら因果グラフを一意に特定できる。詳細は次章以降。
    • 各因果グラフの場合の観測変数の分布を求める(どうやって誤差分布を特定する??)。
    • 実際の観測変数の分布と比較する。
上でパラメトリックアプローチは線形・ガウシアンという制約を課されていますが、まあガウシアンでない場合はすべてセミパラメトリックアプローチに吸収されるのだとして、関数が非線形、ノイズがガウシアンなどであったらどうなるんでしょうか…まあ面倒そうなのでいいですが…。

4章以降があればつづく