LWのサイゼリヤ

ミラノ風ドリア300円

23/6/10 『入門 統計的因果推論(Judea Pearl)』メモ

ちょうど一ヶ月前くらいに,昨年から延期に延期を重ねていたデータサイエンスエキスパート試験が遂に配信開始となった.

www.toukei-kentei.jp

とりあえず受けるのは確定として,いい機会なので今までなあなあに誤魔化してきた因果推論と時系列解析をちゃんとやることにした.まず因果推論の方から本を読むことにして,誰かに解説する体でやるのが一番理解が深まるので読みながら取ったメモを軽く清書して投稿している.

内容の解説ではなく読みながら思ったことのメモなので,ちゃんと因果推論を知りたい人は普通に本を読んでほしい.俺の推測も多いので誤りを含んでいるかもしれない.また門外漢にわかるようには書いていないので,統計に関心がないブログ読者にとっては残念ながらこの記事は読む価値のない外れ回である.

読んだ本

『入門 統計的因果推論』.いくつかある因果推論の流派のうち,家元の一人であるPearl自身の著.入門の名を冠している通り,数学書にしては割とラフに書かれていて読みやすく,厳密な条件や証明が削られている分だけ直観や解釈に紙面が割かれている優しい書.ただ読みやすさと正確さは表裏ではあって,定義が曖昧だったり未定義のタームを使ったりしていて混乱することも多い(特に著しく混乱した点については最後にまた文句を言う).練習問題でも後に説明する概念を先取りしていることがままある.

厳密な定義がわからずに詰まることが多かったので,文京区の図書館まで急遽7kmチャリを漕いで確保したこれを副読本とした.

『統計的因果推論 -モデル・推論・推測-』,同作者の本.『入門』の方より10年くらい前に出ており,値段もページ数も2.5倍くらいある.こちらが当初に書かれた完全版で,『入門』の方が後でさわりだけまとめたダイジェスト版みたいな立ち位置と思われる.こちらは流石に定義や定理もよりきっちり書かれているが,数学書にしてはまだかなりフランクで思いやりのある書き方をしている.面白そうなので通読したい気持ちはあるが,一旦は『入門』の方を読み終えるのに必要な部分にだけ目を通すに留めた.

1. 序論:統計モデルと因果モデル

因果グラフのノードは変数である

統計学の理論書にありがちな,最初の章で使用する表記の確認も兼ねて誰でも知ってる相関係数とか分散について一応バーッと書いておくパートから.

ふだん適当に略記を運用していると忘れがちだが,引数のタイプは変数→事象→確率の順序でラッピングされていくことを改めて再確認する.事象は変数がある値を取ることだし,確率は事象が起きる確からしさである.確率を定める対象はあくまでも事象であり,変数を用いた確率関数は数値的な事象に限った略記であることに注意.

今更こんな基本を気にしたのは,因果グラフのノードが事象ではなく変数であるところで軽く詰まったからだ.日常的な言葉遣いや分析哲学などでは,因果を語るときノードと見做されているのは変数というよりはむしろ事象であることが多い気がする.「雨が降ったから地面が濡れた」と言ったとき,想定されているイメージは「雨が降る」という事象を原因として「地面が濡れる」という事象を結果とする数珠繋ぎである.

しかしこれを因果グラフで表現する場合には,ノードには「天気」と「地表」が入り,件のイメージは「天気=雨」かつ「地表=濡れ」のケースとして理解される.すなわち因果グラフは晴れも雨も濡れも乾きも内包しており,単純な見た目に反して実際に持っている情報はかなり多い(変数の実現値それぞれに対する因果の有様を主張するのだから).個別の因果ではなく動的な様相を表現しているとも言える.

因果グラフが成立している場合の条件付き確率を比較

因果グラフにおいてシンプルな連鎖X→Y→Zが成立している場合,

 \displaystyle
P(X=x,Y=y,Z=z)=P(X=x)P(Y=y|X=x)P(Z=z|Y=y)

が成り立つ.連鎖を下って影響を及ぼしていく見た目はかなり自明っぽいが,一般のベイズルールでは

 \displaystyle
P(X=x,Y=y,Z=z)=P(X=x)P(Y=y,Z=z|X=x) \\\
=P(X=x)P(Y=y|X=x)P(Z=z|X=x,Y=y)

である.これらが等しくなるときは

 \displaystyle
P(Z=z|Y=y)=P(Z=z|X=x,Y=y)

