Unboundedly

日々大学院で学んだこと、考えたことを更新

傾向(プロペンシティ)スコアの各使用法の仮定・解釈の違いを比較してみた

観察データを用いた因果推論のための分析手法として非常に人気の「傾向スコア(Propensity Score)」法

「傾向スコアを用いた分析」と言っても、マッチングや重み付けなどその使い方は様々あります。

巷にある因果推論に関する書籍では、傾向スコアを”どうやって使うのか”という視点で各手法の紹介がされていることが多いですよね。

ところが実際にマッチングや重み付けをしてみると、傾向スコアの使い方によって結果が大きく異なることも少なくありません。

このとき、「どちらの手法から得た答えが正しいのか?」と疑問に思うのは自然です。

それに傾向スコアの使い方はたくさんあるので、「そもそも結局どの使い方が一番いいの?」と思う人も多いでしょう。

この記事を読み終わるころには、「そもそもベストな傾向スコアの使い方、正しい使い方はない」ということがわかると思います。

・傾向スコアという考え方の導入
・傾向スコアを用いた各分析手法の比較。どう使い分けるのか、それぞれの仮定・結果の解釈の違いはなにか。
・そもそもなんで傾向スコアを使うと嬉しいのか?普通の回帰分析じゃだめなの?

以上のようなポイントについてまとめていきます。

そもそも傾向スコア(プロペンシティスコア)とは? 

傾向スコア(Propensity Score)とは、「Conditional Exchangeabilityを得るのに必要なLで条件づけた、効果を推定したい要因Aに割付られる条件付き確率」です。

このままでは何のことかよくわからないかもしれませんが、少しずつ紐解いていきます。

少しステップバックして、因果推論の基礎から導入します。

観察データを用いた因果推論

統計的因果推論の目的は、ある要因AがアウトカムYに与える効果の大きさを定量化することにあります。

例えば、ある薬をのむこと(A)が死亡(Y)に平均的に与える効果

 E[Y_{a=1} - Y_{a=0}]

を知りたい、などです。

なお、上記の数式は反事実アウトカムモデルという考え方に基づいていおり、わからないって方は以下の記事をご参照ください。

ところが薬を飲んでいる人(A=1)と飲んでいない人(A=0)では、アウトカムに関連する背景因子が異なるのでそのまま比べると”アンフェアな比較”になるわけです。

例えば、より若い人の方がその薬を飲む習慣がある場合、薬に効果が全くなかったとしても「見かけ上は」薬を飲んでいる人の方が(より高齢な「薬を飲んでいないグループ」よりも)死亡リスクが低いという統計的な傾向が見られます。

なので一般的には回帰分析などを用いてそういう年齢などの背景因子(Lと呼びます)を"調整"するわけです。

具体的にはLを条件づけることで、Lの層内(=Lの値が同じ人たち)では"フェアな比較"ができるだろうと仮定を置くことで、Aの効果を考えていきます。

 \newcommand{\indep}{\mathop{\perp\!\!\!\!\perp}} Y_a \indep A\ |\ L

 これを(Lの層内における)Conditional Exchangeabilityといいます。

そんな条件を満たすLが何か、という点については、DAGというツールを使うことで考えることができます。

傾向スコアは複数のLを1つの変数でまとめる

現実にはLが年齢だけということはありません。

薬Aを飲んでいる人と飲んでいない人は、健康状態、経済状況など様々な点で異なる可能性があり、それらの違いがアウトカムYに影響するとき、全てのLを条件付けなければ厳密な意味での"フェアな比較"(Conditional exchangeability)を行うことはできません。

ところが条件づけるべきLの数が増えると、Lの(組み合わせの)層の数は指数関数的に増えていきます

2値変数がL1, L2, ......, L10とあれば 2^{10}=1024通りみたいなイメージです。

1024通りのアウトカムの比較をしていたのではキリがありません。

また、マッチング(Lが同じの人どうしでA=0とA=1のペアをつくる)をしようにもペアが見つからないなんてことも起こります。

(アウトカムに対する)回帰分析ではこの問題をパラメトリックモデルという仮定付きのモデルを使うことで上手く推定しようとしたわけです。 

