專家已經雙重審閱,尚未人工抽查

工具變數

當關鍵的干擾因子根本沒被測量時唯一還有機會的方法、它的三個假設裡有兩個永遠無法用資料驗證、弱工具變數的偏誤會把你拉回原本那個有偏誤的估計,以及孟德爾隨機化為什麼是醫學上最常見的工具變數。

這一頁在解決什麼問題

前三頁——DAG配對加權——全部建立在同一個前提上:干擾因子有被測量到。 DAG 上那些灰色節點,配對與加權完全處理不了;它們只是換一種方式使用你手上已有的變項。

但臨床研究裡最重要的干擾因子往往正是沒被測量的那些:疾病嚴重度的細微差別、醫師對這個病人「感覺不太對」的臨床直覺、病人的健康行為傾向、社經地位。健保資料庫裡有處方、有診斷碼、有檢驗值,沒有醫師為什麼開這個藥

工具變數(instrumental variable, IV)是唯一在這種情況下還有機會的觀察性方法。它的作法不是把干擾因子校正掉,而是繞過去:找一個只影響「有沒有接受治療」、但不透過任何其他路徑影響結果的外在因素,然後只用它造成的那部分變異來估效果。

代價非常高,而且要先講清楚:它的三個關鍵假設裡有兩個永遠無法用資料驗證。 這一頁有一半篇幅在講這件事。

一個臨床場景

模擬的設定是這樣,每一個角色都對應到臨床上真的會遇到的東西:

  • U — 疾病嚴重度,沒有被記錄在任何資料欄位裡。病得比較重的人比較容易被開這個新藥(confounding by indication,適應症干擾),而且結果本來就比較差
  • Z — 病人剛好去了哪一家醫院。各家醫院對這個新藥的積極程度不同(有的科部很早就換上去,有的還在觀望)。這是工具變數。
  • A — 有沒有開始用這個新藥(是/否)
  • Y — 十二週後的症狀分數,越低越好。這個藥的真實效果是把分數降低 2.00 分。
工具變數的 DAG:Z(醫院)指向 A(用藥),A 指向 Y(症狀分數);未測量的 U(嚴重度)同時指向 A 與 Y。另有兩條打叉的虛線,分別代表 Z 直接影響 Y 與 U 影響 Z,兩者都必須不存在。
工具變數的結構。實線是被允許的因果路徑,兩條打叉的虛線是必須不存在的路徑。灰底的 U 代表未測量。整張圖裡只有 Z 到 A 那一條可以用資料檢查。產圖腳本 figures/scripts/B6-04-iv.R

模擬出來的資料確實長成這樣:接受治療與未接受治療的人,嚴重度差了 0.99 個標準差(這就是適應症干擾);而兩家醫院的病人,嚴重度只差 0.022 個標準差(工具變數把嚴重度打平了)。這一組對照就是工具變數的全部希望所在。

三個假設,其中兩個無法驗證

假設白話說法資料檢查得到嗎
1. 相關性(relevance)工具變數真的會影響接不接受治療可以,看第一階段迴歸的 F 統計量
2. 排除限制(exclusion restriction)工具變數只透過治療影響結果,沒有別的路不行
3. 獨立性(independence/exchangeability)工具變數與結果沒有共同原因,也就是工具變數本身不被干擾不行

第一條是唯一可以檢查的。這個模擬裡,去了積極用藥那家醫院的病人有 72.1% 開始用藥,另一家是 37.2%,差距 34.9 個百分點。主案例以 n = 5000 的單次模擬估得第一階段 F = 701。這是一個很強的工具變數。

第二與第三條在任何資料集裡都不可能被證實,因為它們談的是「不存在的路徑」與「未測量的共同原因」——你手上沒有那些變項,所以寫不出一個「通過就代表假設成立」的檢定。

不能被證實不等於無事可做:這兩條可以被反駁。 資料可以拿出與假設不相容的證據,只是拿不出支持假設的證據。最常做的兩種:(1) 按工具變數的值分層,比較已測量共變項的平衡——等於一張 by-instrument 的 Table 1,如果兩層的病人在年齡、共病、疾病嚴重度上就已經不一樣,獨立性當場就有麻煩;(2) negative control outcome——挑一個理論上絕不可能被這個治療影響的結果,如果工具變數對它也「有效果」,那條「只透過治療」的路徑就站不住。這一頁的模擬其實就做了第 (1) 種:上一節「兩家醫院的病人,嚴重度只差 0.022 個標準差」正是這張平衡表的結論。