が成り立っていることがわかる.

これはYを固定したときにXとZは条件付き独立,つまり追加でXを固定したところでZには影響を及ぼさないことを示す.仲介業者がきちんと仕事をしていれば上下の流通はお互いにブラックボックス化と化すということだ.あくまでも「Yが固定されているときは」という条件付きになることを見逃してはならない.この条件を外してしまえばZはXから影響を受けないというわけではないし,実際,X→Y→ZでもP(Z=z)=P(Z=z|X=x)は成り立たない.より一般に言えば,上流側の変数が一つ固定されているとき更に上流の変数が固定されても確率は変わらない.

ということを一章を読んだ時点で考えてメモしたのだが,これは二章で全部説明されていた.

モンティホール問題を因果モデルで解釈する

モンティホール問題のストーリーは,

  • X:クイズ参加者が選んだドア
  • Y:正解ドア
  • Z:司会者が開けるドア

を変数としてドアA,B,Cがそれぞれに割り当てられる確率を求めることに帰着される.皆さん御存知の手順を実行して確率の奥深さに驚くためには,P(Y=B|X=A,Z=C)とP(Y=A|X=A,Z=C)を計算して比較すればよい.

 \displaystyle
P(Y=B|X=A,Z=C)=\frac{P(Y=B,X=A,Z=C)}{P(X=A,Z=C)}

ここまでは定義通りの変形.分子と分母の求め方が肝になる.

まず分子について.参加者がAを選ぶ確率と正解ドアがBである確率は何にも依存しないのでそれぞれ独立に1/3だが,問題はZ=Cだ.司会者は参加者が選んだドアAも正解ドアBも開けることが出来ないため,選択の余地がなくドアCを開ける.よってP(Y=B,X=A,Z=C)=1/3×1/3×1=1/9.

次に分母について.XとZが取る値はYに依存するので,Yについて排反性を用いて分解する必要がある.

 \displaystyle
P(X=A,Z=C) \\\
=P(X=A,Z=C,Y=A)+P(X=A,Z=C,Y=B)+P(X=A,Z=C,Y=C)

先ほどと同様,右辺のどの項についてもXとYにかかる確率は何にも依存せずそれぞれ独立に1/3となり,やはり司会者の判断が肝となる.一項目は司会者がBとCのいずれかを選べるので1/3×1/3×1/2=1/18.二項目は司会者に選択の余地がないので1/3×1/3×1=1/9.三項目は起こり得ないので1/3×1/3×0=0.よって分母は1/18+1/9+0=1/6.

以上より,分子が1/9,分母は1/6なので,P(Y=B|X=A,Z=C)=2/3.

同様に以下も計算する(余事象を用いれば一秒だがあえて).

 \displaystyle
P(Y=A|X=A,Z=C)=\frac{P(Y=A,X=A,Z=C)}{P(X=A,Z=C)}

分子が1/18,分母が1/6につきP(Y=A|X=A,Z=C)=1/3.この結果は「ドアを乗り換えた方が2倍当たりやすくなる」という有名な結論と一致する.

ここまでの思考過程を振り返ってみると,XとYは何にも依存せず勝手に定まる一方,司会者の判断だけがそれらに振り回されて右往左往することが最終的な確率の違いをもたらしている.この直観の感触からも,X→Z←Yという因果関係があることが察せる.

2. グラフィカルモデルとその応用

因果グラフ上で従属関係を可視化する

いよいよ因果グラフの真価が発揮されてくるところ.因果グラフを用いることで条件付きを含めた従属関係がわかりやすく可視化される理論は非常に面白い.やはりビジュアルは正義である.数式を書く前にイラストを描け.

具体的な判定手順は極めて簡潔で美しいものだ.二変数間の従属性を知りたい場合,その間にブロックされずに流れ切る道が一つでもあれば従属,道が全てブロックされれば独立だ.ブロックのルールとしては,X→Y→Zのような連鎖経路ないしX→Y→Zのような分岐経路は通過し,X→Y←Zのような合流点はブロックされる.ただし,条件付きになった場合は関所のON/OFFが反転する.これだけ.気の利くエンジニアに小学生向けに因果グラフの挙動を直観的に理解できるデモアプリを作ってほしいところ.