しかし、Lの数が増えれば増えるほど、アウトカムに対するモデルの仮定も強くなってくる。

そこで登場するのが傾向スコアです。

傾向スコア S(l)はConditional Exchangeabilityを得るのに必要なLの層内における曝露(治療)を受ける(A=1)条件付き確率

 S(l) = Pr[A=1|L]

になります。

例えば、年齢と性別と既往歴による交絡があってA=1 vs A=0のフェアな比較ができていないという場合は、「年齢が60歳、性別が男性、既往歴がXXのときに治療を受ける確率」みたいなのが傾向スコアです。

当然、傾向スコアは人によって(というよりLのパターンによって)高かったり(ものすごく曝露を受けやすい)低かったり(ものすごく曝露を受けにくい)します。

なぜこのような条件付き確率をわざわざ計算するのかというと、その昔、偉い人たちが次のようなことを証明したからです。

 L \indep A\ |\ S(l)

これは「傾向スコア S(l)が同じ人集団ではA=1群とA=0群のLの分布が同じ」という意味です。

分布が同じ、というのは例えば男女比が同じ、年齢も高い人と低い人が同じような割合でいるといったニュアンスです。

関連して次のようなことも言えます。

 Y_a \indep A\ |\ S(l)

これは先ほどのconditional exchangeabilityのLが S(l)と入れ替わったものです。

つまり、「Lの値が同じ集団でA=1群とA=0群のフェアな比較ができるなら、傾向スコア S(l)が同じ値の集団でもフェアな比較ができる」という意味です。

この2つの性質は傾向スコアを用いた各手法の比較で非常に重要になるので、覚えておいてください。

これらの性質の画期的なところは、

わざわざ大量のLを条件付けなくても、 S(l)という1つの変数を使うだけで因果推論が可能になる(次元縮約)

という点にあります。

傾向スコアは実際にはわからないので、手持ちのデータから推定することになります。

いくつかポイントを。

  • 具体的には、Lの情報を用いてA=1となる確率をロジスティック回帰を用いて予測するのが一般的
  • つまり Pr(A=1|L)に対するモデルを作成するし、それに対する仮定が必要
  • 機械学習などを使ってもいいが、それは柔軟なモデルを使ってモデルの誤設定リスクを減らしているだけでバイアスの補正が途端に強くなるわけではない
  • そもそも傾向スコアを推定するモデルに含めるべき変数はConditional Exchangeabilityを得るのに必要なL(+非colliderなアウトカムYの予測因子)*1のみ
  • とにかくなんでもAに関連するものをモデルにいれて割付確率 Pr(A=1|L)を精度良く予測すればいいという話ではない

重要なのは、傾向スコアが正しく機能するためには

  1. どのLを条件づければバイアスがなくなるのかがわかっている(Conditional Exchangeabilityの成立条件をドメイン知識に基づき決める)
  2. それらLのデータが(正しく)測定されている

の2条件が必須だということ。

言い換えると、傾向スコアでは、特定&測定されている原因によるバイアス以外は対処できないということです。

この条件は単純に重回帰分析などを用いた因果推論と変わらないので、傾向スコアを使ったからといって魔法のようにバイアスへの対処が強くなるわけではありません。

これ重要なのでご唱和ください。

傾向スコアを使ったからといって魔法のようにバイアスへの対処は強くなりません

とはいえ、対処できるバイアスが重回帰分析と同じであったとしても、なにか別の違いがあるはずと思いますよね。

実はその通りで、傾向スコアを用いた分析が優れている点がいくつかあります。

その辺りは本記事最後の「(アウトカムに対する)重回帰分析との比較」で簡単に解説します。

傾向スコアを用いた手法の比較

さて本題に入ります。

傾向スコアを用いた分析方法として次のものを紹介・比較していきます。

  • マッチング
  • 傾向スコアによる層化
  • アウトカムモデルによる調整
  • 逆確率重み付け

各方法の細かい数理的な議論やRでの実装方法などに踏み込むつもりはありません。

なんとなく「なぜそうすると因果効果を推定できるのか」という雰囲気が理解できればOKです。

それよりも背景にある仮定や結果の解釈について掘り下げていくことが重要だと思っています。

