読者です 読者をやめる 読者になる 読者になる

Unboundedly

日々大学院で学んだこと、考えたことを更新

"矢印"をつかって因果関係を視覚的に整理する:因果ダイアグラム(DAG)入門②〜読み方・書き方の基本ルール〜

因果推論 DAG

前回は因果ダイアグラム(DAG)という概念の導入として、そもそもなぜDAGが必要とされるのかについて書いてみました。

今回はDAGシリーズ第二弾として、実際にDAGを”書いて”いくうえでの基本ルールとDAGの”読み方”について整理してみようと思います。DAGの読み書きができるようになれば、様々な要因が複雑に絡み合っているような場合でもAssociationと因果関係を切り分け、どのようなバイアスがなぜ起きているのかを特定できるようになります。

DAGを書くときの大前提

基本ルールの説明に入る前にまず、大前提の確認です。DAGとは因果関係を考えたい二つの要因やその他の要因を矢印で結ぶことで、それぞれの間の因果関係を視覚的に整理するためのツールでした。ここで重要なのは、DAGを書くときには手持ちのデータのことを一回忘れてしまうということです。実際にデータとして測定できている要因も未測定のものも含めて、ゼロベースで注目している二つの要因に関わるすべての要因を列挙します。(まるで自分が考えたい二つの要因に何がかかわってくるかをすべて知っている神様であるかのように)あらゆる要因を書きだしてみてください。

これは簡単なようで実は難しいことです。どのような分野であれ、注目する二つの要因に関わるあらゆる変数とその関係性を考えるためには、その分野(あるいは注目している因果関係)に関するExpert knowledge(専門知識)が必要となります。

例えばいま、飲酒と肺がんの間の因果関係に関心があるとしましょう。この因果関係を考えるうえでDAGを書くためにはまず飲酒、肺がんに関わる要因を考えます。肺がんの専門家でしたら当然、喫煙が肺がんの重要なリスク因子であることを専門知識として知っていますので、DAGの中に喫煙を当然含めます。しかし、喫煙が肺がんのリスクであることを知らない人(今回は簡単すぎる例なのであまりないかもしれませんが)は喫煙をDAGに含めることができません。つまり完全なDAGを書くことができないのです。

要するに、より正確なDAGを書くためにはその分野の専門性が前提条件となるということです。

このようなこともあり、私見ですが、(少なくとも因果推論を目的とした統計モデルでは)使用する変数の選択を機械的(ステップワイズ法などいろいろあります)に行うべきでないと私は考えています。結局は各分野の専門家の判断にゆだねるべきでしょう。

DAGの"書き方"の基本ルール 

DAGを書く上でのお作法をまとめます。うち二つはDAGの名前(Directed Acyclic Graph)の由来にもなっています。"D”で"A"なGraphなのです。いずれも非常にシンプルなルールなので難しくないと思います。

ルール1: "Directed"(有向性)

DAGの"D"の部分になります。「有向性」とは文字通り、「方向が有る」という意味です。つまり要因同士を結ぶときに”矢印”を使うというだけのことです。DAGにおける矢印を理解するうえでおさえるべきポイントは二つ

1. 矢印は因果関係を表す:

DAGで描かれる矢印はすべて”因果関係”を意味します。”関連(Association)"ではありません。各分野の専門知識に基づいて、因果的に関連している要因同士を矢印で結びます。

2. 矢印の根本が原因、先が結果

これは極めて直感的でしょう。例えば以下のようなDAGは、「ZはXを引き起こす原因でもあり、Yを引き起こす原因でもある」ことを意味します。逆ではありません。

 f:id:KRSK_phs:20170123134021p:plain

ちなみにXとYの間には矢印が存在しないので、因果関係が存在しない(と、少なくともこのDAGを書いた人は考えている)ということになります。しかし、後述する方法でこのDAGを”読む”とXとYの間にAssociationが存在することがわかります。くり返しになりますが、ZがX,Yそれぞれの原因であることは、その分野の専門知識に基づいて判断し、DAGに書き加えます。

ルール2:時間軸は左から右

 DAG上では時間の流れが左から右に流れています。つまり時間的に前に発生した要因は、後に発生した要因よりもDAG上では左側に書かれることになります。上記のDAGではZがX, Yよりも時間的に先に発生する要因である、ということです。

ルール1とルール2を組み合わせると、当然のことですがDAG上の矢印は常に左向きであることがわかります。なぜなら因果関係(矢印)では、原因は必ず結果よりも時間的に先に起こるからです。