ただしここで注意点を二つ.一つ,ある点が合流点になるかどうかはノードではなく道に依存する.つまりある道からすると合流点であるようなノードが,他の道からすると合流点ではないこともある.このため,合流点のノードに丸を付けてブロックを示すような可視化は混乱を招き望ましくない.やや面倒ではあるが,検証ごとに道を辿り直した方がいいだろう.そしてもう一つ,「ある合流点の子孫を条件付けた場合も合流点のブロックを解除する」というルールはグラフィカルにはあまり直観的ではなく美しくない.

因果グラフを構築する際の恣意性

観測データから従属性の分析によって構築できる因果グラフは一意ではないことには注意が必要だ.もちろんこれはあまり嬉しい事態ではない.そもそも従属性は対称がちな概念である.XがYに従属しているときYがXに従属しているのは当然だし,他の仮定を諸々付け加えても多分そうだ.従属性を裏返すことは因果グラフ上では矢印の反転に対応してしまう,つまり,因果グラフ上では矢印をけっこう自由にひっくり返してもいいことになってしまう.

唯一,観測データからでも確定できるのは合流点が絡むケースだけだ.というのは,「Yを条件付けしたときXとZが従属から独立にスイッチする」というケースではYは連鎖経路か分岐経路であり「X→Y→Z」「X←Y→Z」「X←Y←Z」の三つの可能性が考えられるが,「Yを条件付けしたときXとZが独立から従属にスイッチする」というケースでのみYは合流点であり「X→Y←Z」が確定する.

実際,以下の条件を満たすグラフは同値類として同じd分離性を示すらしい.この条件は,合流点だけが観測データからでも確定できるだろうという考察と整合している.

  • 同じスケルトンを持つ(矢を無視したときのエッジ構造が一致する)
  • 同じV字構造を有している(親が隣接していない合流点が一致する)

言い換えると,データに基づいて因果モデルを構築する場合には少なくともこの同値類の分だけ可能性があることになる.

3. 介入効果

介入とは母集団全体に対して強制的に条件を揃えることを示す.意志決定の際,結局のところ介入の効果を知りたいことが多いというのは想像に難くない.特に肝になるのは以下の二点.

  • 単なる条件付きと異なり交絡を除去できる
  • 実験におけるランダム化と同じ役割を果たす

例えば,実家が太い人間について考えよう.彼は教育資本を投下されやすいために旧帝大に入りやすく,しかも実家のコネがあるために大企業にも入りやすい.つまり,実家が太いことは旧帝大に入りやすいことと大企業の両方に入りやすいこと両方の原因となる.この状況において,実家のコネによる影響力を除去して旧帝大に入った者が学歴の力のみでどのくらい大企業に入りやすいかを測ることは容易ではない.

何故なら,実家の太さがいわばバックドアとして機能してしまうからだ.「旧帝大に入る」→「大企業に入る」というわかりやすい因果関係の他に,「旧帝大に入る時点で実家が太い可能性が高く,故に大企業に入りやすい可能性も高い」というわかりにくい因果関係が密かなバックドアとして存在している.今は実家が太い連中の生きやすさではなく就職活動における大学のネームバリュー効果について知りたいだけなので,何とかして実家の影響を無視したい.

ここで介入という発想が出てくる.理念的には「全人類を強制的に旧帝大に入らせる」という操作である.これを行えば実家の太い者も細い者も勝手に旧帝大に入るので,実家の太さを原因とした影響を全て無視できるようになるのは明らかだ.これは統計学でよく言われる「対象の変数以外をランダム化する」という操作と同じ目的を持つ.実家の太さという因子をランダム化できれば,つまり全世帯からくじ引きでランダムに生徒をピックして旧帝大に入れる施策を行えば,やはり旧帝大の合格可否に実家の太さは関与しなくなる.

とはいえ,現実的にはエリート層が猛反対するのでこのランダム入学法案を成立させることは難しい.幸いなことに,この悪法を国会に持っていくことなく実家の影響をデータ上で除去することは可能である.結局のところ,「実家が太いから旧帝大に合格する」という我々が望んでいない効果を全てブロックすればよいのである.具体的な計算過程は差っ引くが,バックドアとなっている変数を特定してその各条件に対して加重平均を取る調整を行うことでこれを達成できる.また,これは同時確率分布からP(介入する変数|バックドアの変数)という望まない影響の項(傾向スコア)を除算で弾く操作とも等価である.いずれも結局のところバックドアの影響を弾く演算であり,直観的にわかりやすい.