具体的には次のようなポイントを見ていきます。

  • 調整し切れていないバイアス(Residual bias)はあるか
  • 曝露確率の"support"をどのように扱っているか
  • モデルの仮定はあるか
  • どのような問いに答えているか(効果の異質性をどのように扱っているか)

です。

マッチング

おそらく傾向スコアの使い方として最もポピュラーなものは傾向スコアマッチングではないでしょうか?

例えば「マッチングで年齢を補正」というのは、年齢が同じ人でA=0とA=1のペアを作っていくという意味。

最終的に出来上がる、ペアがたくさん集まった集団ではA=0とA=1で年齢の分布が等しくなる(同じ年齢のペアの集まりなのですから当然ですね)ので年齢によるバイアスは取り除くことができる、というロジックです。

ところが前述のように調整すべきLの数が増えると「同じ年齢、性別、教育歴、年収・・・の人」でたくさんの条件が同じペアを見つける必要がでてきますが、そんな人はなかなか見つかりません。

ところが傾向スコアであれば、次元縮約されて1つの変数についてペアを探していけばよいのでやりやすいわけです。

傾向スコアを使って作られたペアたちで構成される集団(matched sample)では、やはりLの分布がA=0とA=1で同じになる(ことが期待される)ので、”フェアな比較”をすることが可能になります。

実際によくやられる手順はこうです。

  1. 傾向スコアが”同じくらい”とみなせる範囲を決める
  2. 各A=1の人の傾向スコアの値に対して、"同じくらい"の傾向スコアを持つA=0の人を(1人もしくは複数名見つけて)ペアを作る
  3. ペアの見つからない人(傾向スコアが極端に大きかったり、小さかったりする人)のデータは除外する

傾向スコアは確率であり0-1の間を連続的に変化する変数ですから、傾向スコアが"全く同じ"ペアを見つけるのは至難の技です。

そこで例えば「傾向スコアの差が0.05より小さければ同じくらいとみなす」といったルールを決めます。

 S(l)=0.25であるA=1に対して、 S(l)=0.29のA=0は「だいたい同じ」としてペア認定しますし、 S(l)=0.32だったら傾向スコアが離れすぎているのでペアとしてしないわけです。

2番目については、別にA=1の人を基準にペアを探していかないといけない決まりはありません。

まあとりあえず「A=1, A=0で傾向スコアが同じくらいの人たちのペアをたくさん作る」と理解しておいてください。

 

Residual Bias

傾向スコアマッチングで肝となるのが、先ほど出てきた「傾向スコアが同じくらい」とみなすルールキャリパーって呼ばれます)決めです。

厳しくしすぎるとペアが決まりませんが、逆に緩すぎても問題が発生します。

例えば「傾向スコアの差が0.05より小さければ同じくらいとみなす」といったルールを考えましょう。

繰り返しになりますが、例えば S(l)=0.25であるA=1に対して S(l)=0.29のA=0はペアとなります。

傾向スコアの性質から

 L \indep A\ |\ S(l)

というのがありました。

傾向スコアが"全く同じ"( = S(l))人のなかではA=1群とA=0群でLの分布が同じ、となるわけですが、このとき S(l)=0.25であるA=1と S(l)=0.29であるA=0でLの分布が等しくなるかどうかは保証されていません。

確かにS(l)の値は近いのでLについても似通った集団であるような気はしますが全く同じわけではないですし、そもそも「近い」という判断自体が恣意的な基準で決められているからです。

例えば、「所得が高い人のほうが治療を受けやすい」という傾向があり、 S(l)=0.29の人は S(l) = 0.25の人より高所得というケースがあるかもしれません。

この時、所得が交絡因子であるならば上記のようなマッチングルールは所得によるバイアスを完全に除去することができない、ということになります。

このように傾向スコアマッチングでは、たとえConditional Exchangeabilityが成立&正しく傾向スコアを推定という条件がそろっていたとしても除ききれていないバイアス(Residual bias)が出てくる可能性があります

曝露確率のSupport

因果推論の重要な仮定の1つにPositivityというものがあります。

要は「Lの層内で曝露(A=1)確率と非曝露(A=0)確率が0でも1でもない」というものです。

