この記事は、測っていない要因が隠れていたら、出た効果がどこまで持つのかを確かめる回です。年齢や喫煙量など測った背景の変数(共変量)をすべて調整しても、隠れた要因が無いことはデータでは確かめられません。結論を覆すのに要る隠れた要因の強さを測る感度分析と、それを 1 つの数で示す E-value を、禁煙と体重の教材データ nhefs で組み立てます。
登場人物
遠藤顧問: データ分析の社外顧問。答えを言わずに問いで返す/さくら: データアナリスト 1 年目。数字を出すのは速いが、相関を因果と読み違える
1. 1 文で言うと
1 文で言うと
感度分析は、検証できない非交絡性の仮定を「結論を覆すのに必要な隠れた交絡の強さ」に翻訳する道具です。その代表の E-value は、観測されたリスク比から 1 行で計算でき、どの強さの交絡まで結論が持つかを 1 つの数で報告します。
- 今日の数字: 禁煙と体重変化の関連(近似リスク比 1.49)の E-value は 2.35 でした。
2. 今日の問い
今日の問い
非交絡性は検証できない。それはDay 6で身をもって確かめた。隠れた交絡が「あるか、ないか」をデータは教えてくれない。
ならば問いを変えよう。いま見えている効果を丸ごと消し去るには、どれだけ強い隠れ交絡が必要か。それなら計算できるのではないか?
読み終えたら、E-value が何への耐性を表す数かを説明でき、報告での書き方を選べます。
答えは「計算できる」です。式 1 本の手組み(4.1)、実データへの適用(4.2)、E-value が示す強さの交絡を合成データに仕込むオラクル実験(4.3)の順に進みます。前の回から使うのは次の 2 つです。
- Day 6(割付と非交絡性): 共変量 $X$ が同じ人の中では、処置の割付がランダムに見えるという仮定。データからは検証できない
- Day 7(傾向スコアとIPW): 非交絡性を信じたうえで、処置を受ける確率の逆数で重みを付けて効果を推定する。今日の nhefs データもこの回と同じ
3. 概念
先に、手元の道具との違いを置きます。予測モデルなら、検証データで外れ具合を測れば、モデルがどこまで当てになるかを点検できます。交差検証も特徴量重要度も、手元にある列の範囲で答えが出ます。因果推論の非交絡性は、手元に無い列(測っていない要因)についての仮定なので、検証データを足しても点検できません。感度分析は、確かめられない仮定を確かめにいく代わりに、「その列がどれだけ強ければ結論が変わるか」を計算する道具です。
3.1 感度分析:検証できない仮定を、覆すのに必要な強さに翻訳する
Day 7のIPWもDay 8のマッチングも、推定値には「非交絡性が成り立つなら」という但し書きが付いています。この但し書きへの向き合い方は3通りあります。信じて進むか、捨てるか、破れを少しずつ許して結論の壊れ方を測るかです。
仮定を全部捨てるとどうなるかを、Imbens & Rubin 第22章はManskiの**境界(bounds)**で見せます。宝くじ当選が就労に与える効果の分析で、非交絡性を仮定すれば点推定は $-0.134$。ところが仮定を捨てると、二値アウトカム(就労した/しなかったのように0か1で表す結果)の場合、データがどれだけあっても区間は必ず幅1になり、必ずゼロをまたぎます。宝くじデータでは $[-0.56,\ 0.44]$ でした。仮定ゼロの正直さは「ほぼ何も言えない」とセットで返ってくるわけです。
そこで中間の道が感度分析です。Rosenbaum-Rubin流の定式化では「未観測の共変量 $U$ まで条件付ければ非交絡になる」と考え、$U$ が処置・アウトカムと持つ関連の強さを、推定するのではなくダイヤルとして外から振ります。強さゼロなら非交絡性そのもの、無限大ならManski境界に一致します。感度分析はこの両極をつなぐ中間地帯を埋める道具です。
Rosenbaumの $\Gamma$ はその代表で、「同じ $X$ を持つ2人でも、処置を受けるオッズ(起こる確率を起こらない確率で割った比)は最大 $\Gamma$ 倍まで違いうる」と許した上で、結論(p値)が生き残る $\Gamma$ の限界を報告します。宝くじの例では、観測共変量の中で最強のもの相当($\Gamma$ に翻訳して1.12)の隠れ交絡を許すと、p値の上限は0.99まで跳ね、負の効果の証拠は消えます。
3 つの道を 1 枚に並べると Fig 1 のようになります。道①と道②は別々の選択肢に見えますが、感度分析のダイヤルの両端(強さゼロと無限大)にあたります。道③はその間を少しずつ動き、どこで結論が崩れるかを測ります。
3.2 E-value:関連を消し去るのに必要な交絡の最小の強さ
この小節が今日の主役です。前半で E-value の定義と式を読み、後半で式の出どころ(bounding factor)と単位の注意を押さえます。
欲しかったのは、検証できない仮定への耐性を、どの研究でも同じ物差しで比べられる 1 つの数で報告することです。「交絡はあるか」には誰も答えられませんが、「結論を覆すには、隠れた交絡がどれだけ強ければよいか」なら計算できます。その最小の強さを 1 つの数にする式がどう生まれたかを、先に 4 コマで見ておきます。
Rosenbaum-Rubin流は柔軟ですが、パラメータが複数あって報告が重くなります。VanderWeele & Ding (2017) はこれを1つの数字に圧縮しました。その前に、今日ずっと使う物差しを1つ確認します。リスク比 $RR$ とは、処置を受けた群でアウトカムが起きる確率を、受けなかった群での確率で割った値です。1なら関連なし、1.5なら1.5倍起きやすい、と読みます。
E-valueとは、「測定済みの共変量を調整した上でなお残る処置とアウトカムの関連(リスク比 $RR$)を丸ごと説明し去るために、未測定の交絡因子が処置との関連とアウトカムとの関連の両方に持つ必要のある、リスク比スケールの最小の強さ」です。式は1本です。
$$
\text{E-value} = RR + \sqrt{RR \times (RR - 1)}
$$
右辺に入れるのは、手元のデータで観測されたリスク比 $RR$ ひとつだけです。観測された関連が強いほど、それを説明し去るのに必要な交絡も強くなければならず、E-valueは大きくなります。
式は左の E-value からではなく、右辺の $RR$ から、3 つに分けて読みます。
- $RR$ は、処置群と対照群でアウトカムの起こりやすさが何倍違うかです。
- 根号の中は $RR$ と $RR - 1$ の積で、$RR - 1$ は関連のうち「1 を超えた分」、つまり関連なしからのはみ出しです。
- 積の平方根は $RR - 1$ と $RR$ の「あいだ」くらいの大きさになり、それを $RR$ に上乗せするので、E-value は $RR$ より小さくなりません。
つなげると「観測された関連 $RR$ に、$RR$ と $RR - 1$ の積の平方根を足したもの」が、結論を覆すのに要る交絡の最小の強さです。$RR = 1$(関連なし)なら $RR - 1 = 0$ で根号が消え、E-value は 1 になります。
式にしたご利益は、検証できない仮定が、1 つの数で比べられる量になることです。「測っていない交絡があるかもしれない」は誰にも否定できず、議論は水掛け論で終わります。「この結論を覆すには、処置とも結果ともリスク比 2.35 で結びつく交絡が要る」なら、その強さが現実的かどうかを、測れている共変量と見比べて議論できます。ダイヤルを何本も振らなくても、観測された $RR$ を入れるだけで済みます。
隠れ交絡がどこに刺さっている状況を考えているのかを、先に図にしておきます。
背後にはDing & VanderWeele (2016) のbounding factorがあります。隠れ交絡 $U$ が処置と持つ関連を $RR_{EU}$、アウトカムと持つ関連を $RR_{UD}$ とすると、この交絡が作り出せる見かけの関連には上限があります。
$$
B = \frac{RR_{EU} \times RR_{UD}}{RR_{EU} + RR_{UD} - 1}
$$
左辺の $B$ は、隠れ交絡だけで作り出せる見かけの関連の上限です。右辺は2つの関連の積を、和から1を引いた値で割った形になっています。観測された $RR$ のうち、交絡では $B$ までしか説明できません。つまり真の効果は少なくとも $RR / B$ 残ります。2つの関連を同じ値にそろえて $B = RR$ を解くと、上のE-valueの式が出てきます(2次方程式の解です)。片方が弱ければもう片方はより強くなければならず、そのトレードオフの全体像は 4.2 の Fig 5 で確かめます。
単位はリスク比です。回帰係数をそのまま式に入れることはできません。今日のnhefsのような連続アウトカムでは、効果をアウトカムの標準偏差で割った標準化効果量 $d$ に直してから、近似変換 $RR \approx \exp(0.91 \times d)$ を使います。
0.91という係数は、$d$ を対数オッズ比に直すChinn (2000) の近似($\ln OR \approx 1.81 d$)と、まれではないアウトカムでの $RR \approx \sqrt{OR}$ の近似を合わせたものです($1.81 / 2 \approx 0.91$)。信頼区間には、区間の端のうち1に近い側へ同じ式を適用します。区間が1をまたぐならE-valueは1、つまり交絡を持ち出すまでもなく結論はゼロと区別できません。
4. 手を動かす
4.1 E-value を手組みする
式は1本なので、実装は数行で終わります。まず相場観をつかみます。
出力を開く前に予想してください。リスク比 1.5 の関連を丸ごと消すのに要る交絡の強さは、1.5 より大きいでしょうか、小さいでしょうか。
コード
import numpy as np
def evalue(rr):
"""点推定のE-value。rr<1(保護的効果)は逆数にしてから使う。"""
rr = max(rr, 1 / rr)
return rr + np.sqrt(rr * (rr - 1))
for rr in [1.2, 1.5, 2.0, 9.0]:
print("RR = %.1f -> E-value = %.2f" % (rr, evalue(rr)))
出力
RR = 1.2 -> E-value = 1.69
RR = 1.5 -> E-value = 2.37
RR = 2.0 -> E-value = 3.41
RR = 9.0 -> E-value = 17.49
読み方の目安ができました。観測されたリスク比が1.5なら、それを丸ごと消すには処置・アウトカムの両方とリスク比 2.37 で結びつく隠れ交絡が要ります。最後の行は喫煙と肺がんです。リスク比およそ9という強い関連に対し、E-valueは 17.49。1950年代、Cornfieldらは「これを説明し去る隠れ交絡は喫煙と桁違いに強く結びつく何かでなければならず、現実的に考えにくい」と論じて、タバコ論争の流れを変えました。E-valueはこの古典的な議論を、どの研究でも使える1行の計算にしたものといえます。
4.2 nhefsの禁煙効果は E-value 2.35
実データに適用します。データはDay 7と同じ nhefs(NHEFS: 米国の全国健康栄養調査の追跡研究)で、1971〜75年時点で喫煙していた成人を1982年まで追った縦断データです。体重変化(kg)が記録された1,566人について、禁煙した人としなかった人を比べます。年齢や喫煙量などの交絡を回帰で調整し、標準化してリスク比に変換し、E-valueまで一気に計算します。
コード
import numpy as np
import statsmodels.formula.api as smf
from causaldata import nhefs
df = nhefs.load_pandas().data.dropna(subset=["wt82_71"]).copy()
# 禁煙(qsmk)→体重変化(wt82_71)。Hernán & Robins と同じ共変量で回帰調整
f = ("wt82_71 ~ qsmk + sex + race + age + I(age**2) + C(education)"
" + smokeintensity + I(smokeintensity**2) + smokeyrs + I(smokeyrs**2)"
" + C(exercise) + C(active) + wt71 + I(wt71**2)")
m = smf.ols(f, data=df).fit()
b, se = m.params["qsmk"], m.bse["qsmk"]
# 連続アウトカムを標準化し、近似リスク比へ変換(VanderWeele & Ding 2017)
d, se_d = b / df["wt82_71"].std(), se / df["wt82_71"].std()
rr = np.exp(0.91 * d)
rr_lo = np.exp(0.91 * d - 1.78 * se_d) # 1.78 = 0.91 × 1.96
def evalue(rr):
rr = max(rr, 1 / rr)
return rr + np.sqrt(rr * (rr - 1))
naive = df.loc[df.qsmk == 1, "wt82_71"].mean() - df.loc[df.qsmk == 0, "wt82_71"].mean()
print("素朴な差 = %.2f kg" % naive)
print("調整後効果 = %.2f kg (95%%CI [%.2f, %.2f])" % (b, b - 1.96 * se, b + 1.96 * se))
print("標準化 d = %.2f -> 近似リスク比 RR = %.2f (CI下限 %.2f)" % (d, rr, rr_lo))
print("E-value: 点推定 %.2f / 信頼区間下限 %.2f" % (evalue(rr), evalue(rr_lo)))
出力
素朴な差 = 2.54 kg
調整後効果 = 3.46 kg (95%CI [2.60, 4.32])
標準化 d = 0.44 -> 近似リスク比 RR = 1.49 (CI下限 1.35)
E-value: 点推定 2.35 / 信頼区間下限 2.04
まず素朴な差2.54kgが調整後に 3.46kg へ増えている点が面白いところです。禁煙した人は年齢が高めで、年齢が高いほど体重は増えにくいため、この例の交絡は効果を「隠す」方向に働いていました。調整後の3.46kgは標準化すると $d = 0.44$、近似リスク比で 1.49 です。
E-valueの読み方はこうです。年齢・性別・喫煙量など測った共変量をすべて調整した上でなお、禁煙とも体重変化とも、それぞれリスク比2.35以上で結びつく未測定の交絡因子が存在しない限り、この3.46kgをゼロにはできません。信頼区間の下限まで消すだけなら、必要な強さは 2.04 に下がります。点推定と信頼区間下限の両方を報告するのが作法です。
この2.35が「強い」のか「すぐ超えられる」のかは、測れている共変量をものさしにして判断します。Imbens & Rubin 第22章(Imbens 2003に遡る作法)は、観測済み共変量が処置・アウトカムと持つ関連の強さを計算し、隠れ交絡がそれを超えると考えるべき理由があるかを問います。もし手元の最強の共変量でもリスク比2に届かないなら、2.35の隠れ交絡は「観測されたどの要因よりも強い何か」を意味します。とはいえ、2.35が現場感覚としてどれくらい高いハードルなのかは、自分にはまだ確かな相場観がありません。ここは事例を見た数だけ精度が上がる部分だと思っています。
下の Fig 5 が、3.2 で述べたトレードオフの全体像です。境界曲線より上の強さの組み合わせなら1.49を丸ごと説明でき、曲線の下では必ず効果が残ります。片方の関連が4あるなら、もう片方は1.8で足りますが、両方を同じ強さにするなら2.35が最小です。それが対角線との交点、すなわちE-valueです。
4.3 E-valueが示す強さの交絡を、本当に仕込んでみる
E-valueが2.35だと言われても、「強さ2.35の交絡が効果を消す」を実感するのは難しいものです。そこでオラクル実験です。オラクルとは答えを知っている立場のことで、隠れ交絡 $U$ の正体も真の効果も自分で決めてデータを作り、あとで答え合わせをします。E-valueの土俵であるリスク比の世界で二値アウトカムの合成データを作り、観測される関連がnhefsと同じ1.49になるように、真の効果と交絡の配合だけを変えた2つの世界を用意します。世界Aは真の効果ゼロで、E-valueを超える強さ2.5の交絡 $U$ がすべてを作る世界。世界Bは強さ1.5の弱い交絡しかない世界です。私たちはオラクルなので、本来観測できない $U$ で調整して答え合わせができます。
出力を開く前に予想してください。隠れた交絡 $U$ で調整したあと、強さ 2.5 の世界 A のリスク比はいくつになるでしょうか。強さ 1.5 の世界 B ではどうでしょうか。
コード
import numpy as np
def mh_rr(e, y, u):
"""層別(Mantel-Haenszel)リスク比。Uの層の中で比べてから集計する。"""
num = den = 0.0
for k in (0, 1):
m = u == k
n1, n0 = (e[m] == 1).sum(), (e[m] == 0).sum()
if n1 == 0 or n0 == 0:
continue
num += y[m & (e == 1)].sum() * n0 / m.sum()
den += y[m & (e == 0)].sum() * n1 / m.sum()
return num / den
rng = np.random.default_rng(9)
N, p0, target = 1_000_000, 0.10, 1.49 # 観測される関連を nhefs の近似RR 1.49 にそろえる
# 世界A: 真の効果はゼロ。強さ2.5(E-value 2.35 超え)の隠れ交絡Uだけで1.49を作る
s = 2.5
pi1 = s * (target - 1) / ((s - 1) * (s - target)) # 観測RRが1.49になるUの配置を逆算
e = rng.binomial(1, 0.5, N)
u = rng.binomial(1, np.where(e == 1, pi1, pi1 / s)) # Uの保有率の比 RR_EU = 2.5
y = rng.binomial(1, p0 * s**u) # RR_UD = 2.5。eは式に無い=効果ゼロ
print("世界Aの配置: 処置群の%.0f%%、対照群の%.0f%%がUを持つ" % (100 * pi1, 100 * pi1 / s))
print("世界A(真の効果1.00・交絡2.5): 素朴RR = %.2f -> U調整後 = %.2f"
% (y[e == 1].mean() / y[e == 0].mean(), mh_rr(e, y, u)))
# 世界B: 弱い交絡(強さ1.5 < E-value)。観測1.49には本物の効果が必要になる
s2, pi1b = 1.5, 0.8
fab = (1 + (s2 - 1) * pi1b) / (1 + (s2 - 1) * pi1b / s2) # 交絡が作れる見かけ = 1.11
rr_true = target / fab # 足りない分は本物の効果 = 1.35
e2 = rng.binomial(1, 0.5, N)
u2 = rng.binomial(1, np.where(e2 == 1, pi1b, pi1b / s2))
y2 = rng.binomial(1, p0 * s2**u2 * rr_true**e2)
print("世界B(真の効果%.2f・交絡1.5): 素朴RR = %.2f -> U調整後 = %.2f"
% (rr_true, y2[e2 == 1].mean() / y2[e2 == 0].mean(), mh_rr(e2, y2, u2)))
出力
世界Aの配置: 処置群の81%、対照群の32%がUを持つ
世界A(真の効果1.00・交絡2.5): 素朴RR = 1.49 -> U調整後 = 1.00
世界B(真の効果1.35・交絡1.5): 素朴RR = 1.49 -> U調整後 = 1.35
世界Aでは、処置群の81%・対照群の32%が $U$ を持つという配置で、真の効果がゼロなのに観測リスク比1.49が出現します。$U$ で層別調整すると 1.00、効果は跡形もなく消えました。E-valueを超える強さの交絡は、観測された関連を本当に丸ごと作れるのです。ちなみに強さをちょうどE-valueの2.35にすると、1.49を作るには「処置群は全員 $U$ を持つ」という極端な配置まで必要になります。E-valueが「最も不利な配置を許したときの最小の強さ」だという意味がここに表れています。
世界Bは対照的です。強さ1.5の交絡が作れる見かけの関連は、bounding factorの上限でも $B = 1.5^2 / (2 \times 1.5 - 1) = 1.13$ 止まりです。観測された1.49と整合するには本物の効果が少なくとも1.32必要で、実際この世界では真の効果 1.35 を仕込まないと1.49になりませんでした。$U$ 調整後も1.35がそのまま残ります。E-value未満の交絡は、配置をどう選んでも結論を消せません。下の Fig 6 では、E-value 2.35 を観測された比 1.49 と同じ物差しに置き、この2つの世界の結果を読み方の欄にまとめています。
成り立つ場合と成り立たない場合
| 隠れた交絡の強さ | オラクル実験で出た数字 | E-value 2.35 の読み方 |
|---|---|---|
| E-value 未満(世界 B・強さ 1.5) | 素朴 1.49、$U$ 調整後 1.35 | 配置をどう選んでも効果は消えない。「結論は持つ」と書ける側 |
| E-value 超(世界 A・強さ 2.5) | 素朴 1.49、$U$ 調整後 1.00 | 配置しだいで効果が丸ごと消える。「覆りうる」と書く側 |
5. 判断の基準
E-value を添えて推定値を報告するとき、何を確かめ、どう書くか。軸は「どの強さの交絡まで結論が持つか」を報告する姿勢です。問いを 3 つに絞りました。上から順にたどり、最初に右へ出たところが、いまやることです。
- Q1 は仮定の話で、データからは検証できません。 E-value が測るのは「測った共変量を調整した上でなお残る関連」への耐性なので、測れる交絡を入れ忘れたまま計算しても意味がありません。感度分析は仮定の身代わりではなく、報告の作法です。E-value を書いても非交絡性の仮定が不要になるわけではなく、仮定そのものを図として宣言し、何を調整すべきかを設計するのは、Phase 2 の DAG(Day 10 から)の仕事です。
- Q2 は測れている共変量をものさしにします。 Imbens & Rubin 第22章の作法で、観測済み共変量が処置・アウトカムと持つ関連の強さを計算し、E-value と比べます。手元の最強の共変量でもリスク比 2 に届かないなら、2.35 の隠れ交絡は「観測されたどの要因よりも強い何か」を意味します。比べるときは単位をそろえ、回帰係数やオッズ比はリスク比に直してから使います。
- Q3 は領域の知識で答えます。 E-value 以上の強さで処置とも結果とも結びつく要因を具体的に挙げられるなら、結論は「覆りうる」と書きます。ただし E-value は最悪の配置を想定した計算なので、同じ強さの交絡が実在しても、配置しだいでは結論は覆りません(4.3 では、ちょうど 2.35 の強さだと処置群の全員が $U$ を持つ配置まで要りました)。保証があるのは逆方向、「E-value 未満の強さでは決して覆せない」の側です。
注記 連続アウトカムの $RR \approx \exp(0.91 \times d)$ も、まれではないアウトカムでのオッズ比の $\sqrt{OR}$ も近似です。変換がどれも近似なので、E-value の小数第 2 位を細かく議論するのは精度の過信です。
自分の仕事に当てるなら、次の問いから始められます。いま報告している効果のうち、測っていない要因を 1 つ具体的に挙げられるものはどれでしょうか。その要因は、測れている最強の共変量より強く、処置とも結果とも結びつきそうでしょうか。
6. 確認問題
問 1(自分の言葉で説明する) E-value 2.35 が何を表す数かと、そこから言えないことを、本文を見ずに 2 文で説明してください。
答えと解説
模範解答: E-value 2.35 は、測った共変量を調整したあとに残る関連を丸ごと消すのに、未測定の交絡が処置とも結果とも持つ必要のある、リスク比の最小の強さです。交絡が無いことの証明ではなく、その強さの交絡が実在しそうかは、測れている共変量の強さと領域の知識で判断します。
次の 2 点のどちらかが抜けたら不十分です。
- 処置と結果の両方との関連の強さであること(効果の大きさではない)
- 交絡が無いことの証明ではないこと(測定誤差や選択バイアスへの耐性でもない)
詰まったら 3.2 の前半に戻ってください。
問 2(別の場面へ移す) ある通販サイトで、会員プログラムへの加入と 1 年後の継続を調べました。測った共変量を調整したあとのリスク比は 1.2 で、E-value は 1.69 です。測れている共変量のうち最強の「利用歴の長さ」は、加入とも継続ともリスク比 2.0 で結びついていました。報告として最も適切なものはどれでしょうか。
- ア E-value が 1 を超えているので、未測定の交絡では結論は覆らないと書く
- イ E-value 1.69 は、測れている最強の共変量の 2.0 より小さい。同じくらいの強さの未測定の要因が 1 つあれば覆りうると書く
- ウ リスク比 1.2 は小さいので、加入の効果は無いと書く
- エ E-value が 1.69 なので、加入で継続は 1.69 倍になると書く
答えと解説
イ。5 の Q2 の当てはめです。E-value は、測れている共変量の強さをものさしにして読みます。手元の最強の共変量が E-value を上回っているなら、同じくらい強い未測定の要因を想定するのは無理のない話で、結論は「覆りうる」と書きます。
- ア(合否スタンプで読む読み違い): リスク比が 1 でない限り、E-value は必ず 1 を超えます。1 を超えたことに意味はなく、何と比べて大きいかを見ます。
- ウ(覆りやすさを効果なしと読む読み違い): E-value が小さいのは「弱い交絡でも覆りうる」という意味で、効果が無い証拠ではありません。
- エ(交絡の強さを効果の大きさと読む読み違い): 1.69 は結論を覆すのに要る交絡の強さです。効果のリスク比は 1.2 です。
問 3(出力を読む) 4.3 のオラクル実験で、次の出力を得ました。正しい読み方はどれでしょうか。
世界A(真の効果1.00・交絡2.5): 素朴RR = 1.49 -> U調整後 = 1.00
世界B(真の効果1.35・交絡1.5): 素朴RR = 1.49 -> U調整後 = 1.35
- ア 観測される素朴な RR が同じ 1.49 でも、隠れた交絡の強さしだいで真の効果はゼロにも 1.35 にもなりうる。E-value 2.35 未満の強さ 1.5 では効果を消せない
- イ 素朴な RR が同じなので、2 つの世界の真の効果は同じである
- ウ 世界 B の交絡は E-value より弱いので、世界 B に効果は無い
- エ 世界 A の交絡は E-value を超えているので、どんな配置でも必ず効果を消す
答えと解説
ア。データから見える素朴な RR は 2 つの世界で同じ 1.49 ですが、真の効果は 1.00 と 1.35 で違います。観測データだけでは 2 つの世界を区別できないので、「どの強さの交絡までなら結論が持つか」を報告します。
- イ(見える数字が同じなら効果も同じという読み違い): 素朴な RR が同じでも、交絡の配合が違えば真の効果は違います。
- ウ(交絡の弱さを効果の無さと取り違える読み違い): 逆です。弱い交絡では 1.49 を作りきれないので、世界 B には本物の効果 1.35 が要りました。
- エ(E-value を超えたら必ず消えるという読み違い): E-value を超える強さでも、効果を消すには特定の配置が要ります(世界 A は処置群の 81%・対照群の 32% が $U$ を持つ配置)。保証があるのは「E-value 未満では消せない」の側です。
7. おわりに
感度分析は、検証できない非交絡性の仮定を「結論を覆すのに必要な隠れた交絡の強さ」に翻訳する道具です。その代表の E-value は、観測されたリスク比から 1 行で計算でき、どの強さの交絡まで結論が持つかを 1 つの数で報告します。検証できない仮定は、信じるか捨てるかの二択にしなくて構いません。E-value は測れている共変量の強さと見比べて読みます。交絡が無いことの証明ではなく、耐性の報告です。最後に確かめます。E-value 2.35 が何を表す数かと、そこから言えないことを、本文を見ずに 2 文で言えますか。詰まったら 3.2 の前半に戻ってください。
8. 参考(本棚)
- Imbens & Rubin『Causal Inference for Statistics, Social, and Biomedical Sciences』第22章 感度分析と境界。Manski境界とRosenbaum-Rubin感度分析、観測共変量をものさしにする作法。今日の下敷き
- VanderWeele & Ding (2017) Sensitivity Analysis in Observational Research: Introducing the E-Value. Annals of Internal Medicine 167(4)。E-valueの原典。連続アウトカムの変換表もこの論文
- Ding & VanderWeele (2016) Sensitivity Analysis Without Assumptions. Epidemiology 27(3)。bounding factorの導出。E-valueの数学的土台
- Hernán & Robins『Causal Inference: What If』。nhefsデータの出典。禁煙と体重変化の定番教材
- データ: NHEFS(NHANES I Epidemiologic Followup Study の教材版)。
causaldataパッケージ(MITライセンス)経由で取得(2026-08-15)。図と数値はすべて本文コードとシード固定で再現できます
この記事の位置づけ
因果推論を「本を読んだ」で終わらせず、自分の言葉で説明でき、コードで再現できる状態まで落とす 30 日連載の Day 9 です。
図は縦が分析の工程、横が流派です。この記事は「④ 検証して報告する(仮定の耐性と見せ方)」の、Rubin流(割付を疑う)の「感度分析」を扱います(図の黒い札)。前提になるのは Day 6(割付と非交絡性)・Day 7(傾向スコアとIPW)。ここで覚える考え方や道具は Day 13(フロントドア)・Day 27(落とし穴チェックリスト) で再登場します。
9. 次回予告(Day 10)
Day 10(DAGの読み方)
Phase 1はこれで一区切りです。潜在的結果から始まり、RCT、非交絡性、傾向スコア、マッチング、そして今日の感度分析まで、「仮定を信じて推定し、仮定への耐性を測って報告する」一連の流れがそろいました。ただここまで、肝心の「どの変数を調整すべきか」は素朴な直感に頼ってきました。次回からのPhase 2では、因果の仮定そのものを1枚の図に描く言語、**DAG(有向非巡回グラフ)**に入ります。Day 1の疑似相関や合流点の罠が、実は3つの基本パターンとして再登場します。調整してよい変数といけない変数を、勘ではなく規則で見分ける準備です。

















