べんきのにっき

いろいろと垂れ流します。

Causal inference book の 18章

長らくこの章は見出しの上だけの存在だったのだが、先日更新された時に追加されていたので読んだ。 以下はどんなこと書いてあったかの自分用のメモ。 訳は雑だし色々勝手に妄想で補間してるか、情報が抜けまくっている。参考にはならない。

神に誓ってgoogle翻訳など翻訳サービスに頼ったものではないが、結果としてgoogle翻訳にぶち込んだものよりもわかりにくい内容となった。悲しい。

なお、文中に出てくるbはoutcomeに関わる関数で、πは割付に関わる関数

前置き

本書のこれまでの章では、アウトカムYに対する処置Aの因果効果を推定する調整方法(ex. 層別とか標準化とかg-estimationとか)を紹介していたが。計算方法は違えど、これらは調整因子Lが次の条件を満たすことを前提にする。

  • Lによる調整によりconditional exchangeabilityが担保される
  • Lによる調整によりAとYの全てのバックドアパスをブロックする

実用上の疑問としては、そのLに何を選ぶべきか(変数選択)である。18章は、因果推論のための変数選択の参考になる情報を提供しそう。

予測のための変数選択の基準と因果推論におけるそれは異なるから、よく知られている予測のための選択基準はそのまま適用できるとは限らない。

以下では、因果推論の観点からは望ましくない方法が抱える問題とかについてまとめる。

18.1 予測と因果推論における変数選択の目的の違い

純粋に予測だけが目的なら、交絡の調整は必要ない。禁煙と体重増加の関連(因果ではない)を知ることが目的なら、単に比較するだけでよい。 モデルを作るにしても、予測能力を向上するあらゆる変数を使用できる。モデル選択についても同様で、なぜその変数が選ばれるのかと言う基準がブラックボックスであってもよい。

対照的に、因果推論が目的の場合はそうではない。自動的な変数選択は予測が目的の場合は上手くいくかもしれないが、因果推論においてはバイアスを大きくしてしまうかもしれない。

18.2 どのような変数が因果効果のバイアスを増やすか

因果ダイアグラムを使いながらバックドアパスとか、操作変数とかその辺を概観していた。それより前の章でみたような内容ばかりだったので、省略。

(多分、以下にある、最後の段落だけ読めばいいんじゃないか?)

まとめとして、使ってはまずい変数は、純粋に統計的なアルゴリズムだけから識別できなくて、ドメイン領域のエキスパートな知識が必要。

18.3 因果推論と機械学習

この章は、必要な共変量が特定できていることを仮定する。 次に問題になるのは、Xが高次元である状況下でどうやって推定するか。

よくあるパラメトリックモデルとかを使うと、bやπの推定が不正確になるかもしれないし、行<列ならそもそも解けない。 Xの中にAと関連の強いものがあれば、正値性(positivity)をおかすことにもつながる。

ならどうするの?って話で、Lasso使うとか、bの条件付き期待値を求めるためにRFとかNNとかの機械学習的な手法を使うことも考えられる。これらはbの正確な予測を行うことができるが、二つの重大な問題を抱える。

  • (多分Lassoを指しているんだと思うけど)一つ目は、選択された変数が交絡を調整している保証がないこと。ただ、よりよい方法として、doubly robustな手法もある。

  • 二つ目は、機械学習のアルゴリズのが統計的な振る舞いがよく知られていないこと。つまり、仮にdouble robust推定量が不偏であっても、その標準誤差は誤っているかもしれない。結果として、算出された信頼区間に頻度論的な解釈が成立しない可能性がある。(実際よりも狭くなってしまうとか)

doubly robustな方法は重要になるのだけど、それだけでは十分ではない。次節では、doubly robust推定の二つの改良について考察する。

18.4 Doubly Robustな機械学習

sample splitting とcross-fittingの話。

sample splittingについて

まず、study populationをランダムに、estimation sampleとtraining sampleに2分する。 次に、training sampleにおいて予測的なアルゴリズムを用いてbとπを推定する。 最後に、doubly robust推定でestimation sampleの因果効果を計算する。ただし、bとπはtraining sampleから推定したものを使用する。

sample splittingは半分に分けた集団から推定を行う。 有効な信頼区間が計算ができる代わりに、サンプルサイズを半分犠牲にしている。結果として、データを全て使うよりも信頼区間は広くなる。

(雑に考えると、 \sqrt{2}倍にくらいになりそうだ。)

sample splittingによる有効性を克服するのがcross-fittingらしい。 方法は以下。

まず、sample splittingで分割したtraining とestimationを入れ替え、推定をもう一度行う。

次に、得られた二つのdoubly robust推定量を平均する。 95%CIはブートストラップで計算する。(って書いてあるけどどうやるんだ?splitしたsampleを対象にやるんだろうか?)

なんだか色々研究されているらしい。

18.5 変数選択って難しい

前節で概説した方法は、(理論ではなく)データに基づいた変数選択は誤った信頼区間を計算するという固定観念を否定するものだった。これまでに見てきたように、上手く組み合わせたら理論的に正しいものもある。しかし、そんなDーRな機械学習による方法は、以下に示す4つの理由により、我々が抱える問題を解決してくれない。

  • 分析する時に知っているドメイン知識が十分でなく、交絡の調整やバイアスを増やす変数を完全に識別しきれない。だから少しバイアスは残る

  • 機械学習アルゴリズムはたくさんあるけど、常に最良であると数理的に保証された方法はない。どういうアルゴリズムを選ぶべきかは因果構造に依存するはず。でも、因果構造は不明だし実応用のアドバイスに体系化するのは難しい。

  • 実装が難しく、計算に時間がかかる(時間変化する割付により高次元になったりすると特に。)。生存時間分析なんかでは特にそう。だから、複雑な継時データ分析の因果推論ではsingle robustな方法にとどまっている。(パート3も読めば色々わかりそう)

  • Doubly-Robustな方法は、bとπの真の条件付き期待値がわかってる時と同じ条件での因果効果の分散を与える。でもそれが、実際に役立つレベルに小さい分散であるかがわからない。

頑張って因果効果を計算した結果、分散がでかすぎて使い物にならなかった、なんてことは起こる。推論に関わる諸々の要素が上手くいっても、共変量Xと割付Aの相関が強ければそうなってしまう。

(例)割付を受ける確率π(X)が0とか1に近くなり、分散がものすごく大きくなってしまう。この状況では、理論的に正しい95%CIが出てきても、大きすぎて役に立たない。

だからと言って、そのXを外してしまうと本来の分析の意図からは逸れてしまう。交絡変数にともなうバイアス・バリアンスのトレードオフが発生するのは悩ましい問題。

。。。みたいな事情があるので、汎用的なガイドラインを整備するのは難しい。 科学的な意味でよいアドバイスとしては、MULTIPLEな感度分析をすること。これに一貫性があれば、結果にある程度自信を持っても良い。そうでなければ原因を考え直そう。