負對照不只有一種

上面第 (2) 種檢查用的是負對照結果(negative control outcome):一個理論上絕不可能被這個暴露影響的結果。 它還有一個對稱的版本,負對照暴露(negative control exposure):一個理論上絕不可能影響這個結果的暴露。 兩者回答的是同一個問題的兩個方向——「如果我的分析是乾淨的,這裡不該看到東西,那我看到了嗎?」

Lipsitch 等人把它整理成三個要件,缺一個就不算負對照:

  1. 它與真正的結果/暴露共享同一批干擾因子(否則它查不出你在意的那種偏誤)
  2. 它與待測的因果關係之間沒有真正的因果路徑(否則看到關聯是應該的)
  3. 它的測量與選擇機制跟主分析一樣(否則它查不出選擇偏誤與測量誤差)

第 1 條是最容易被忽略也最關鍵的:一個跟主分析毫無共同干擾因子的負對照,通過了也不代表什麼。

一批負對照可以拿來校正

單一個負對照只能給是非題。一批負對照可以做更多事:把數十個真值已知為零的關聯全部估出來, 畫成一個分布,那個分布理應以虛無值為中心。如果它不是,那段偏移量就是殘餘偏誤的估計—— 可以拿它回頭把主分析的 p 值與信賴區間校正得保守一些。這叫 empirical calibration, 是 OHDSI 與 FDA Sentinel 這類大型資料庫藥物安全性研究的標準配備。 ITS 與 DiD 那一頁用模擬把這件事做了一遍,包括校正後信賴區間變寬多少。

還有一個常被略過的第四條,只在治療是二元的時候需要:單調性(monotonicity)——不存在「因為去了積極用藥的醫院,反而不用藥」的人。滿足它的時候,工具變數估到的是 LATE(local average treatment effect,局部平均治療效果),也就是只針對那群「醫院決定了他用不用藥」的病人的效果,不是全體的 ATE。這群人是誰?資料裡認不出來。這是工具變數的估計量最難跟臨床同事解釋的一點。

動手跑一次

只有一個二元工具變數、一個治療時,兩階段最小平方法(2SLS)等同於一個更好懂的東西——Wald 比值

β^IV=YˉZ=1YˉZ=0AˉZ=1AˉZ=0\hat\beta_{\text{IV}} = \frac{\bar{Y}_{Z=1} - \bar{Y}_{Z=0}}{\bar{A}_{Z=1} - \bar{A}_{Z=0}}

分子是「換一家醫院,結果差多少」,分母是「換一家醫院,用藥比例差多少」。用結果的差除以用藥的差——如果換醫院只讓用藥比例差三分之一左右,那結果的差就要放大大約三倍,才是「全部都用藥」的效果。

寫成比值有一個好處:分母小的時候會發生什麼事,一眼就看得到。 那正是弱工具變數問題。

set.seed(20260822)

simulate_cohort <- function(n, alpha_z, direct_z = 0) {
  U <- rnorm(n)                                   # 嚴重度:未測量
  Z <- rbinom(n, 1, 0.5)                          # 醫院:工具變數
  A <- as.integer(-0.4 + alpha_z * Z + 0.9 * U + rnorm(n) > 0)   # 用不用藥
  Y <- -2 * A + 2 * U + direct_z * Z + rnorm(n)   # 真實效果 = -2
  data.frame(U, Z, A, Y)
}
d <- simulate_cohort(5000, alpha_z = 1.2)

# ── 天真的做法:直接比較用藥與不用藥 ────────────────────────────────
summary(lm(Y ~ A, data = d))$coefficients["A", ]

# ── Wald 比值 = 只有一個二元工具時的 2SLS ───────────────────────────
wald <- function(d) {
  (mean(d$Y[d$Z == 1]) - mean(d$Y[d$Z == 0])) /
  (mean(d$A[d$Z == 1]) - mean(d$A[d$Z == 0]))
}
wald(d)