言い換えると、「全員が曝露となる」「全員が非曝露となる」みたいなLの層がないということです。

例えば全員がA=0だと比較相手(A=1)がいないので因果効果を推定できない、と言えば納得の条件ですね。

Positivity違反には二種類あります。

まず1つ目は「絶対(非)曝露となるような条件」がある場合で、構造的なpositivity違反と呼ばれます。

例えば「ある検査の数値が〇〇以上の人には絶対この薬を投薬しない」みたいなガイドラインがあるときにその検査の数値をLに含めてしまった場合は構造的なPositivity違反が発生します。

この場合、「数値が〇〇以上の人」の人を除外して「〇〇未満の人における薬の効果を推定」といった具合にクエスチョン自体を変える必要がでてきます

2つ目はサンプルサイズが有限であることから生じるPositivity違反で、Lの層の数が増えれば増えるほど「たまたまA=1(or0)の人しかいない」というケースがでてきます。

例えば1000人(うちA=1が100人)のデータに対して50通りのLの組み合わせを考えると、A=0人しかいない層が50通りのうち1つくらいはでてきそうです(というよりもっとあるでしょう)。

このようなPositivity違反に対して、通常回帰分析ではパラメトリックモデルを用いた外挿(extrapolation)を行なって対応します。

例えばA=0しかいないLの層については、まわりのデータから情報を拝借してその層におけるA=1のひとのアウトカムを予測してあげることで比較対象を無理やりつくってあげるわけです。

傾向スコアを用いると、Positivity違反の可視化が可能です。

例えば曝露群と非曝露群で傾向スコア S(l)が次のように分布していたとしましょう(めんどいのでラフな手書きですいません)。

f:id:KRSK_phs:20200906123238j:plain

傾向スコアの定義を考えれば、A=0群で傾向スコアが小さい、A=1群で傾向スコアが大きいというのはまあ自然な結果ですよね。

ところが各群における傾向スコアの分布の両端を見ると、ペアの存在しない部分があることがわかります。

f:id:KRSK_phs:20200906124040j:plain

このような人たちの存在はPositiviy違反を示唆しますよね。

傾向スコアが重なっていない(=ペアがいない)"off support"な人たちと呼ばれます。

傾向スコアマッチングではこれらの人に対してモデルに依存した外挿を行うのではなく、off-supportを除外した(ペアがいないので)集団で効果推定をするというアプローチでpositivityの問題を克服します。

こうすることでモデルへの依存が少なくなりますが、同時に結果の解釈も変わってきます。これ後ほど。

モデルの仮定

(基本的には)傾向スコアの推定に使う、曝露A(効果を知りたいもの)へのモデルに対する仮定のみです。

マッチング後は単純に曝露群vs非曝露群でアウトカムを比較してあげればよいです。

答えている問い

傾向スコアマッチングでは(ペアのいない)傾向スコアが極端に大きかったり、小さかったりする人たちを分析から除外します。

そのためマッチング後の曝露vs非曝露の比較から推定される効果は「matched sampleにおける効果」であり、除外された人たちを含めた集団における効果はわかりません。

分析の手法によっては「傾向スコアが大きい/小さい人も含めた、集団全体における効果(ATE)」を推定していることが多かったりしますが、傾向スコアマッチングで得られる効果の推定値はそれとは異なります。

ここで「傾向スコアが極端に小さい人たち」における治療効果について少し考えてみましょう。

傾向スコアが小さいということは、例えば医療のコンテクストでは治療を決定している医師によって「治療Aが不要」と考えられている集団なわけです。

「治療Aが不要」と考える理由はいろいろあると思いますが、

  1. そもそもアウトカムのリスクが低いから治療Aが不要
  2. 治療の効き目が悪いから、この治療Aはしない(代わりにBやらCをやる)

1の場合は単純に交絡の話、2はいわゆる効果修飾の問題です。

 

ここでは交絡の可能性はないものとして、2にフォーカスしましょう。

そうすると「傾向スコアが小さい人たち」というのは治療の効き目が悪い人たちなわけですから、「仮にその人たちが治療を受けていたらどうなっていたか」を考えて効果推定をしても、その大きさは小さいはずです。

