DAGシェアするTwitterGoogle+Pocket前回は因果ダイアグラム(DAG)という概念の導入として、そもそもなぜDAGが必要とされるのかについて書いてみました。今回はDAGシリーズ第二弾として、実際にDAGを”書いて”いくうえでの基本ルールとDAGの”読み方”について整理してみようと思います。DAGの読み書きができるようになれば、様々な要因が複雑に絡み合っているような場合でもAssociationと因果関係を切り分け、どのようなバイアスがなぜ起きているのかを特定できるようになります。基本ルールの説明に入る前にまず、大前提の確認です。DAGとは因果関係を考えたい二つの要因やその他の要因を矢印で結ぶことで、それぞれの間の因果関係を視覚的に整理するためのツールでした。ここで重要なのは、DAGを書くときには手持ちのデータのことを一回忘れてしまうということです。実際にデータとして測定できている要因も未測定のものも含めて、ゼロベースで注目している二つの要因に関わるすべての要因を列挙します。(まるで自分が考えたい二つの要因に何がかかわってくるかをすべて知っている神様であるかのように)あらゆる要因を書きだしてみてください。これは簡単なようで実は難しいことです。knowledge(専門知識)が必要となります。いま、飲酒と肺がんの間の因果関係に関心があるとしましょう。この因果関係を考えるうえでDAGを書くためにはまず飲酒、肺がんに関わる要因を考えます。肺がんの専門家でしたら当然、喫煙が肺がんの重要なリスク因子であることを専門知識として知っていますので、DAGの中に喫煙を当然含めます。喫煙が肺がんのリスクであることを知らない人(今回は簡単すぎる例なのであまりないかもしれませんが)は喫煙をDAGに含めることができません。完全なDAGを書くことができないのです。要するに、より正確なDAGを書くためにはその分野の専門性が前提条件となるということです。このようなこともあり、私見ですが、(少なくとも因果推論を目的とした統計モデルでは)使用する変数の選択を機械的(ステップワイズ法などいろいろあります)に行うべきでないと私は考えています。結局は各分野の専門家の判断にゆだねるべきでしょう。DAGの"書き方"の基本ルールDAGを書く上でのお作法をまとめます。Graph)の由来にもなっています。"D”で"A"なGraphなのです。いずれも非常にシンプルなルールなので難しくないと思います。"Directed"(有向性)DAGの"D"の部分になります。「有向性」とは文字通り、「方向が有る」という意味です。要因同士を結ぶときに”矢印”を使うというだけのことです。矢印は因果関係を表す:DAGで描かれる矢印はすべて”因果関係”を意味します。”関連(Association)"ではありません。各分野の専門知識に基づいて、因果的に関連している要因同士を矢印で結びます。矢印の根本が原因、先が結果これは極めて直感的でしょう。以下のようなDAGは、「ZはXを引き起こす原因でもあり、Yを引き起こす原因でもある」ことを意味します。ちなみにXとYの間には矢印が存在しないので、因果関係が存在しない(と、少なくともこのDAGを書いた人は考えている)ということになります。後述する方法でこのDAGを”読む”とXとYの間にAssociationが存在することがわかります。くり返しになりますが、ZがX,Yそれぞれの原因であることは、その分野の専門知識に基づいて判断し、DAGに書き加えます。ルール2:時間軸は左から右DAG上では時間の流れが左から右に流れています。時間的に前に発生した要因は、後に発生した要因よりもDAG上では左側に書かれることになります。Yよりも時間的に先に発生する要因である、ということです。ルール1とルール2を組み合わせると、当然のことですがDAG上の矢印は常に左向きであることがわかります。因果関係(矢印)では、原因は必ず結果よりも時間的に先に起こるからです。”Acyclic”(非巡回)DAGの"A"の部分です。「非巡回」とは「(矢印が)巡回しない」ことを意味します。ある要因から出発した矢印がめぐりめぐって自分自身に戻ってくる(巡回する)ことはNGということです。これは言い換えると、ある要因が自分自身の原因となってはいけない。次のようなDAGは”Acyclic”の条件を満たしていません。Xから出発した矢印はYを経由して自分自身Xに戻ってきてしまっています。矢印は因果関係を示しますから、これでは「Xを変えるとYが変わってYが変わるとXが変わる(??)」というヘンテコな解釈ができてしまいます。Xが自分自身の原因になっています。上記のDAG、なにがおかしいかというと当然YからXに伸びる矢印です。ルール2よりXはYよりも時間的に先に発生した要因です。未来(Y)が過去(X)に影響することは(タイムマシーンでもない限り)不可能ということです。on)ことを意味します。ここでいう”条件付け”とは、囲まれている変数の値(level)ごとに分析がおこなれているということだと思ってください。以下のようなDAGを考えてみましょう。要因Zが四角で囲われているので、これは「Zのlevelごとにデータを分析している」と解釈できます。Zが「大学を卒業しているか、していないか」という二択の場合は、「大卒の人」「高卒以下の人」それぞれに対して別々に分析を行うという意味です。Zが三つ以上の値をとる場合は、Zがそれぞれの値の人々の集団を別々に分析しています。統計やデータ分析にある程度慣れている方だと直感的にわかると思うのですが、DAGでいう”条件付け(conditioning)"とは層別分析のことです。回帰モデルを使った特定の要因の調整とも似たようなイメージだといえます。DAGの”読み方”:どうやってDAGからAssociationを読み取るか上記のルールと自らの専門知識に従ってDAGを書いたあとは、いよいよDAGを”読む”フェーズに入ります。再度確認ですが、DAGを”読む”目的は「因果関係を考えたい二つの要因(XとY)の間に偽(Spurious)のAssociationを引き起こすバイアスとその原因を特定すること」です。偽のAssociationは因果関係ではありませんので、その原因を特定し、対処してあげることで、真の因果関係に近づくことができるわけです。XとYの間のAssociationは、両者の間を結ぶ矢印を(その他の要因を経由するものも含めて)たどっていくことで見えていきます。Associationは大きく1因果関係があるためにAssociationもあるパターンと2因果関係がないのにAssociationがあるパターンの二つに分かれます。読み方1:矢印でつながっているものは関連(Association)があるこれは当たり前なのでさほど重要なポイントではありません。要するに因果関係がある場合は当然Associationもありますということです。例を見る方が早いでしょう。この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があるといえます。これは上記のパターン1のAssociationですね。このように、矢印に方向に沿って、結ばれた二要因(今回の例だとXとZ)の間にはAssociationがあると読むことができます。cause)という構造がDAGにはしばしば現れます。前回のブログで登場した以下のDAGだとZ(年齢)という要因はX(毛髪量)とY(年収)それぞれの”共通の原因”となっています(矢印の根本にZがいますね)。Zのような要因は文字通り、共通原因と呼ばれます。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と呼ばれ、因果関係がないのにも関わらずAssociationが発生する理由の一つです。pathによるものです。この点は次回詳しくまとめます。effect)と呼ばれる構造が描かれています。Yそれぞれによって引き起こされる結果であるため、共通効果と呼ばれます。このような共通効果ZはColliderともよばれます。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になってきます。それぞれを条件付けすると何がおきるでしょうか?共通原因のconditioning先ほど書いた通り、共通原因はAssociationのpathをつなげる働きをします。Z)をしていることになります。実は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が”開きます”。上記のようなDAGではXからZに伸びたpathがそのまま共通効果ZでブロックされずにYに伸びていきます。結果、XとYが一つのpathでつながり、両者の間にAssociationが発生します。bias)といいます。これも次回詳しくまとめます。読み方5:中間にある要因の条件付け⇒因果効果のブロックこれは直感的にわかりやすいです。矢印でつながったpathの途中にある中間の要因を四角で囲う(”条件づける”)と、そのpathはブロックされます。以下の図では、要因X(親の学歴)が要因M(子供の学歴)を経由してY(子供の将来の年収)に因果的に影響しているという状況です。要因XとYは矢印でつながっておりAssociationも存在するのですが、仮に要因M(子供の学歴)を条件づける(子供の学歴が同じ集団で、親の学歴と子供の将来の年収の関連を見る)と開いていたpathが閉じ、Associationもなくなります。子供の学歴が、親の学歴が子供の将来の年収に影響する唯一のメカニズムであるならば、子供の学歴を調整してしまえば両者の間に関連は見られなくなります。以下の場合はどうでしょう。先ほどと同様に要因MがXがYに与える影響の中間因子になっています。今回はXからYに直接伸びる矢印があります。XがMを経由せずにYに影響を与えるメカニズムが考えられる場合(例えば、学歴が高い親は自身のネットワークを使って子どもの就活が有利になるように動くなど)はこのようなDAGになります。このような状況でMを条件づけると、XとYの関連はなくなりはしませんが、弱くなります。Mを条件づける前と後では、XからYへ延びるpath(1+2)のうちMを経由するもの(1)が消滅するからです。問題はこのような要因Mを条件づけるべきかどうか、です。答えは分析の目的による、としか言えません。分析の目的が「とにかくXの値を変化させた(介入した)場合のYへの影響」を推定することならばMは調整しないほうがいいでしょうし、「Mを経由せずにXがYに与える影響」を推定することならば調整したほうがいいでしょう。目的に応じて柔軟に解析のアプローチを変えていくのが良いと思います。読み方6:条件付けは矢印の根本・先っぽにも影響する最後のポイントです。下記のようなDAGを想定してください。pathが開かれ、XとYの間にAssociationが存在しています。pathを閉じることができます。今回はZ2という第四の要因が登場しています。Z1と矢印でつながった、因果的な原因(左のDAG)または結果(右のDAG)です。このようなZ2を条件づけることは、実は間接的にZ1を条件づけることにつながります。pathをブロックしていることになります。これはZ1にあたる要因のデータが手元にない場合に便利な考え方で、代わりにZ2にあたる要因のデータを持っていれば問題なく因果推論を行うことができます。pathを完全に閉じることができないという点です。Z1がインフルエンザで、Z2はそれがないと病気Z1には絶対ならないようなもの、つまりインフルエンザウイルスのような場合はZ2を条件づけることで完璧にZ1も条件付けることができます。インフルエンザウイルスに感染しないとインフルエンザにはなりようがない、ということです。DAGで見ることができないもの以上をふまえて適切に活用すれば、DAGは因果関係を考えるうえで強力なツールになります。DAGも完ぺきではありません。modification)という概念があります。XがYに与える効果が第三の要因Mによって異なるというケースです。ある病気Yに対する治療法Xが男性よりも女性で効きやすい場合、XのYに対する効果が性別(M)によって修飾されているといいます。実はこれはあらゆる分野において非常によくある現象なのですが、残念なことに効果修飾はDAG上で表現することができません。DAGの基本ルールがわかると、複雑なAssociation構造でもバイアスの原因を特定することができます。次回はDAGによるバイアスの視覚的整理をまとめたいと思います。Pearlによる因果推論の教科書。ペーパーバックこの商品を含むブログを見るちなみに彼は最近、一般向けの因果推論の本を出版しました。因果推論の歴史を平易な言葉で語っているので、読み物として大変面白いです。見る疫学で使われるDAGについては、やはり以下の本が最も有名でしょう。ハードカバーこの商品を含むブログを見るそれ以外なら以下の本は非常にわかりやすく(かつある程度深く)因果推論におけるDAGの活用法についてまとめています。まもなく出版される、ハーバード大学の因果推論の研究者らがまとめている本ですが、今ならなんと筆者のHP上で無料公開されています。https://www.hsph.harvard.edu/miguel-hernan/causal-inference-book/ちなみに筆頭著者のHernan氏はedXにてDAGに関するオンラインコースを無料で公開しているので要チェックです。因果推論のスーパースターたちとのインタビューも注目です。05:21"矢印"をつかって因果関係を視覚的に整理する:因果ダイアグラム(DAG)入門2〜読み方・書き方の基本ルール〜関連記事2018-12-28回帰分析を使った因果推論の仮定:パラメトリックモデルを使うということお久しぶりです。(3)スターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。