# 完全等價的兩階段寫法(注意:第二階段的標準誤是錯的,要用 bootstrap 或
# 專門套件如 AER::ivreg / ivreg::ivreg 來修)
stage1 <- lm(A ~ Z, data = d)
coef(lm(Y ~ fitted(stage1), data = d))[2]

# ── 第一階段強度:唯一檢查得到的假設 ────────────────────────────────
summary(stage1)$fstatistic[1]        # 慣例:大於 10 才算不弱

# ── 信賴區間:bootstrap 整個流程 ────────────────────────────────────
boot <- replicate(1000, wald(d[sample.int(nrow(d), replace = TRUE), ]))
quantile(boot, c(0.025, 0.975))

# ── 只有模擬做得到的事:把未測量的干擾因子放進模型 ──────────────────
summary(lm(Y ~ A + U, data = d))$coefficients["A", ]

驗證環境:R 4.6.0,base R 即可;2SLS 與 bootstrap 都用內建函式

四個估計,同一份模擬資料(真實效果是 -2.00):

做法估計值95% CI離真值多遠
真實效果(模擬設定值)-2.00
直接比較用藥 vs 不用藥-0.03-0.14 到 0.091.97
工具變數(Wald 比值)-1.77-2.15 到 -1.450.23
把未測量的嚴重度放進模型(只有模擬做得到)-1.99-2.05 到 -1.930.01

第二列是災難:這個藥真的能把症狀分數降低 2.00 分,但直接比較用藥與不用藥的人,估出來的效果是 -0.03——整個效果被適應症干擾抹平了,信賴區間還跨過 0。「這份分析未偵測到這個藥的效果」本身是誠實的陳述;但任何只看這一列的人都會再往前一步、得出「這個藥沒有效果」的結論,而那一步才是錯的

第三列的工具變數估計把它救回來了。第四列是只有模擬才拿得到的答案,用來確認確實是那個未測量的嚴重度在作怪。

弱工具變數

第一個假設是唯一可檢查的,而檢查不通過的後果比想像中嚴重。把工具變數的強度從很弱調到很強,每種強度重複模擬 400 次:

兩張圖。左圖橫軸是第一階段 F 統計量(對數尺度),縱軸是工具變數估計值,六組強度的估計分布;F 很小時估計值散布極廣且中位數靠近 OLS 的水平線,F 大時收斂到真值虛線。右圖橫軸是工具變數對結果的直接效果,縱軸是工具變數估計值,直接效果越大估計越偏離真值。
左:工具變數越弱,估計值不只變得極不穩定,中位數還往有偏誤的那個天真估計靠攏。右:排除限制被破壞時,估計穩定地偏離真值,而第一階段 F 統計量一路都很高——它完全偵測不到這種問題。產圖腳本 figures/scripts/B6-04-iv.R

下表的 F 是另一組重複模擬的中位數,不是主案例那一次的 F。

第一階段 F(中位數;每次 n = 2000,400 次模擬)估計值中位數90% 的模擬落在方向估反的比例
0.6-0.20-24.84 到 19.4049%
1.0-0.75-11.91 到 11.9341%
2.4-1.82-12.43 到 6.2226%
15.7-1.98-4.75 到 -0.174%
85.8-2.01-2.97 到 -1.290%
265.1-2.01-2.56 到 -1.550%

兩件事要看:

第一,弱工具變數的偏誤有方向,而且是往壞的方向。 最弱的那一列,估計值中位數是 -0.20——那不是隨機亂跑,那是往天真估計(模擬裡是 -0.06)靠攏。直覺上原因是:工具變數幾乎不影響治療時,Wald 比值的分母趨近 0,而分子裡任何一點點的殘餘關聯(包括工具變數自己的抽樣雜訊)都會被放大成任意大的數。弱工具變數不會給你一個沒有訊息的答案,它會給你原本那個有偏誤的答案,外加一個看起來很寬容的信賴區間。

第二,「方向估反」在弱的時候是常態。 最弱的那一列有將近一半的模擬把效果的方向估反了。