つまり、そのような人たちを含めた集団全体における効果(ATEの推定値)はそれらの人を除外した集団における効果(傾向スコアマッチングの結果)よりも小さいはずですよね。

そもそも答えている問い(どの集団における効果か?)が異なるので推定値が違うのは自然な話です。

傾向スコアによる層化

個人ごとにペアをみつけてマッチングする代わりに、傾向スコアに基づいて分析対象集団をいくつかのグループに分類する(Stratification)こともあります。

傾向スコアが小さい人たちから大きい人たちまで順番に並べて、各グループの人数が等しくなるように例えば10分割すると、傾向スコアが同じような値の人たちが集まったグループが10個できます。

あとは各グループ内で曝露vs非曝露のアウトカム比較をすれば良いです。

10分割だったら10通りの効果の推定値が出てきますが、これをまとめて1つにすることもあります。

Residual Bias

各グループ内ではいくら傾向スコアが似ているといっても、グループ内でとりうる傾向スコアの値には幅がありますのでマッチングのときと同じようなresidual biasの問題が生じます

層化によるアプローチはすごくシンプルなので実施しやすい反面、マッチングの時(キャリパーの設定)よりも「だいたい同じ」で許容する範囲が広いことが多いため、residual biasも大きくなりそうです。

曝露確率のSupport

マッチングと違って、層化によるアプローチではoff-supportが除外されず、サンプル内のすべての人が分析に使われます。

モデルの仮定

傾向スコアの推定に使う、曝露A(効果を知りたいもの)へのモデルに対する仮定のみです。

傾向スコア推定後は、各層内でA=1 vs A=0のアウトカム比較をするだけなのでアウトカムに対するモデルは特に必要ありません。

答えている問い

「傾向スコア層が同じ人たちにおける介入効果」を推定していることになります。

例えばQ1~Q10といった具合に傾向スコアを10の層にわけたとして、「Q1における効果」「Q2における効果」・・・といった具合に10パターンの効果の推定値がでてきます。

マッチングの説明でも触れたように、「傾向スコアが大きい人と小さい人で効果が一定である」というのはやや厳しい仮定なので、多くの場合これら10個の推定値は大きさが異なります。

Q1~Q10で効果が一定という仮定の元で1つにまとめたり(Mantel-Haenszel)、標準化をするなどして集団全体での計算することは可能です。

アウトカムモデルによる調整

アウトカムに対する回帰モデルで1つ1つの共変量を投入する代わりに、傾向スコアを直接アウトカムモデルに投入するという方法もあります。

 E(Y|A, L1, L2, L3,...) = \beta_0 +\beta_1A + \beta_2L1 + \beta_3L2 + \beta_4L3 + .....

とする代わりに、

 E(Y|A, S(l)) = \gamma_0 + \gamma_1A + \gamma_2S(l)

 と傾向スコア S(l)の条件付けで傾向スコアに対するモデルに含まれた変数によるバイアスを調整することが可能というわけです。

Residual Bias

マッチングや層化とは違って、「傾向スコアが同じくらい」という判断をする恣意的な基準を設けることによって(観測された変数に対して)補正しきれないバイアスが生じることはありません

モデル上は(モデルが正しいという仮定の元で)傾向スコアが全く同じ人同士の比較になりますので。

曝露確率のSupport

Off-supportの人たちも分析に含まれます。

データ上はA=1しかいないような傾向スコアの値に対しても、モデルに対する仮定をおいて外挿をすることでA=1 vs A=0の比較を実現します。

モデルの仮定

傾向スコアを算出するための曝露モデルだけでなく、傾向スコアを予測変数として使用したアウトカムに対するモデルも仮定をおいたうえで設定が必要です。

例えば、上記のモデル

 E(Y|A, S(l)) = \gamma_0 + \gamma_1A + \gamma_2S(l)

 の場合は、アウトカムと傾向スコアS(l)の間に線形性の仮定がおいてあるだけでなく、因子Aの効果が傾向スコアS(l)の値によって変わらないという仮定が置かれています。

線形性の仮定が嫌なら

 E(Y|A, S(l)) = \gamma_0 + \gamma_1A + \gamma_2S(l) + \gamma_3S(l)^2