ちなみに,P(大企業に入る|旧帝大に入る,実家が太い)とP(大企業に入る|旧帝大に入らない,実家が太い)を単純比較するだけでもある程度は目的が達せられる.実家が太いという条件が同じならば単純比較が可能ではないかということだ.しかし,この計算で判明するのは特定の実家の太さにおける比較だけで,一般的に言って旧帝大に入ることが大企業に入ることに対してどれほど効果的であるのかまではわからない.

なお,バックドアをブロックする以外にもフロントドアを利用する方法もある.かなりラフに言えば,旧帝大→大企業という因果関係の間に,実家の太さとは無関係だが旧帝大とは強く関係する変数を一つ設ける.例えば「学歴板でのレスバの強さ」を付け加えよう.これは明らかに実家の太さとは無関係だが,明らかに旧帝大の人間が強い.直観的に言えば,関心のある原因とは関連するが,関心のない原因とは関連しない結果を経由することによって,前者の影響のみを抽出できるようになるということだ.

4. 反事実とその応用

反事実的命題は分析哲学で馴染み深いものだ.とりわけ因果モデルにおいて重要な「反事実的命題において,反事実的条件以外の状況は可能な限り保存しなければならない」という原則も,物語論と絡んだりしながらよく目にする.

これは直観的には明らかだ.「もし昨日の気温が25℃ではなく30℃だったらアイスの売上はどうだったか」と言ったとき,想定されているのは他の状況はそっくりそのまま同じで気温だけが30℃に上昇した世界である.気温と全く関与しない他の状況を,例えば戦争状況とか運送トラックの状況を勝手に変更してはいけないのである(それらが気温が25℃から30℃に上がったことに起因して変化するものでない限りは).

これを踏まえると考慮すべき変数(の集合)は「反事実的条件」と「反事実的条件によって生じる事態」だけでは不十分であり,「既に確定した状況」を加えて以下の三点となる.

  • 既に確定した状況を示す変数U
  • 反事実条件を固定する変数X
  • 反事実条件によって変化する変数Y

これらは決定論的な描像だけではなく,確率的に扱うこともできる.いずれにせよ,既に観測して確定した状況は弄らないことが肝になる.

これらを用いて,手順としては反事実の分析は以下のステップを刻むことになる.

  1. 既に観測で得られた証拠E=eから状況U=uの値を決定する(確率的ならばP(u|E=e)を決定する)
  2. 元の因果モデルMからXに向かう矢線を取り除いた上でX=xに固定したモデルM'を作る
  3. モデルM'においてU=uの値を用いてYを計算する(確率的ならばP(U|E=e)を用いる)

このとき,状況Uとは理念的には「Xの反事実的な固定によっては変化しないが,Yの決定には関与するもの」であった.モデルにおいてはこれは「概ねYの親ノード」及び「XとYの間の道にあるノードの親」となる.XとYの間の道にあるノードは含まないことに注意.それはXの反事実的な固定に伴って影響を受けるべき変数であるからだ.具体的に言えば,反事実的な気温を考えるのであれば,明らかにそれに起因して変化する来店客の発汗量などは固定すべきではない.

手順上では状況U=uの確定と反事実条件X=xの固定は似通って見えるが,行為のレイヤーが異なることを理解しよう.状況Uの固定とは,実際に観測した証拠から必要な部分だけを抽出してメモリにセーブするようなものだ.それに対して,Xの変更はモデル自体の改変であり世界の移動である.こうして変更した後の世界に対して保存したメモリから値をロードするのだ.

また,反事実条件Xを任意のxに固定する操作は介入によって介入対象の変数Xを任意のxに強制変更する操作と類似しているが,反事実分析はその前に状況U=uを固定する点が決定的に異なっている.介入は母集団に対する考察を行うのに対して,反事実条件にかかる分析は母集団の中にある特定の状況uに対する考察となる.

これは条件付けによって母集団を絞った場合によりわかりやすい.例えば旧帝大に進学した者だけを対象にして介入操作を行う場合,旧帝大に行ったという部分は絶対に動かない.しかし,旧帝大に進学した者だけを対象にして反事実条件を考察する場合,結果として旧帝大に行かなかった可能性が導かれることは容易に起こり得る.反事実的条件においては,旧帝大に進学した個体を集めた母集団に対して考察を加えているのではなく,とりあえずは旧帝大に進学した母集団に所属している個体に対して考察を加えているからである.視点が母集団ではなく個体ベースであるため,母集団が持つ条件は絶対の縛りではない.

全体の感想

構造方程式と回帰式の違いをもっと早く書け