慣例的門檻是第一階段 F 統計量大於 10。這個數字來自模擬研究,是經驗法則不是定理——上表可以看到 F 在 15 附近時估計已經接近無偏,但 90% 的區間仍然寬得驚人。近年的方法學文獻認為在弱工具變數的情境下 10 太寬鬆,也有專門的弱工具穩健推論方法(例如 Anderson-Rubin 檢定)。該報的是 F 統計量本身,不是「通過了門檻」。

排除限制被破壞的時候

上圖右邊的那張是這一頁最重要的一張。它讓工具變數對結果有一點點直接效果(也就是破壞第二個假設),其他都不變:

Z 對 Y 的直接效果工具變數估計偏誤
0.00-2.01-0.01
0.10-1.670.33
0.25-1.290.71
0.50-0.551.45

一個只有 0.50 的直接效果(相對於治療本身的 2.00,只有四分之一),就把估計從 -2.01 推到 -0.55——效果幾乎消失了

而在這整個過程中,第一階段的 F 統計量一路維持在幾百的水準。沒有任何診斷會亮紅燈。

孟德爾隨機化

醫學上最常見的工具變數是基因型,這種設計叫做孟德爾隨機化(Mendelian randomisation, MR)。

它的邏輯是:一個人從父母那裡拿到哪一個等位基因,在受精那一刻就決定了,而且是隨機的(減數分裂的分離定律)。所以如果某個基因變異會影響你想研究的暴露(比方說 LDL 濃度、BMI、飲酒量),它就滿足第一個假設;而因為它在出生前就固定了,它不可能被後天的生活習慣、社經地位、疾病狀態所影響——第三個假設(獨立性)在這裡有生物學上的理由支撐,而不只是一廂情願。這是 MR 相對於其他工具變數最大的優勢。

三個假設在 MR 語言裡的樣子,以及它們各自的失效模式:

假設MR 的說法這裡的具體威脅
相關性基因變異真的影響暴露單一 SNP 的效果通常很小 → 弱工具變數
排除限制基因只透過這個暴露影響結果多效性(pleiotropy):同一個基因影響好幾種表徵
獨立性基因與結果沒有共同原因族群分層(population stratification):族裔同時決定基因頻率與疾病風險

多效性是 MR 最核心的問題,因為它就是排除限制被破壞——而排除限制無法驗證這件事在這裡一樣成立。實務上的處理是用很多個 SNP 一起做,然後用一系列對多效性較不敏感的估計式(MR-Egger、weighted median、MR-PRESSO)互相對照:如果不同方法給出一致的答案,多效性同時騙過所有方法的機率比較低。但這是三角驗證,不是驗證。

什麼時候該想到工具變數

工具變數不是「更高級的校正」,它是一個在特定條件下才成立的交換。適合它的情境有三個共同特徵:

  1. 最重要的干擾因子確定沒被測量,而且你講得出它是什麼——如果只是「可能還有殘餘干擾」,那用加權加上敏感度分析(E-value 之類)通常更務實
  2. 存在一個講得出物理/制度理由的外在變異來源,而不是在資料裡挑一個「跟治療有關、跟結果無關」的變項——後者是用資料選工具變數,等於用資料驗證一個無法驗證的假設
  3. 樣本夠大,撐得起那個寬三倍的信賴區間

不符合的時候,誠實的作法是把未測量干擾寫進 limitation,而不是硬做一個工具變數分析。目標試驗模擬那一頁的角度也值得一起考慮:很多看起來像「未測量干擾」的問題,其實是設計錯誤(時間零點沒定義、對照組選錯)造成的,那些用設計就能修好。

常見誤用

誤用為什麼錯
說「我們的工具變數通過了所有檢定」只有第一個假設檢查得到,另外兩個邏輯上無法驗證
只報「F 大於 10」不報 F 本身10 是經驗法則不是定理,讀者需要知道實際強度
用弱工具變數還照樣解讀點估計弱工具的偏誤方向是往原本那個有偏的估計靠
在資料裡挑「跟治療相關、跟結果無關」的變項當工具那是用資料驗證一個無法用資料驗證的假設
把工具變數同時當共變項放進迴歸那會抵消掉它唯一的用處,並放大殘餘偏誤
把 IV 估計說成全體母體的 ATE二元治療下它是 LATE,只針對「被工具變數改變決定的人」
手寫兩階段迴歸後直接讀第二階段的標準誤第二階段沒有把第一階段的不確定性算進去,會低估
把 MR 的效果量當成藥物能達到的效果MR 估的是一輩子的暴露差異
MR 只用一種估計式、不做多效性敏感度分析多效性就是排除限制被破壞,而它無法直接驗證
因為 IV 的信賴區間跨過 0 就說治療無效只能說未偵測到差異;IV 的區間本來就寬

