医療統計学を学ぶ大学生のブログ

医療統計学、因果推論を専攻しています。R, SASユーザーです。

Causal DAGsの紹介

f:id:NorihiroSuzuki:20210716161802p:plain

 最近Twitterで、DAGに関する議論が巻き起こったのもあり、一度What If(Ch.6)でのDAGに関する内容をまとめたほうがいいかなと、この記事を書き始めています。また、Modern EpidemiologyのゼミでDAGのパスに関する話が出たのですが、What Ifを経験していないメンバーにとっては理解が追いついていなさそうだったので、参考にしてくれれば嬉しいかなというモチベーションです。

 正直なところDAGを論文の中で見ることはあまりないですが、分析を行う上では認識のすり合わせ、変数間の関係を考えるいいツールかなと個人的には思っています。もし自分の理解が間違っている場合は、コメントで教えていただけると幸いです。

 

 

 DAGsについて

まずDAGs(Directed acyclic graphs)は、日本語では、有向非巡回グラフと呼ばれます。これは数学のグラフ理論という分野における一つの閉路のない有向グラフのことを指します。Wikipediaの該当部分はこちらからどうぞ

ja.wikipedia.org

 

Twitterでの議論の原因の一つでもあり、ややこしいことなのですが、因果推論で使われるDAGsは、この広義の意味でのDAGsではなく、その一部を指しています。つまり以下のような包含関係として考えるべきです。

f:id:NorihiroSuzuki:20210716163940p:plain

因果推論の文脈で多くの方が単に「DAGs」と言っていますが、より正確には「Causal DAGs」のことを指しています。

 

DAGs(Directed acyclic graphs)の定義

まずは広義の意味でのDAGsの定義を整理します。この定義はCausal DAGsにも共通の事項なので、次に進む前に確認していただけるとよろしいかと思います。

  • 有向(Directed)

まず、グラフは頂点(vertex)と、2 つの頂点を結ぶ辺(edge)によって形成されます。このうち、頂点が有向辺(方向を示す矢印)によって結ばれていることが、有向(Acyclic)という意味になります。

 

  • 非巡回(Acyclic)

次に非巡回とは、ある頂点から出発し、有向辺をたどり、再びその頂点に戻らないことを指します。逆に巡回してしまっている有向グラフの例は以下のようなものです。

f:id:NorihiroSuzuki:20210716165542p:plain

 

この図の状況であれば、A→B→C→Aと巡回してしまっています。

 

Causal DAGsとは

Causal DAGsは上記のDAGsより、さらに”因果”というものを考えたグラフになります。つまり、先ほどまでは単に頂点と矢印で構成されるグラフを考えていたわけですが、因果推論では、変数の関係を考えることが主要な観点になります。

こういったCasal DAGsにおいては、頂点となる変数をNodeと呼ぶことがあり、そして矢印(Edge)は、このNodeとNodeの関係を示すものです。この矢印の根元にあたるものが「原因」、矢印の先にあたるものが「結果」というとらえ方です。

 

変数間に矢印が存在するということは、このCausal DAGsでは「集団内において少なくとも一人は直接的な因果関係(Directed Causal effect)がある」ということを表しており、逆に矢印がないということは、「集団内で誰一人として直接的な因果関係がない」ことを意味しています。

 

ただこのDAGsの難しい点としては、その効果がporotectiveなものか、harmfulであるのかという効果の方向性を表現できない点、効果の大きさを示すことが出来ない点、複数の原因の相互的な作用を表現できない点があげられます。

 

全て書いてしまうとだいぶボリューム、レベル感が増してしまうのである程度にとどめますが、このDAGで重要となってくる仮定の一つにマルコフ性(Causal Markov Assumption)というものがあります。これは「ある変数をその親で条件づけた時、親を除いた非子孫と独立する」というものであり、これが満たされることに依ってMarcov factorizationという法則が成り立ちます。詳しく知りたい方は専門書を見ていただければ幸いです。

 