冒頭に「定義と証明を連ねる厳密な数学書のスタイルではなく,具体例や気持ちに寄り添った解釈が多く,その分だけ説明の正確さが犠牲になっている節は否めない」みたいなことを書いた.これによって有り得ないくらい詰まった点が一つだけあるので恨み節として書いておく.それは構造方程式と回帰式の区別である.

元々よくわからなかったのが,因果グラフの有向辺の定義という割と根本的な部分である.導入部では「Xを得るのに使われる関数f_xがYを変数に持つ場合(XがYに依存する場合),~,YからXへの有向辺がある」と記載されているが,これは一読しただけでは大きな疑問が生じる文章だ.何故なら,(全単射等の適当な条件を満たしているならば)関数は一般に逆関数を持てるからである.つまりXを引数とした関数で定義されるYは,ただちにYを引数とした関数で定義されるXに書き換えられ,XからYへの有向辺を書いてもいいことになる.気分で有向辺の向きを逆転させてもよいというのは奇妙な話だ.

先にも書いた通り,データからの因果モデルは一意に定まらず同値類集合を定めるに留めると記載されている点もそれを裏付ける.じゃあ合流点のような例外を除けば因果モデルの辺は一般に逆転可能なのかと思って読み進めてみると,介入や反事実の議論では矢印の方向が極めて重要な役割を演じている.例えば介入を示す「変数Xに入る矢印のみを全て切断する」というモデル操作は矢印が逆向きではおかしなことになる.となると,関数による決定とはまた別に矢印の向きを決定する原理があると考えざるを得ない.それは恐らく時間的な観測や物質的な知識などを用いることによって可能になるというのは直観的にはわかるが,ケースバイケースすぎて数学的な定義を逸脱するのは納得しがたい……

この謎への答えはページを60%くらい読み進めたところで唐突に与えられる.曰く,「回帰式と~構造方程式の違いを理解することはたいへん重要である」とのことだ.小文字アルファベットを用いる回帰式があくまでもデータの線形近似という表面的な記述であるのに対して,大文字アルファベットを用いる構造方程式とは変数の因果を内包した本質的な記法であるらしい.とりわけ,「逆関数を取ることで関数形で定まる因果が容易に逆転するのではないか」という疑問への明確なアンサーとして,「構造方程式と回帰式の根本的な相違を明確に区別するため,構造方程式では等号ではなく,矢線を代わりに使う本もある」とある.つまり等号記号を流用していただけで,本来であれば等式ですらなかったということなのだ.だから当然逆関数という概念もない.なんだそりゃ.早く言えマジで.

これで誤解を解いて明々白々な結論を得る.因果モデルの有向辺の向きを定める関数とは構造方程式の関数のことであり,最初から左が結果で右が原因であることを含意して逆関数を許さないために向きが一意に定まる.一方で,構造方程式からではなく静的な観測データを用いてモデルを推定する場合は,回帰式は一般に逆関数を許すために(合流点の例外を除いて)向きが一意に定まらない.しかしデータに対して同じd分離性を示す同値類に属するモデルであるからといって,介入や反事実等の高度な操作に対しても同じ反応を示すとは全く限らない.同じd分離性を示すモデルに恣意性があるのは観測データによる推定という手法的な限界に過ぎず,本当のところは因果モデルは一意に定まると考えるのが妥当である.という感じだろう.

まあ良著でした

と不満をぶつけつつも,かなり興味深く読みやすい良著だった.作者がちゃんとした学者である限りは,基本的にはラフに書いてあることのメリットはデメリットを上回るのである.

本格的な因果推論に触れたのは初めてだが,理論的な見通しがビジュアルベースで爽やかなことに加えて,扱っている対象もとても面白い.統計学の実践と不可分な割に,クラシカルな検定では全然補えていない部分が明確にアップデートされた実感がある.別にベイズの定理さえわかればモンティホール問題もSimpsonのパラドックスも扱えると言えば扱えるのだが,実際のところどんな問題やパラドックスが同型であるのかを明晰に図示するのは因果推論の助けを借りなければ難しいだろう.

個人的には,分析哲学で馴染み深い概念が数学的な理論として記述されていたことも面白く感じた.条件付け・介入・反事実といった各操作は直観的には明らかだし,日常的なレベルでは誰もが行いうるが,実際のところ違いや理念がどこにあるのかを言語化するのは簡単ではない.それが数学的構造となるとハードルはさらに上がる.