ルール3: ”Acyclic”(非巡回)

DAGの"A"の部分です。「非巡回」とは「(矢印が)巡回しない」ことを意味します。つまり、ある要因から出発した矢印がめぐりめぐって自分自身に戻ってくる(巡回する)ことはNGということです。これは言い換えると、ある要因が自分自身の原因となってはいけない。例えば、次のようなDAGは”Acyclic”の条件を満たしていません。

f:id:KRSK_phs:20170123135812p:plain

Xから出発した矢印はYを経由して自分自身Xに戻ってきてしまっています。矢印は因果関係を示しますから、これでは「Xを変えるとYが変わってYが変わるとXが変わる(??)」というヘンテコな解釈ができてしまいます。Xが自分自身の原因になっています。上記のDAG、なにがおかしいかというと当然YからXに伸びる矢印です。ルール2よりXはYよりも時間的に先に発生した要因です。未来(Y)が過去(X)に影響することは(タイムマシーンでもない限り)不可能ということです。

ルール4:四角で囲うと”条件付け”を意味する

DAG上で矢印によって結ばれている各要因(上記の例ではX,Yなど)の周りが四角で囲われている場合、囲われた変数が”条件付けされている”(being conditioned on)ことを意味します。ここでいう”条件付け”とは、囲まれている変数の値(level)ごとに分析がおこなれているということだと思ってください。例えば、以下のようなDAGを考えてみましょう。

f:id:KRSK_phs:20170123141447p:plain

要因Zが四角で囲われているので、これは「Zのlevelごとにデータを分析している」と解釈できます。例えばもし、Zが「大学を卒業しているか、していないか」という二択の場合は、「大卒の人」「高卒以下の人」それぞれに対して別々に分析を行うという意味です。Zが三つ以上の値をとる場合は、Zがそれぞれの値の人々の集団を別々に分析しています。

統計やデータ分析にある程度慣れている方だと直感的にわかると思うのですが、DAGでいう”条件付け(conditioning)"とは層別分析のことです。回帰モデルを使った特定の要因の調整とも似たようなイメージだといえます。

DAGの”読み方”:どうやってDAGからAssociationを読み取るか

上記のルールと自らの専門知識に従ってDAGを書いたあとは、いよいよDAGを”読む”フェーズに入ります。再度確認ですが、DAGを”読む”目的は「因果関係を考えたい二つの要因(XとY)の間に偽(Spurious)のAssociationを引き起こすバイアスとその原因を特定すること」です。偽のAssociationは因果関係ではありませんので、その原因を特定し、対処してあげることで、真の因果関係に近づくことができるわけです。

XとYの間のAssociationは、両者の間を結ぶ矢印を(その他の要因を経由するものも含めて)たどっていくことで見えていきます。Associationは大きく①因果関係があるためにAssociationもあるパターンと②因果関係がないのにAssociationがあるパターンの二つに分かれます。

読み方1:矢印でつながっているものは関連(Association)がある

これは当たり前なのでさほど重要なポイントではありません。要するに因果関係がある場合は当然Associationもありますということです。例を見る方が早いでしょう。

f:id:KRSK_phs:20170123153256p:plain

このDAGではXとYが矢印で結ばれているので、XとYには因果関係があります(XはYの原因)。つまり、XとYの間にはAssociationもあります。同様にYはZの原因です(そして、YとZにはAssociationがある)。つまり、Xの値が変わるとYの値が変わり、Yの値が変わるとZの値が変わるので、Xの値が変わるとZの値が変わる(XとZの間に因果関係がある)ことがわかります。因果関係がある場合はAssociationもあるので、XとZの間]にAssociationがあるといえます。これは上記のパターン①のAssociationですね。

このように、矢印に方向に沿って、結ばれた二要因(今回の例だとXとZ)の間にはAssociationがあると読むことができます。

読み方2:共通原因によってbackdoor pathが開く

共通原因(Common cause)という構造がDAGにはしばしば現れます。前回のブログで登場した以下のDAGだとZ(年齢)という要因はX(毛髪量)とY(年収)それぞれの”共通の原因”となっています(矢印の根本にZがいますね)。Zのような要因は文字通り、共通原因と呼ばれます。

f:id:KRSK_phs:20170121144809p:plain

ここで新たにBackdoor path(裏口経路(?))という概念がでてきます。読み方1と同じで、ここでもAssociationを見つけるために矢印をたどっていきます。Associationが続いている経路(path)を見つけることが目的です。