また変数の呼び方ですが、以下の図のようなものがあります。

f:id:NorihiroSuzuki:20210716172838p:plain

 

また以下のような状況においては、

f:id:NorihiroSuzuki:20210716161802p:plain

  1. YはAとLのCommon effect(Collider)
  2. LはAとYのCommmon cause

とそれぞれの変数のことを呼びます。特にこの2つは次のパスに関する話で非常に重要になってくるので、覚えておいておくといいのかなと個人的には思います。

 

パスに関する話

まずよくある話ですが、因果関係と相関関係は異なります。ただ、よく因果効果をもたないから、相関もしないと誤解される方が多い印象です。

ここで一応整理しておくとランダム化比較試験においては

  1. 因果関係(Causation)があれば相関(Association)もある
  2. 因果関係がないからといって相関がないわけではない

以上の二つは理解する必要があります。

 

パスが通っている、通っていないという話を聞くことがあるかと思いますが、これは、いわゆる変数間に関連があるかどうか(独立かどうか)の話です。

ここで、変数が関連する(パスがつながっている)のは以下の条件を持つときです。

  1. 一方の変数が他方の変数の原因であるとき
  2. 2つの変数がCommon Causeを持つとき

f:id:NorihiroSuzuki:20210716180002p:plain    f:id:NorihiroSuzuki:20210716180028p:plain

例えば上記の図のようなケースです。(AとYは関連)

 

それ以外の状況では二つの変数はmarginallyに独立します。例えば下図のようなCommon effect(Collider)がこれに当てはまります。

f:id:NorihiroSuzuki:20210716181033p:plain

個人的なDAGを見たときの簡単な判断の方法として、ColliderとCommon Causeを探すことです。Colliderはそこで通っていたパスを切断しますし、Commmon causeは逆に本来関係性のない変数間に自身を通したパスを生み出してしまうので交絡の要因となります。

 

 

 

次に条件付けという作業をした場合のことを考えます。条件付けとは、その変数をある値に固定した場合のことなので、重回帰などであれば、説明変数としてモデルに入れたような状況を指します。ここで最も重要なことは、ある変数で条件付けると、そこでのパスの状況は反転するということです。

つまり、Common causeのようなパスが通っているところであればその条件付けによってパスを切断することが可能ですし、逆にColliderのようなパスをブロックしている場所があるのであればその条件付けによってパスは開く(関連が生まれる)ことになります。この条件付けという作業はDAGsでは変数の周りを四角で囲うことによって表現します。

f:id:NorihiroSuzuki:20210716181715p:plain

この上記の例を解説します。

まず興味があるのはAとYの関係、すなわちAからYへの矢印(因果効果)であるとします。この真の状況を表すDAGを見ると明らかなようにAとYの間には矢印は存在せず、つまりAとYは独立であることがわかります。

ここで問題となってくるのはLというCommon Causeの存在です。上記で述べたように、Common Causeは自信を含む変数間(A→L→Y)にパスを通してしまう、関連性を作ってしまいます。すなわち真には独立であったAとYが関連してしまうことになります。これは交絡の状況と全く同じです。

ではどうするかというと、このDAGであれば、Lを条件づけることです。この条件付けによってLで開いていたパスを閉じることが可能です。つまり、AとYが独立であるという状況にすることが可能です。

 

まとめると、パスがブロックされる(関連がなくなる)のは次の場合です。
1. Non collider(Common effectではない)が条件付けされる
2. 条件づけていないcolliderを含む
3. Colliderの子孫も条件づけられていない

 

ちなみに、グラフ理論(変数間の関連の有無の直感的な理解)と数学理論をつなぐ考え方で、2変数間のすべてのパスがブロックされることをD-seperation(d分離)といいいます。(逆はd連結)

 

今回の記事はここでいったん終わりますが、Causal DAGsに関してはまだ述べてないことも多くありますので、もしこのDAGsに関して興味を持った方がいればWhat Ifや、その他専門書を見ていただければいいかなと思います。