swigの日本語の記事全然見つからなくて辛い。
本題と関係ない話
ところで、DAG(有向非巡回グラフ)はグラフの一種に過ぎず、因果推論の専売特許ではない。
一方、Causal Structureを表現する手段として有用である側面を持つため、 causal DAGとかで呼んだ方が誤解が減るのではないかと思う。
以上、DAGという言葉で因果推論マウントを取るのは筋違いな気がする話。
(あまり細かく言うと言葉狩りになるから、程度問題だとは思うけど。)
参考と図の出典
Single World Intervention Graphs: A Primer
図は上記から引用。
本題
例の本を読んでいると出てくるSWIG
single interventionにおけるcounter factualを表現するものらしい
最も簡単な例で言うと、次のようなグラフがあったとする。
いつも通りとしておく。
swigはDAGのノードを分割したりcounter factualなものに入れ替えて作成される。
このとき、もしなんかa=0とするような介入を想定すれば、こういう世界線を表す。
一方、a=1とする介入も当然あり、同様にこう表す。
両方まとめて、(1)のように書けばいいね。というもののようだ。
swigにする方法
ステップは多分二つ。
ステップ1: interventionの対象となる全てのノードをrandom nodeとfixed nodeにsplitする
random nodeとfixed nodeは次の通りで、パスを受け取る側のノードとパスを出す側のノードに分割している。
ノード | 表記 | ノードへパスが | ノードからパスが |
---|---|---|---|
random node | 大文字 | 向かっている | 出ていない |
fixed node | 小文字 | 向かっていない | 出ている |
大文字小文字は厳密なルールではないので、あんまり気にしなくて良いと思う。受け取る側と出る側に役割が分かれていることが大事。
例えばノードAをsplitするとこうなる。
なお、treatmentが複数地点ある場合、全てsplitする。
ステップ2: fixed nodeのdescendantのノードを全て、counter factualな記法に書き換える
splitしたグラフを対象とし、fixed nodeが親であるノードを、 fixed nodeのcounter factualであることがわかるように書き換える。 これはinterventionのノードであっても適用され、(random nodeを)書き換える。
splitしたノードの書き換え例は以下。splitされたノードBやFも書き換えられていることがわかる。
ちなみに子ではなく子孫であることに注意する。
つかいどころ
random nodeとYの交絡道が切れているか(d-seperatedであるか)判断するようだ。
part3で思い出したように出てくるので困る。