※ブログ記事の商品・サービスリンクにはアフィリエイトリンクが含まれます。

Judea Pearlの入門統計学的因果推論を読んでみよう①

興味があってJudea Pearlの『入門統計学的因果推論』を昨年から読んでいるのですが、読んでいるだけだとイマイチ頭に入らないので、読んだ内容を大まかにまとめてみたいと思います。

どこかで専門的に学んでいるわけではないので誤りがあったら申し訳ありません。備忘録のようなものですが、同じように読み進めたい方の参考になれば幸いです。

第1章「序論:統計モデルと因果モデル」の内容から進めてみたいと思います。

目次:

DAGとは?

統計学的因果推論といえばDAGという用語をよく見かけます。医学界新聞でも『因果推論レクチャー』という連載が昨年から始まっていました。

因果推論で医学研究を身近で素敵なものに! | 2021年 | 記事一覧 | 医学界新聞 | 医学書院

因果推論にDAGを活用する | 2021年 | 記事一覧 | 医学界新聞 | 医学書院

第3回でDAGが紹介されています。で、そもそもDAGってなんでしょうか。

大雑把にいえばDAGは点と点を矢印で繋いで因果関係を表現したもので、たとえば最も単純なもので言えば、こんな感じです。

f:id:medibook:20220104052408j:plain

Xがアスピリンの使用、Yが心血管疾患の発症とすると、YはX(アスピリンの使用の有無)によって影響を受けます。これを点と矢印で端的に表現したものというわけです。

で、それがなんなの?という話になるわけですが、こうして一般化した図にすることでそれぞれの因果関係が整理しやすくなり、研究をする際にどの変数を調整するべきなのか非常に明確になります。詳細な利点は第1章の後半および第2章「グラフィカルモデルの応用」で語られることになります。

ちなみにDAGはDirected Acyclic Graphの略で、グラフ理論と呼ばれる数学の理論の中の一つです。Wikipedia, 下記サイトなどをみると何となく雰囲気がわかります。

グラフ理論 – Wikipedia

グラフ理論の基礎 | 高校数学の美しい物語

この辺は全く知らなかったのですが、本を読み進めるときには用語に慣れておく必要があります。2章以降もグラフ理論の用語として使われるものがあるので、整理しておきます。

グラフ理論の用語

点/辺

グラフは基本的に点(ノード、node)と辺(エッジ、edge)で形成されています。

地下鉄の路線図なんかがイメージとしてわかりやすいのではないでしょうか。それぞれの点(駅)が辺で繋がれています。

有向/無向

各辺に矢印がついており向きが決まっているグラフを有向(directed)、そうでないただの線で繋がれたグラフを無向(undirected)と言います。

道(パス)

たとえばX、Y、Zの3つの要素を考えた時、下図のように繋がっていればXからZへの道(パス、path)があると言えます。

f:id:medibook:20220104055354j:plain

特に矢印がついていて有向である場合は有向道と呼ばれます。

巡回/非巡回

あるノードから道を辿っていって、元のノードに戻るグラフを巡回的(cyclic)グラフと言います。下図のようなイメージです。

f:id:medibook:20220104055409j:plain

そうでなければ非巡回的グラフです。

親/子, 先祖/子孫

有向グラフの場合に、あるノードから矢印を逆方向にたどった先にあるノードをそのノードの親(parent)と言います。逆に矢印の方向にたどった先にあるノードは子(child)です。

Yから見た場合、上の図で言えばXはYの親であり、ZはYの子です。

また、さらに多く矢印をたどった先にあるノードについては先祖(ancestor)あるいは子孫(descendant)と呼ばれます。

この図で言えばWはYの先祖ですし、TはYの子孫ですね。

さて、ここまでの用語を使えばDirected acyclic graphというのは、「有向の」「非巡回的」グラフということになります。

構造的因果モデル(SCM)とは?

因果関係を記述して扱うためのモデルとして本書では構造的因果モデル(SCM: Structual Causal Model)を用いています。