重跑本頁的所有數字

/opt/homebrew/bin/Rscript figures/scripts/B6-04-iv.R

讀讀看這張圖

答案取自產生本頁圖表的同一份統計輸出,不是另外打上去的。

模擬設定的真實效果是 -2.00。直接比較用藥與不用藥的人,估出來的是 -0.03,信賴區間跨過零。這一列該怎麼讀?

看答案與解析

正確答案: 工具變數在同一份資料上估到 -1.77,天真估計貼著零是因為適應症干擾把效果抹平了

同一份模擬資料上四個估計並排:真值 -2.00,天真估計 -0.03,工具變數 -1.77,把未測量的嚴重度放進模型(只有模擬做得到)是 -1.99。天真估計的區間確實窄,上界只到 0.09——但那個精確度建立在一個有偏誤的比較上,區間窄不代表答案對,「又窄又跨過零」正是最危險的組合,因為它讓人從「這份分析未偵測到效果」再往前走一步、講成「這個藥沒有效果」。偏掉的原因也不是樣本不夠大:樣本再加下去,只會讓那個錯的答案更精確。真正在作怪的是那個沒被測量的嚴重度,它同時決定誰會被治療與誰會惡化。

工具變數把天真估計救了回來,代價寫在信賴區間的寬度上——而這已經是一個第一階段 F 統計量高達 701 的強工具變數。為什麼還是這麼寬?

看答案與解析

正確答案: 因為兩家醫院的用藥率只差 0.349,Wald 比值要除以它,只有這一小段差異在提供訊息

Wald 比值的分母是「換一家醫院,用藥比例差多少」,這份模擬是 0.349。分子要除以它,所以結果的差被放大將近三倍,而放大的同時雜訊也一起被放大,區間因此變寬。0.721 是分派到那一家醫院那一組的用藥比例,它本身不決定精確度,兩組的差才決定——把它推得更靠近一而另一組不動,差反而變大、估計會更精確,所以「順從得不夠徹底」指錯了地方。0.022 是工具變數與嚴重度之間的標準化差,那麼接近零正是這個工具變數合格的證據,不是它不精確的原因。工具變數用精確度換無偏;樣本數不夠大的時候,它會誠實地告訴你不知道,而那往往比一個精確但有偏的數字有用。

把工具變數調到最弱的那一組,估計值的中位數是 -0.20,而真實效果是 -2.00。這個偏誤往哪個方向去?

看答案與解析

正確答案: 往天真估計去。同一批模擬的天真估計是 -0.06,弱工具變數的估計會往它靠攏

弱工具變數的偏誤有方向,而且是往壞的方向:最弱那一組的估計中位數是 -0.20,而同一批模擬的天真估計是 -0.06——估計被拉回它本來要逃離的那一個。直覺上的原因是 Wald 比值的分母趨近零,分子裡任何一點殘餘關聯(包括工具變數自己的抽樣雜訊)都會被放大成任意大的數。散布確實也很誇張,90% 的模擬落在 -24.84 到很大的正值之間,將近一半把效果的方向估反了;但「散得開」與「有方向」是兩件事,這裡兩件都成立。至於 -1.98,那是工具變數已經相當強的那一組的中位數,估計收斂到真值附近,不是弱的那一組,也沒有比真值更負。

讓工具變數對結果有一點點直接效果,其他都不變。直接效果只有 0.5,相對於治療本身只有四分之一。第一階段 F 統計量會怎麼動?

看答案與解析

正確答案: F 完全不動。直接效果為零時估計是 -2.01,打開直接效果之後估計偏掉,而 F 一路維持在幾百