といったように S(l)に対して非線形のモデルをしてもいいですし、

「効果一定」の仮定が嫌なら

 E(Y|A, S(l)) = \gamma_0 + \gamma_1A + \gamma_2S(l) + \gamma_3A*S(l)

とAとS(l)の掛け算項を追加してもよいですが、モデルの仮定がなくなることはありません。

答えている問い

厳密には「傾向スコアが全く同じ人(S(l)=s)における効果」を推定していることになります。

この効果がS(l)の値によらず一定であるという仮定の元でモデルを組んだ場合は、仮定が正しい時には「 S(l)=sにおける効果」=「全員の効果」になりますので、効果の推定値が1つだけ出てきます。

あるいは S(l)によって異なる効果を推定したあと、 S(l)の分布をもとに標準化で集団全体の効果を推定することも可能です。

逆確率重み付け

逆確率重み付け(Inverse Probability Weighting:IPW)は、傾向スコアを基に作られるウェイトを使って重み付け分析をすることでバイアスに対応する方法です。

具体的なウェイトの計算方法や使い方はここでは詳しく説明しません。

Residual Bias

上記のアウトカムモデルでの使用と同じです。

マッチングや層化とは違って、「傾向スコアが同じくらい」という判断をする恣意的な基準を設けることによって補正しきれないバイアスが生じることはありません。

曝露確率のSupport

Off-supportの人は除外されず分析に入ります。

Off-supportの人たち、つまり傾向スコアが極端に(非曝露群なのに)大きかったり、(曝露群なのに)小さかったりする人たちに対してはウェイトが非常に大きな値をとります

ウェイトが大きすぎると推定が不安定になったりするので、上記のマッチング以外の手法もそうですが傾向スコアの分布の両極端の人たちを分析に除外することもあります。

ただ、その場合マッチングの時と同じように、「誰における効果」を推定しているのかが曖昧になってくる可能性があります

モデルの仮定

基本的には二値の曝露因子に対する因果推論ならば、傾向スコアモデルにおける仮定のみでOKです。

ウェイトを使ってアウトカムモデルをフィットする際には、曝露因子Aのみが必要で、この場合モデルの誤設定のリスクはありません。

もしある変数Vによる効果修飾をみることに関心があればVを追加した(weighted)アウトカムモデルをフィットすることになりますが、Vが二値であればそれでもモデルの誤設定はありません。

Vが連続変数であったり、2つ以上の変数を追加する場合にはアウトカムモデルに対する仮定も発生します。

重要なのは、アウトカムモデルを傾向スコアS(l)で直接調整する場合と違って、「効果が S(l)で一定である」という仮定を置かなくても正しく効果の推定が可能だということです。

なお余談ですが、ウェイトが正しく推定できている(& Conditional Exchangeabilityが満たされている)という仮定のもとで、このweightedアウトカムモデルにおける回帰係数は潜在アウトカムに対するモデルであるMarginal Structural Modelのパラメーターを近似する、という言い方をします。

答えている問い

 「サンプルが代表している集団全体における効果」を推定していることになります。

厳密には重み付けでサブ集団における効果も推定可能ですが、一般的な使い方では集団全体での効果(ATE)を推定しています。

傾向スコアを用いた各手法の比較まとめ

さて、これまでマッチング・層化・アウトカムモデルでの調整・逆確率重み付けという傾向スコアの使い方をみてきました。

まとめると以下のような比較ができると思います。

f:id:KRSK_phs:20200909052842p:plain

細かなモデルの仮定の違いもありますし、上記の分類が当てはまらない例外も当然ありますが、一番大きな違いは各手法でそもそも答えているクエスチョンが異なるという点でしょう。

評価したい要因の効果が一定でない(non-uniform effect)のときには、推論の対象となる集団が異なれば出てくる答えも当然違ってきます。

例えばマッチングと逆確率重み付けで推定値が異なる場合、Residual biasやモデルの仮定の違い以外に、「そもそも傾向スコアの大小で効果が変わりうるか?」「マッチングで除外された両極端の人たちにおける効果は同じか?」といったことを考えて比較する必要があるということです。

集団全体における効果とマッチされた集団における効果のどちらに意味があるか、というのはみている現象次第です。