SCMというのは因果関係を外生変数の集合Uと内生変数の集合V、モデル内の変数で他の内生変数を表すための関数の集合fから成ります。

なお、先ほどの用語を交えて説明すると

外生変数=モデルの外部に存在し、モデル内の他の変数の子孫ではない

内生変数=モデルの内部に存在し、モデル内の他の変数の子孫である

というものになります。

こういってもわかりづらいので本書中の例を用いてみます。

たとえばある処置X(たとえば治療薬)と処置後の喘息患者の肺機能Yの関係を考えてみます。

通常XとYは関連があると考えられます。

冒頭の図と同じで

f:id:medibook:20220104052408j:plain

です。

ここで大気汚染の度合いZを考えると、ZもYに影響を与えることが想定されます。

つまり

f:id:medibook:20220108134414j:plain

です。

このとき、Zは外生変数、XとYは内生変数と言えます。

なぜなら大気汚染の度合い(Z)というのはどう考えたって喘息患者の肺機能(Y)や処置(X)に影響を受けるはずがないからです。

つまり、Zはどの他の変数の子孫でもありません。よって、外生変数です。

逆にXやYについてはどうでしょうか。

Yは少なくともXの子孫であるため内生変数と言えます。Xは、たとえばこれが観察研究であればもともとの呼吸機能や発作の回数、あるいはきちんと処置を受けるかどうかに影響する社会的なステータスなどなどによって影響を受けるかもしれません。そうなると他の変数の子孫となるため内生変数と考えられます。

さらに内生変数に関しては上述したように関数の集合fでそれぞれの関係が表されます。

たとえば

f_z:Y=2X-Z

といった具合です。

構造的因果モデルでは“因果“をこの関数に用いられているかどうかで定義します。つまり、今回の例でいけば、Yを表す関数にXとZが使われているため、Yの直接原因はXとZである、と結論します。

SCMとDAGの関連とDAGの利点

先ほどのDAGとの関連性ですが、SCMで表した関係性を視覚的にわかりやすく表現したのがDAGということができます。

DAG以外のグラフ(あるいはグラフィカルモデル)でも表現することはできると思うのですが、本書で扱われているのはDAGになります。

完全な情報をもった式であるSCMをわざわざDAGとして描く利点としては大きく二つ挙げられています。

1つは直観的に関係性がわかりやすいこと。パッとみて何が何の原因なのか、関係性をすぐに読み取ることができます。

もう1つの利点としては、逐次的因数分解(Recursive Factorization)を使って同時分布を計算回数少なく簡単に算出できるということが挙げられています。

XがYの原因となる場合(つまりDAGでいうところのX→Y)、条件付き確率を用いると以下のようにして同時分布の計算ができたのでした。

P(X=x,Y=y)=P(X=x)P(Y=y|X=x)

これがX,Y,Zの3変数となった場合、同時分布をなんの情報も無しに、ただ計算しようとすると、X,Y,Zのそれぞれがとりうる値について全ての組み合わせとその頻度から多量の計算をしないといけません。

ですが、X,Y,Zが例えば以下のようなDAGで表せる場合

f:id:medibook:20220104055354j:plain

逐次的因数分解の法則を用いれば

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

と表すことができます。

考える必要のある確率がP(X=x), P(Y=y|X=x), P(Z=z|Y=y)の3つに制限されるため計算量が少なく済むわけです。

一般化すると

P(子|親)を掛け合わせれば良いということになるので

P(x_1,x_2,...,x_n)=\Pi_iP(x_i|pa_i)

(入門統計学的因果推論p.40より引用)

と言えます。

なお、pa_iは変数X_iの親の変数の値を示しています。

大まかにはここまでが1章の内容(後は確率分布や条件付き分布などの基本的な話)になりまして、続いての2章ではDAGの色々なパターンや応用について述べられていきます。

次の記事はこちら

Judea Pearlの入門統計学的因果推論を読んでみよう②

参考文献:

『構造的因果モデルについて On the Structual Causal Model』黒木学

https://www.jstage.jst.go.jp/article/jjb/32/2/32_119/_pdf/-char/ja

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)