第一階段 F 衡量的是工具變數與治療的關聯有多強,它跟「工具變數有沒有繞過治療、直接影響結果」毫無關係——排除限制被破壞的整個過程裡,F 一路維持在幾百的水準。直接效果為零時估計是 -2.01,貼著真值;直接效果打開到 0.5 之後估計被推到 -0.55,效果幾乎消失,而這段路上沒有任何一個算得出來的診斷變過臉色。1.45 是那一列的偏誤欄,也就是估計與真值的差,不是任何一個 F 統計量。這就是為什麼「兩個假設無法驗證」不是一句免責聲明:唯一有效的檢查是拿臨床知識去質疑那條不該存在的箭頭,例如那位醫師是不是也在其他方面照顧得比較好、住得遠的人是不是社經地位也不同。

上表裡 F 中位數 15.7 的那一組已經越過了慣例門檻,估計中位數是 -1.98,很接近真值。這一組該報什麼?

看答案與解析

正確答案: 報 F 本身。那一組 90% 的模擬散在 -4.75 到接近零之間,點估計無偏但區間仍然寬得驚人

F 中位數 15.7 那一組的點估計 -1.98 確實已經接近真值,但同一組有 90% 的模擬散在 -4.75 到 -0.17 之間——點估計無偏與估計精確是兩件事,只看上界落在負的那一側,會把「方向大致穩定」讀成「數值可以引用」。慣例門檻來自模擬研究,是經驗法則不是定理,近年的方法學文獻認為它在弱工具變數的情境下太寬鬆,也有專門的弱工具穩健推論方法。最強那一組的 F 中位數 265.06 對應的區間就窄得多,可見門檻之上仍然有實質的差別,「過了就一樣」在同一張表上就被推翻了。所以該報的是 F 統計量本身,不是「通過了門檻」這句話。

模擬印出三個數字:0.990、0.349、0.022。要判斷這個工具變數合不合格,該看哪一個?

看答案與解析

正確答案: 是 0.022 這一個,它量的是工具變數兩組的嚴重度差,接近零才表示工具變數沒有沾到那個干擾

0.022 是工具變數兩組之間的嚴重度差,接近零,而工具變數要合格靠的就是這件事:它與未測量的干擾之間沒有關聯,所以繞得過那個干擾。0.990 不是工具變數兩組的差,它是治療與不治療兩組的差,那正是天真比較會失敗的原因;工具變數如果也長成那樣,它就一點用都沒有,而「抓得住干擾才能校正它」講的是迴歸校正在做的事,不是工具變數在做的事。0.349 也不是嚴重度的差,它是兩組的用藥率差,那是第一階段強度——一個決定精確度,一個決定有沒有偏誤,兩件事不能混成一個「中等最好」的直覺。而這裡有一件事只有模擬做得到:真實研究裡那個干擾因子是未測量的,你根本算不出這張表,只能拿臨床知識去質疑那條不該存在的箭頭。

延伸觀看

INSTRUMENTAL VARIABLE ANALYSES EXPLAINED
ENNienke de Glas, MD PhD· 6 min六分鐘、臨床流病脈絡,是整個清單裡最貼近醫學讀者的一支。
The Logic of Instrumental Variables
ENMod•U (Duke)· 4 min四分鐘講「為什麼繞一圈反而拿得到因果」,讀本頁第二節前先看。
The 3 Instrumental Variables Assumptions
ENMod•U (Duke)· 3 min三分鐘把三個假設逐條講完,正好對應本頁第三節。
Introduction to Instrumental Variables (IV)
ENMarginal Revolution University· 13 min計量經濟脈絡但講得最完整,兩階段最小平方法的推導在這裡。
工具變數 (instrumental variables)
繁中李昱老師· 179 min繁中就只有這一門計量經濟脈絡的工具變數課程,沒有臨床版本。想用中文把數學搞懂的話這是唯一選擇,但例子全部是經濟學的。

素材來源與授權

本頁為原創內容

回報內容問題

這個站的統計內容由 AI 撰寫、AI 互審,人工只做抽查。你看得出來的錯,我們不一定看得出來。

寫得越具體越修得動,例如哪一句話跟哪本教科書/哪篇論文的說法不一致。

留了才回得了信;不留也會看。

一併送出的資訊

這些是自動帶上的,每一項都可以取消。