まず、(矢印でつながっているので)XからZにpathがのびていて、ZからYにもpathがのびています。間にあるZは共通原因です。ここでDAGの読み方のポイントですが、共通原因は関連のpathをつなげる(止めない)というルールがあります。

つまり関連のpathはXからZにのび、Zで止まることなく、ZからYにのびています。言い換えると、関連のpathによってXとYがZ経由でつながっているということです。XとYの間にAssociationが存在する(XとYは直接矢印でつながっていないので因果関係はない)ことがわかります。年齢が高い人の方が平均的に髪の毛が少なく、年収が高いということは言い換えると、「髪の毛が少ない人の方が平均年収が高い」というAssociationになるのです。(もちろん因果関係ではありませんので、はげても年収は上がりません)

このような一連のpathはBackdoor pathと呼ばれ、因果関係がないのにも関わらずAssociationが発生する理由の一つです。交絡と呼ばれるバイアスはこのbackdoor pathによるものです。この点は次回詳しくまとめます。

読み方3:共通効果はストッパー

 以下のDAGでは共通効果(common effect)と呼ばれる構造が描かれています。ZはX, Yそれぞれによって引き起こされる結果であるため、共通効果と呼ばれます。

f:id:KRSK_phs:20170125015223p:plain

このような共通効果ZはColliderともよばれます。Collideとは「衝突する」という意味で、X, Yそれぞれが伸びている矢印が”衝突(合流)”する場所であることがからColliderという名前がつきました。

読み方2で登場した共通原因がAssociationのpathをつなげるのに対して、共通効果(collider)はpath止める働きがあります。

XとZ、YとZそれぞれの間にはAssociationがありpathでつながっているのですが、それら二つのpathはZにおいて”ブロック”されています(つながっていない)。したがって、上記のような構造では、XからYに伸びるpathが存在しないことになり、データ上も(DAGが正しいと仮定すれば)XとYの間にAssociationはないと考えることができます。

読み方4:共通原因を”囲う"とpathは閉じ、共通効果を"囲う”とpathは開く

ここから少し複雑なDAGになってきます。DAGの書き方ルール4で、要因を四角で囲うとは”条件付け”を意味すると書きました。共通原因、共通効果それぞれを条件付けすると何がおきるでしょうか?

共通原因のconditioning

先ほど書いた通り、共通原因はAssociationのpathをつなげる働きをします。このように共通原因Zを四角で囲うことで、Zの条件付け(conditioning on Z)をしていることになります。

f:id:KRSK_phs:20170123141447p:plain

 

実はZを条件づけると、共通原因のpathをつなげる働きがなくなります。XからZに伸びたpathはそこでブロックされ(流れが止まってしまう)、Yまで伸びることができません。つまりこのDAG上では、XとYをつなぐpathがなくなり、両者の間のAssociationもなくなっているということです

つまりXとYの因果関係を考えるために共通原因Zによるバイアスをなくすことに関心がある場合は、Zがある特定の値の人だけを対象に分析をしたり(限定)、Zの値ごとにいくつも分析を行ったり(層別分析)、多変量回帰分析にZを投入することで、ZがXとYのAssociationに与える影響を”補正”することができるのです。

共通効果のconditioning

共通原因を条件づけると開いていたpathが閉じる一方、共通効果(collider)を条件付けすると、もともとColliderでブロックされていたpathが”開きます”。

f:id:KRSK_phs:20170125023033p:plain

上記のようなDAGではXからZに伸びたpathがそのまま共通効果ZでブロックされずにYに伸びていきます。結果、XとYが一つのpathでつながり、両者の間にAssociationが発生します

XとYの因果関係を考えたいのに、不必要に共通効果を条件付けてしまうことで偽のAssociationが発生することを広く選択バイアス(selection bias)といいます。これも次回詳しくまとめます。

読み方5:中間にある要因の条件付け⇒因果効果のブロック

これは直感的にわかりやすいです。矢印でつながったpathの途中にある中間の要因を四角で囲う(”条件づける”)と、そのpathはブロックされます。

例えば以下の図では、要因X(親の学歴)が要因M(子供の学歴)を経由してY(子供の将来の年収)に因果的に影響しているという状況です。

f:id:KRSK_phs:20170319120003p:plain

要因XとYは矢印でつながっておりAssociationも存在するのですが、仮に要因M(子供の学歴)を条件づける(子供の学歴が同じ集団で、親の学歴と子供の将来の年収の関連を見る)と開いていたpathが閉じ、Associationもなくなります。

