🚬

未測定交絡の感度解析のためのE-valueとbounding factor (使用例編)

2024/12/01に公開

この記事ではE-valueをどんな感じで使うか、RのEValueパッケージも使いながら紹介します。参考文献は以下です。

  1. VanderWeele, T. J., & Ding, P. (2017). Sensitivity analysis in observational research: introducing the E-value. Annals of internal medicine, 167(4), 268-274. (URL)
  2. Ding, P., & VanderWeele, T. J. (2016). Sensitivity analysis without assumptions. Epidemiology, 27(3), 368-377. (URL)
  3. CRANのEValueパッケージのページ (URL)

E-valueとbounding factorの導出に興味がある人は導出編を参照してください。

導出編のまとめ

論文では、Eが処置、Dがアウトカムなのですが、これがHernán MA, Robins JM (2020). Causal Inference: What Ifの記法で学んだ自分には驚くほど頭に入ってこないので変えます。すみません!

変数 意味
A 処置
Y アウトカム
L 測定済み交絡因子
U 未測定交絡因子
\text{RR}_{AU} AUに対する相対リスク
\text{RR}_{UY} UYに対する相対リスク
\text{RR}_{AY}^{\text{obs}} 観測された、AYに対する相対リスク
\text{RR}_{AY}^{\text{true}} whole populationにおける、AYに対する真の相対リスク

各変数の詳細な定義については導出編を参照してください。bounding factorを次で計算します。

\text{BF}_{U} = \frac{\text{RR}_{AU}\times\text{RR}_{UY}}{\text{RR}_{AU} + \text{RR}_{UY} - 1}

bounding factorを使って次が成り立ちます。

\begin{equation} \text{RR}_{AY}^{\text{true}} \geq \frac{\text{RR}_{AY}^{\text{obs}}}{\text{BF}_U} = \left.\text{RR}_{AY}^{\text{obs}} \right/ \frac{\text{RR}_{AU} \times \text{RR}_{U Y}}{\text{RR}_{AU} + \text{RR}_{U Y} - 1} \end{equation}

(1)式から、\text{RR}_{AY}^{\text{true}}を1まで下げるぐらいの未測定交絡の影響(\text{RR}_{AU}\text{RR}_{U Y}が同じ大きさとする)を考えると、次が成り立ちます。

\begin{equation} \text{RR}_{AU} = \text{RR}_{U Y} \geq \text{RR}_{AY}^{\text{obs}} + \sqrt{ \text{RR}_{AY}^{\text{obs}} \left( \text{RR}_{AY}^{\text{obs}} - 1 \right) } \end{equation}

(2)式の右辺をE-valueと呼びます。

EValueパッケージのインストール

CRANからインストールします。論文の著者がパッケージ開発者に入っています。

install.packages("EValue")

使用例1

EValueパッケージのvignetteの1つのE-values for unmeasured confoundingから。

ある観察研究において、タバコを吸っている人と吸っていない人で肺がんになる確率の比が10.73、すなわち、タバコの肺がんに対する相対リスク(relative risk, RR)が10.73 (95% CI 8.02, 14.36)でした。相対リスクの点推定値が1になる、または相対リスクの信頼区間の下限が1になるには、未測定交絡の影響の大きさがどれぐらい必要でしょうか?これはE-valueを求めることで分かります。

library(EValue)

evalues.RR(est = 10.73, lo = 8.02, hi = 14.36)

結果は次です。

            point    lower upper
RR       10.73000  8.02000 14.36
E-values 20.94777 15.52336    NA

点推定のほうのE-valueは約21になります。つまり次の大きさが必要になります。

  • \text{RR}_{AU}が約21倍
  • \text{RR}_{U Y}が約21倍

すなわち、

  • タバコを吸っている群ではタバコを吸っていない群に比べて、U=1の人が約21倍多く存在する
  • U=1の人はU=0の人に比べて、肺がんになる確率が約21倍高くなる

こういった未測定交絡因子Uが想定できますか?いや想定しにくいでしょう、といった感度解析が可能になります。

この境界線を保ったまま、\text{RR}_{AU}\text{RR}_{U Y}のうち、一方の想定を下げるともう一方の想定が上がる関係になっています。その様子をプロットするには、bias_plot()を使います。

bias_plot(10.73, xmax = 40)

一方を15倍ぐらいに下げると、もう一方は35倍ぐらい必要そうなことが分かります。

使用例2

相対リスクが1より小さくなる方向を考えたい場合にも、そのままevalues.RR()を使えばOKです。

evalues.RR(est = 0.80, lo = 0.71, hi = 0.91)
            point lower    upper
RR       0.800000  0.71 0.910000
E-values 1.809017    NA 1.428571

相対リスク以外のアウトカムの場合

文献[1]のTable 2に近似の方法が書いてあります。ざっくりまとめますと次の表になります。Rの関数も用意されています。

アウトカム 近似方法 使用できるRの関数
レアなオッズ比、ハザード比 アウトカムの発生頻度がレア(<15 \%ぐらい)なら相対リスクで近似できるのでそのまま使う evalues.OR(), evalues.HR()
連続値の比 そのまま使う
レアではないオッズ比 \text{RR} \approx \sqrt{\text{OR}}の近似を使う evalues.OR()
レアではないハザード比 \text{RR} \approx \frac{1 - 0.5^{\sqrt{\text{HR}}}}{1 - 0.5^{\sqrt{1/\text{HR}}}}の近似を使う evalues.HR()
連続値の差 標準化された効果量をd、その標準誤差をs_dとすると、\text{RR} \approx \exp(0.91 \times d)の近似を使う。信頼区間は(\exp(0.91 \times d - 1.78 \times s_d), \exp(0.91 \times d + 1.78 \times s_d)から計算する evalues.OLS()
リスクの差 A=1群とA=0の調整されたリスクをそれぞれp_1,p_0とすると、リスク比p_1/p_0を使う。信頼区間はかなり大変 evalues.RD()

Enjoy!

Discussion