例えばある集団全体に介入する政策の効果を知りたい場合は前者が良いでしょうし、臨床の現場で医師が治療の是非を判断するような場面で、「実際に治療を受けている人における効果(ATT)」を知りたい場合は後者が良いでしょう。

現場の医師は絶対に治療を適用しないような人たちに無理やり治療を受けさせた時の効果(集団全体での効果:ATE)に関心があるかどうかはケースバイケースです。

傾向スコアと普通の(アウトカム)回帰モデルの比較

復唱していただいたように、傾向スコアを使ったとしても未測定の要因によるバイアスが魔法のように取り除けるわけではありません。

あくまで傾向スコアモデルに含まれた変数でConditional Exchangeabilityが成立するという仮定の元で使える手法なので、バイアス補正という意味では通常の(アウトカムに対する)回帰分析でたくさん変数を調整した時と変わりません

ではなぜわざわざ傾向スコアなんて小難しいものを使うのか?

  • モデルの仮定の違い
  • p-hacking予防
  • positivityチェック
  • レアな二値アウトカム

以上の点がポイントです。

モデルの仮定の違い

通常の回帰ではアウトカムと共変量の間の関係性を正しくモデルする必要があります。

例えば

 E(Y|A, L1, L2, L3,...) = \beta_0 +\beta_1A + \beta_2L1 + \beta_3L2 + \beta_4L3 + .....

だと、AとL1の掛け算項目がないことや、L2が連続変数だったとするとアウトカムとの線形関係などが仮定としておかれます。

それに対して傾向スコアを使った場合は、主に曝露へのモデルに対して仮定をおくことになります。

曝露モデルの方が誤設定が常に少ないというわけではもちろんありませんが、置かれている仮定が質的に異なるため、どちらのモデリングに自信があるかで使い分けると良いと思います。

なお、傾向スコア算出のための曝露モデルについては共変量のバランスを評価することでどれくらいモデルの設定がうまくできているかをみることができるというのも魅力です。

p-hacking予防

傾向スコアによるアプローチではモデルの設定が共変量のバランスがとれているかどうかで決まるため、モデルの設定時にアウトカムのデータを必要としません。

通常の回帰分析ではモデルの設定を変えるたびに、アウトカムとメインの変数の関連が推定されてくるので、自分の仮説通りの結果・有意差が出るまでモデルをこねくり回すことだって可能です。

このような営みはp-hackingと呼ばれ、全く科学的なアプローチではありません。

傾向スコアならバランスがとれた時点でモデルの設定が終了、(モデルフリーもしくは非常に弱い仮定のモデルで)アウトカムを評価するだけという流れになりますのでp-hackingはやりにくくなります。

とはいえその気になればp-hackingをすることは傾向スコアでも可能なので、あくまで予防策の1つにすぎませんね。

positivityチェック

因果推論の重要な仮定の1つであるpositivityについてより積極的に考えることができるのが傾向スコアを用いる強みでもあります。

通常の回帰分析では気づかない(たくさん変数を調整しても、その組み合わせの中にA=0のみ/A=1のみの層があるかどうかをいちいち調べない)positivity違反。

傾向スコアの場合はpositivity violationの可能性は非常に大きな・小さな傾向スコアの推定値という形で現れます

そのような人たちの属性をみていくことで構造的なpositivity違反がないかをexplicitに考えることができるわけです。

見つけにくい仮定違反に意識的になれるというのは良い性質ですね。

レアな二値アウトカム

アウトカムが二値かつ稀&曝露が稀でないというような状況ではアウトカムに対するロジスティック回帰よりも傾向スコアを用いたアプローチの方が良い性質があることがシミュレーションから知られています。

詳しくはこちらの論文をご参照ください。

まとめ

因果推論のためのアプローチとして大変人気な傾向スコアですが、その真の利点を知って使っている人は少ないのではないでしょうか?

やみくもに(アウトカムに対する)回帰分析の代わりの高級な手法として使うのではなくて、その強みを生かした&解釈上の違いを活用した適用をしていきたいですね。

なお今回のまとめは以下の論文を参考にしています。

academic.oup.com

*1:この辺の議論はWhat if本でも読んでください