立森 サポートページ(岩波データサイエンスVol.3 特集 因果推論)

本文の例で使用されているソースコードやデータは以下のURLから取得できます。

https://github.com/iwanami-datascience/vol3

コラム・解説

紙幅の関係で本文に掲載出来なかったコラムに加筆したバージョンや新たに書き起こした解説を順次公開します。

「因果推論ことはじめ」Q & A

Q & A 1「因果の向き」

Q:冒頭の「因果には向きがある」の節では,「因果の向きは散布図だけからはわからない」と書いてあります。そして因果推論はデータサイエンスの守備範囲であることが述べられ,交絡の解説やそれへの基本的な対処法の解説に移ります。しかし,最後まで読んでも「因果の向き」についてはデータから決定できないように思います。

A:因果の向きについては通常はそのドメインの知識が必要です。ただし,ドメインの知識によらず統計モデルを使って因果の方向をさぐるという研究もされています。なお,ドメインの知識とは本文の冒頭の例で言えば身長と体重についての生物学的な知識がそれに当たります。

林・黒木の解説の30から31ページにも書いてありますが,「因果に関する推論を行うためには…対象とする現象についての適切な背景知識を得ることが本質的に重要」になります。そうした背景知識は調査フィールドでの観察や介入によって得ることもできます。結果を変化させても原因は変化しないので,もし介入によってどちらかの要因を変化させることができれば「因果の向き」を知るための重要な情報が得られるでしょう。

本文の導入を読んで,「因果の向き」についてもデータだけから明らかにする方法があると期待させたかもしれません。筆者としては,因果の向きを例に導入し,向きはデータだけからわからないがデータサイエンスが因果推論に無関係ではないことを述べた上で,交絡にはデータサイエンスから対策できることを強調したつもりでした。

交絡因子などに対してはこの特集で紹介しているいろいろな手法を用いることでデータサイエンスの側から対処することができることは再度述べておきます。もちろん適切な交絡因子を見つけるためには対象とする現象についての適切な背景知識がある程度は必要となることには注意してください。

Q & A 2「マッチング」

Q:本文ではマッチングを「ペアを作ってから処置群と対照群に振り分ける」やり方として紹介しています。こうした事前にペアを作る以外のマッチングのやり方はないのでしょうか。

A:あります。それは先に処置群のデータを収集してから,その処置群に含まれるそれぞれの対象者についてペアとなる相手をみつけ対照群とするやり方です。患者のレポジトリのような既存の(大規模な)データベースから対照群となるデータを入手することもあれば,自分たちで対照群となる者を探してきてアウトカムの測定を行う場合もあります。大規模な既存のデータが利用できる場合は,本文で述べた一対一でペアをつくる場合以外にも,一対nマッチングといって,処置された者一人に対して,複数人の処置されていなかったものをペアにすることもあります。

また先に対照群を設定してから,ペアとなる者を見つけて介入してからアウトカムを測定しても構いませんが,通常は介入された人のデータを得ることがその逆よりもずっと難しいので,先に対照群を設定するやり方を行うことはあまりありません。

例えば,ある化学物質に曝されたことによる(疫学の用語では曝露という)その後の発がんリスクを調べる場合を考えましょう。この化学物質は特定の職種の者以外が扱うことはほとんどないとします。

この場合に,その化学物質に曝露した人を見つけることは,曝露してない人をみつけるよりもずっとたいへんです。よって,マッチングを行うときにまず曝露してない人を捕まえて,次にその人と交絡因子が同じで曝露した人を探してペアにする方法ではたいへんに非効率になるのがわかると思います。

またこのような比較的まれな曝露の場合は曝露した人のサンプルサイズは小さいので,曝露した人は全て利用したいのが通常です。この点からも先に曝露してない人を捕まえてからペアを作る方法は,ペアが作れないために貴重な曝露した人のデータを捨てる可能性が高くなるので,好ましくありません。

Q & A 3「文末注11」

Q:文末注11ですが,言いたいことは何となく分かるのですが少し舌足らずで分かりにくいように思います。

A:紙幅の関係などがあり,文末注11は本来書きたかった内容を短縮したものになっています。そこで,本来書きたかった内容をここに示したいと思います。

最初に原因変数のタイプについて説明します。原因変数は連続量であっても離散量であっても構いません。例えば,「飲酒」を原因,「咽頭ガンの発症」を結果とした場合に,「飲酒をしていた」か「飲酒をしていなかった」を原因変数とすることが考えられます。この場合では原因変数は離散量(二値変数)となります。また「飲酒量」を原因変数とすることも考えられます。この場合は,原因変数を連続量(例えば,一日あたり○○ml)としてもよいし,離散量(例えば,「飲まない」,「少し飲む」,「適度に飲む」,「たくさん飲む」)とすることもできます。

原因変数が離散量の場合は,処置の有無を表す二値変数を原因変数とすることが代表例としてあげられます。慣例的に原因変数の値が「1」の場合に「処置あり」,「0」の場合に「処置なし」とすることが多く,星野の解説の「インディケータ変数z」もこれに相当します。

原因変数が連続量であっても離散量であっても因果関係を検討するに際して本質的な違いはあまりありません。しかし,手法によっては離散量の場合により適したものもあります。例えば文末注12でも述べましたが,傾向スコアが主に利用されているのは,「原因変数」が二値の離散量の場合です。二値以外の離散量の場合は一般化傾向スコア(generalized propensity score)を利用できます(Imbens, 2000)。

次に立森の解説と星野の解説の対応を少し説明します。立森の解説(以下,本文)と星野の解説ではともに回帰モデルを使った因果効果の推定を扱っています。両者の述べている内容に本質的な違いはありませんが,次の2つの点が異なっていることを知ることが理解の助けになると思います。

第一に原因変数のタイプが異なっています。本文の例では原因変数が連続量の場合を扱っています。一方,星野の解説では,傾向スコアが主題の一つですので原因変数は離散量,とりわけ二値変数である「インディケータ変数z」の場合を主に扱っています。z=0とz=1がそれぞれ「処置なし」と「処置あり」に対応します。別の言い方ではz=0とz=1がそれぞれ「対照群」と「処置群」を表しているとも言えます。

第二に本文と比べて星野の解説はより一般的な場合を扱っています。具体的には,星野の解説では回帰モデルを表現する関数gは非線形も認め,かつ潜在的な結果変数それぞれに対して異なる関数g0g1を用いています。一方で本文では,回帰モデルは線形かつ星野の解説で言うところのg0g1が等しい場合だけを扱っています。つまり,本文のほうがより強い仮定をおいた例となっています。

また本文と星野の解説とではノーテーションが異なっていることにも注意してください。具体的には,本文ではxが原因変数でzが共変量,星野の解説ではzが原因変数でxが共変量となっています。