子供の学歴が、親の学歴が子供の将来の年収に影響する唯一のメカニズムであるならば、子供の学歴を調整してしまえば両者の間に関連は見られなくなります。

以下の場合はどうでしょう。先ほどと同様に要因MがXがYに与える影響の中間因子になっています。しかし今回はXからYに直接伸びる矢印があります。XがMを経由せずにYに影響を与えるメカニズムが考えられる場合(例えば、学歴が高い親は自身のネットワークを使って子どもの就活が有利になるように動くなど)はこのようなDAGになります。

f:id:KRSK_phs:20170319120151p:plain

このような状況でMを条件づけると、XとYの関連はなくなりはしませんが、弱くなります。Mを条件づける前と後では、XからYへ延びるpath(①+②)のうちMを経由するもの(①)が消滅するからです。

さて問題はこのような要因Mを条件づけるべきかどうか、です。答えは分析の目的による、としか言えません。分析の目的が「とにかくXの値を変化させた(介入した)場合のYへの影響」を推定することならばMは調整しないほうがいいでしょうし、「Mを経由せずにXがYに与える影響」を推定することならば調整したほうがいいでしょう。目的に応じて柔軟に解析のアプローチを変えていくのが良いと思います。

読み方6:条件付けは矢印の根本・先っぽにも影響する

最後のポイントです。下記のようなDAGを想定してください。

f:id:KRSK_phs:20170125024433p:plainf:id:KRSK_phs:20170125025005p:plain

 

まずXとYの共通原因Z1によって、backdoor pathが開かれ、XとYの間にAssociationが存在しています。Z1を条件づければそのようなbackdoor pathを閉じることができます。今回はZ2という第四の要因が登場しています。Z1と矢印でつながった、因果的な原因(左のDAG)または結果(右のDAG)です

このようなZ2を条件づけることは、実は間接的にZ1を条件づけることにつながります。

したがって上記の二つのDAGはどちらもZ2を条件付けることで、Z1を経由するXとYの間のbackdoor pathをブロックしていることになります。これはZ1にあたる要因のデータが手元にない場合に便利な考え方で、代わりにZ2にあたる要因のデータを持っていれば問題なく因果推論を行うことができます。

注意しないといけないのは、Z2がZ1を100%完璧に規定するような要因でない場合はZ1によるbackdoor pathを完全に閉じることができないという点です。例えば、Z1がインフルエンザで、Z2はそれがないと病気Z1には絶対ならないようなもの、つまりインフルエンザウイルスのような場合はZ2を条件づけることで完璧にZ1も条件付けることができます。インフルエンザウイルスに感染しないとインフルエンザにはなりようがない、ということです。

DAGで見ることができないもの

以上をふまえて適切に活用すれば、DAGは因果関係を考えるうえで強力なツールになります。しかし、DAGも完ぺきではありません。DAGによって見逃されているものとして、効果修飾(Effect modification)という概念があります。

XがYに与える効果が第三の要因Mによって異なるというケースです。例えばある病気Yに対する治療法Xが男性よりも女性で効きやすい場合、XのYに対する効果が性別(M)によって修飾されているといいます。実はこれはあらゆる分野において非常によくある現象なのですが、残念なことに効果修飾はDAG上で表現することができません。

 

DAGの基本ルールがわかると、複雑なAssociation構造でもバイアスの原因を特定することができます。次回はDAGによるバイアスの視覚的整理をまとめたいと思います。

参考文献

 疫学で使われるDAGについては、やはり以下の本が最も有名でしょう。しかし、かなり難解なので注意。

Modern Epidemiology

Modern Epidemiology

  • 作者: Kenneth J. Rothman,Timothy L. Lash Associate Professor,Sander Greenland
  • 出版社/メーカー: LWW
  • 発売日: 2012/12/17
  • メディア: ハードカバー
  • この商品を含むブログを見る
 

 それ以外なら以下の本は非常にわかりやすく(かつある程度深く)因果推論におけるDAGの活用法についてまとめています。まもなく出版される、ハーバード大学の因果推論の研究者らがまとめている本ですが、今ならなんと筆者のHP上で無料公開されています。

https://www.hsph.harvard.edu/miguel-hernan/causal-inference-book/

ちなみに筆頭著者のHernan氏はまもなく某有名MOOCにてDAG講座を開講予定なので要チェックです。