データ分析の書記録

読んだ本の内容って忘れてしまいますよね。このブログは分析関係の読んだ本、勉強したことの記録です。

「効果検証入門」:傾向スコアと共変量のバランスについて気になったこと

はじめに

前回はこちら

shinomiya-note.hatenablog.com

傾向スコアの利用

星野本の際にも記事にしましたので、こちらを参考に。 今回は星野本で得られなかったことを記事にしています。

shinomiya-note.hatenablog.com

傾向スコアマッチング

マッチングは基本ATT

ちょっとわかりにくかった。本書の例だと傾向スコア(PS)がタイプAかBか(0か1かの変数)で決まる例なので個の傾向スコアが0.667(Z=1)と0.333(Z=0)の2つです。マッチングは0.667同士、0.333同士で成立しますが、実際の傾向スコアはもっとばらばらになるものです(変数が複数、連続変数等)。

ATTなのはなぜか?Z=1の個人(サンプル)に傾向スコアが近いZ=0の個人(サンプル)をマッチングさせるからです。

f:id:shinomiya_note:20200826143556p:plain:w400
Z=1のPSに近しいZ=0のデータをマッチングさせる。そのためATTになる。

より良い傾向スコア

星野本ではc統計量が0.8以上で臨床系では良しとされる、ということでした。が、それよりも共変量のバランスが重要という見解が時流のようです。バランスを見るには”標準化平均差”が改善し、0.1以下になるかどうか、とのこと。

標準化平均差ASAM?

これ、効果量*1ですね。cohenのdとも呼ばれています。 \begin{align} & d = \frac{| \bar{x}_{t} - \bar{x}_{c} | }{s } \\ \\ & s = \sqrt{ \frac{ n_{t}s^{2}_{t} - n_{c}s^{2}_{c} }{n_{t}+n_{c}} } \end{align}

t = treatment群、c = control群

cobaltパッケージのlove.plotで共変量の調整前後のASAMバランスを見ることができます。
また、試しに自分でも計算してみます。データは本書のこちらから。 github.com

### R ###

## マッチングしたデータでの共変量のバランス
love.plot(m_near,abs=TRUE, threshold = .1)

## 標準化平均差(ASAM) Cohenのd
## ためしにrecencyのASAM(調整前)を計算
summ <- biased_data %>% group_by(treatment)%>% summarise(n=n(), mean=mean(recency), var=var(recency) )
se <- sqrt( (summ$var[1]*summ$n[1] + summ$var[2]*summ$n[2])/(summ$n[1]+summ$n[2]))
m <- (summ$mean[1]-summ$mean[2])
m/se

> m/se
[1] 0.4857875

f:id:shinomiya_note:20200826133121j:plain

love.plot()で計算したUnadjustedのrecencyが0.485位になってますね。
試しにrecencyのASAMを計算してみましたが、これでよさそうです。

IPWの特性

介入グループと非介入グループの傾向の違いが大きい場合IPWの分析結果は信頼しにくくなる
  • IPWのが傾向スコアの逆数で重みづけするという特性上、傾向スコアが非常に小さいと補正が大きくなる
  • 傾向スコアが0.01%ではサンプルが10000倍に水増し

まさに、この図の話ですね。

f:id:shinomiya_note:20200826145008p:plain:w500

ATEとATTはどっちが?

  • 本書のNSWとCPSを合わせたデータセットのような非介入群を別データセットから持ってきた場合、ATTの方が良いかも。
  • 個人的にはATEとATT両方出してみることも良いかも。

*1:臨床では必要な群差としてよく使う。サンプルサイズ設計とか