YutaroOgawa / causal_book

書籍「作りながら学ぶ! PyTorchによる因果推論・因果探索」の実装コードのリポジトリです
MIT License
113 stars 32 forks source link

【第3刷の第4章・第1節】回帰分析について #33

Open Yoshiki443 opened 3 years ago

Yoshiki443 commented 3 years ago

お世話になります。第4章・第1節の回帰分析について、2点質問があります。

(1) 第4章・第1節の内容は「回帰分析の際、交絡因子も説明変数として使えば、バックドアパスを閉じて因果の大きさを推定できる」という内容と理解しましたが、これは一般的に(線形回帰するのが妥当な場合に)成り立つのでしょうか?

というのは、Pythonコードではサンプルデータを自作するので、Yを計算する式(データ生成過程)がどうなっているか知っているからこれで良いと理解できるのですが、現実のデータでデータ生成過程が自明ではない場合でも、交絡がありそうな変数があっても説明変数に入れておけば、交絡の影響を無くして因果分析できると考えて良いのか、疑問に思った次第です。

(2) P80の「回帰モデルの補足」の項ですが、「結果変数Yにだけ効く変数aを残す必要はない」という文章の次に「変数aも考慮した方が正確な因果推論が可能になる」と書かれており、内容が矛盾するように感じます。これは最初の文が誤植で、「変数aを残す必要がある」が正しい(=変数aも使って回帰分析した方が良い)と思いましたが、いかがでしょうか?

どうぞよろしくお願いいたします。

YutaroOgawa commented 3 years ago

@Yoshiki443 さま

重要なご質問を誠にありがとうございます。

(1) 現実データの分析において、

現実のデータでデータ生成過程が自明ではない場合でも、交絡がありそうな変数があっても説明変数に入れておけば、交絡の影響を無くして因果分析できると考えて良いのか、疑問に思った次第です

こちら現場で重要ですね。 本書では第1部は因果推論として因果のパスが分かっている場合を、第2部では因果探索として因果のパスを求める手法と分けています。そのため、現場で行うためには、まず因果探索で因果のネットワークを明らかにする必要があります。 そのうえで、交絡因子なので、回帰モデルの説明変数に入れよう。となります。

また、明らかに常識的に交絡因子として扱うことに違和感がなければ、因果探索までせずとも交絡因子として回帰モデルに入れて良いかと思います。

交絡因子であるかどうか微妙な場合は、まず第一部の因果推論(因果の効果を測定する)の前に、 因果探索にて、変数間の関係性を探ることになります。


(2) p. 80の説明 こちら誤植になります。日本語がおかしな文章になっており、申し訳ございません。 以下修正となります。

【第4章1節 回帰モデルの補足 p.80】 以下に示す図4.1.3 のように、仮に結果変数Yにだけ効く別の変数a が観測できている場合、 d分離をする際に変数a を残す必要ありません。すなわち変数a は疑似相関、間接的因果を生 み出していないですが、変数 の正確な回帰モデルを構築するために回帰モデルの入力変数 として考慮する方が正確な因果推論が可能になります。 ↓ 以下に示す図4.1.3 のように、仮に結果変数Yにだけ効く別の変数a が観測できている場合、 d分離をする際に変数aを残す必要ありません。すなわち変数a は疑似相関、間接的因果を生 み出していません。 ですが、回帰モデルの入力変数として変数aを考慮する方が正確な回帰モデルが構築でき、因果推論がより正確になります。

以上、どうぞよろしくお願い致します。

Yoshiki443 commented 3 years ago

Ogawaさま

(1)(2)ともに理解いたしました。 早速のご回答、ありがとうございました!