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

異質性:I²、τ² 與預測區間

I² 為什麼會在真實效果差異完全沒變的情況下從五成跳到九成九、Q 檢定不顯著到底能不能當作同質的證據、預測區間為什麼比信賴區間更貼近讀者真正想問的事,以及用 meta-regression 解釋異質性時那個「研究層級的關聯不能推到個人身上」的陷阱。

三個指標,衡量的不是同一件事

論文裡幾乎一定會出現 I²,偶爾出現 τ² 與 Q,很少出現 H²。它們的關係其實是一組恆等式,但它們回答的問題不同

指標定義單位回答什麼
Q各研究對合併值的加權殘差平方和「觀察到的離散程度,比純抽樣誤差該有的多嗎?」——這是個檢定統計量
τ²研究間真實效應的變異數效果量單位的平方(此處是 log RR 的平方)「這些真實效應散得多開?」——這是絕對量
總變異 ÷ 抽樣變異(估法見下方說明)「總離散是抽樣誤差的幾倍?」——下限是 1
研究間變異佔總變異的百分比%「離散有多少比例不是抽樣誤差造成的?」——這是比例

在這 13 篇 BCG 疫苗試驗上:

指標怎麼唸
Q152.2(df = 12, p < 0.001)離散遠超過抽樣誤差可以解釋的程度
τ²0.3132研究間 log RR 的變異數
τ0.560研究間 log RR 的標準差——這個數字比 τ² 好用
12.86總變異是抽樣變異的 12.9 倍
92.2%總變異中約九成不是抽樣誤差

I² 是比例,所以它會被精確度牽著走

這是 I² 最常被誤讀的地方,而且用一個實驗就能講完:把 τ² 釘死在觀察到的值不動,只把每一篇研究的內部變異數乘上一個倍數(等於假想這些試驗收案更多或更少),看 I² 怎麼變。

各研究變異數 × τ²(固定不動)
0.10.3132119.5699.2%
0.250.313248.4297.9%
10.313212.8692.2%
40.31323.9674.8%
100.31322.1954.2%

真實效果的差異從頭到尾一模一樣(τ² 是同一個數字),但 I² 從 54.2% 一路跑到 99.2%。差別只在於各研究測得多準。

Q 檢定不顯著,不等於同質

Q 檢定的虛無假設是「所有研究的真實效果都相同」。它是一個檢定,因此有檢定力的問題——而在統合分析裡,樣本數就是研究篇數 kk,而 kk 通常很小。

用模擬把檢定力畫出來:各研究的內部變異數從這 13 篇實際觀察到的變異數中重抽,真實的 τ² 固定在四個水準,只改變 kk

折線圖,橫軸是研究篇數 3 到 30,縱軸是 Q 檢定達到顯著的模擬百分比。最下方一條接近水平的灰色虛線固定在 5% 顯著水準附近,是沒有異質性的情境;往上兩條分別對應中低程度與中等程度的異質性,都隨篇數緩慢上升,中等程度那條到 30 篇才勉強碰到 80.5%;最上方紅線對應 BCG 資料本身的高異質性,5 篇時已有 75.1%,8 篇是 92.8%。
每個點是 4000 次模擬。灰色虛線是真實 τ² = 0 的情境,穩定落在 5%,說明檢定本身沒壞——它只是在異質性中等、研究又少的時候看不見東西。產圖腳本 figures/scripts/B7-03-heterogeneity.R
研究篇數 ktau2 = 0 (no heterogeneity)I2 about 25%I2 about 50%BCG data (I2 about 92%)
35.2%9.1%14.6%53.4%
54.7%12.0%24.4%75.1%
85.0%16.1%35.0%92.8%
104.9%18.5%42.2%96.4%
154.5%22.9%56.3%99.5%
204.8%27.9%66.8%100.0%
304.3%36.9%80.5%100.0%

在一個真實 I² 約五成的世界裡、納入 10 篇研究,Q 檢定只有 42.2% 的機率達到顯著。也就是說超過一半的時候,作者會看到一個不顯著的 Q,然後寫下「研究之間未發現異質性」——而那是錯的。

預測區間:讀者真正想問的那個問題

信賴區間回答的是「平均效應 μ 在哪裡」。但臨床上想問的往往是另一個問題:「我的下一批病人、下一個中心、下一篇試驗,大概會落在哪裡?」

那個問題的答案是預測區間(prediction interval),它同時納入 μ 的不確定性與效應本身的分散:

μ^±cτ^2+SE(μ^)2\hat{\mu} \pm c \sqrt{\hat{\tau}^2 + \mathrm{SE}(\hat{\mu})^2}

那個分位數 cc 有兩個版本在流通,而且沒有一個是「軟體預設就對」的。 Higgins 等人的原始版本用 tt 分布、自由度 k2k - 2metaforpredict() 預設用常態分位數 1.96。kk 大的時候兩者幾乎一樣,kk 小的時候差很多,所以下表兩個都列——引用預測區間時要說明是哪一個。

在 BCG 資料上,預測區間與信賴區間的差別是決定性的:

區間下界上界跨過 1 嗎
95% 信賴區間(平均效應在哪)0.3440.696
95% 預測區間(下一篇研究會落在哪)——常態分位數,metafor 預設0.1551.549
95% 預測區間——改用 t 分位數,自由度 k − 20.1341.785
森林圖,13 篇 BCG 試驗依效果大小排序,方塊大小代表隨機效應權重。最下方兩列並排放置:藍色菱形是合併估計與其信賴區間,完整落在無效線左側;紅色橫桿是預測區間,明顯往兩側延伸並跨過無效線。
同一個模型的兩個區間。合併 RR 0.489,信賴區間 0.344–0.696 完整落在 1 的左側;預測區間(常態分位數版,圖上畫的就是這一條)0.155–1.549 卻跨過 1。在 log 尺度上,預測區間的寬度是信賴區間的 3.3 倍;改用 t 分位數的話是 3.7 倍。產圖腳本 figures/scripts/B7-03-heterogeneity.R

這句話值得寫清楚:這批試驗的平均而言,BCG 疫苗顯著降低結核發生風險;但依現有證據,在一個新的地點做一次新的試驗,結果落在「未偵測到保護效果」那一側是完全可能的。 兩句話都對,只報第一句就是選擇性呈現。

解釋異質性:meta-regression

異質性的正確處理方式不是把它壓下去,而是問它從哪裡來。BCG 這份資料之所以成為經典教材,正因為它的來源看得見:試驗地點的緯度。

ablat 是各試驗地點的絕對緯度。把它當共變項放進模型:

項目
緯度每增加一度,log RR 改變-0.0291(SE 0.0072, p < 0.001)
換算:緯度每高十度,RR 乘上0.748
R²(被解釋掉的研究間變異)75.6%
殘餘 τ²0.0764(原本 0.3132)
殘餘 I²68.4%(原本 92.2%)
殘餘異質性檢定 QE30.7(p 0.001)
氣泡圖,橫軸是試驗地點的絕對緯度、縱軸是該試驗的 log 相對風險,每個圓圈是一篇試驗、大小代表其權重,並疊上一條明顯向下傾斜的迴歸線與淺色信賴帶。低緯度的試驗集中在 0 附近(未偵測到保護效果),高緯度的試驗多落在明顯負值。有兩篇偏離趨勢線頗遠。
緯度解釋了 75.6% 的研究間變異。一般的解釋是:低緯度地區環境中的非結核分枝桿菌暴露較多,人群已有部分交叉免疫,BCG 能再增加的保護就有限。注意殘餘 I² 仍有 68.4%,緯度沒有把異質性解釋完。產圖腳本 figures/scripts/B7-03-heterogeneity.R

亞組分析:同一件事的粗糙版本

把研究依某個類別變項切開,各自合併,是最常見的異質性探索方式。用 alloc(該試驗怎麼分配受試者)切:

分組k合併 RR95% CIτ²95% 預測區間(常態分位數)
交替分派(alternate)20.5820.335–1.01182.0%0.1330.236–1.435
隨機分派(random)70.3790.221–0.65089.9%0.3930.099–1.449
系統性分派(systematic)40.6540.323–1.32486.4%0.4000.157–2.725

τ² 要與 k 一起讀;例如 交替分派(alternate) 組只有 k = 2,其 τ² = 0.133 只是極不穩定的模型估計,不能當成穩定的絕對異質性結論。

點估計看起來差很多(從 0.379 到 0.654),但組間差異的正式檢定未達統計顯著:QM = 1.77,df = 2,p = 0.413。

生態謬誤:研究層級的關聯不是個人層級的關聯

這是本頁最容易在自己分析裡犯的錯,也是 meta-regression 與亞組分析共有的限制。

上面那條緯度的迴歸線,說的是「試驗的平均緯度越高,該試驗觀察到的疫苗效果越好」。它沒有說「同一個試驗裡,住在比較北邊的那些人接種後保護力比較好」。前者是研究層級(aggregate level)的關聯,後者是個人層級(individual level)的關聯,兩者可以完全不同,甚至方向相反。

臨床上更常見的版本:一篇統合分析發現「平均年齡較高的試驗,治療效果較大」,於是被寫成「老年病人受益較多」。這個推論可能是對的,但這份資料撐不起它——平均年齡高的試驗同時也可能收案更嚴、共病更多、追蹤更久、用藥劑量不同。

動手跑一次

library(metafor)
library(metadat)

data(dat.bcg, package = "metadat")
d <- escalc(measure = "RR", ai = tpos, bi = tneg, ci = cpos, di = cneg,
            data = dat.bcg, slab = paste(author, year, sep = ", "))

res <- rma(yi, vi, data = d, method = "REML")
res                        # I^2, H^2, tau^2, Q 一次全在輸出裡

# 預測區間:predict() 的 pi.lb / pi.ub 兩欄,transf = exp 換回 RR 尺度
predict(res, transf = exp)                       # 預設用常態分位數 1.96
predict(res, transf = exp, pi.type = "riley")    # t(k-2) 版本(Higgins et al. 2009)

# I^2 是比例:把每篇研究的變異數乘上 4,tau^2 釘住不動,看 I^2 掉下來
rma(d$yi, d$vi * 4, method = "DL", tau2 = res$tau2)$I2

# ── meta-regression:用緯度解釋異質性 ──
mr <- rma(yi, vi, mods = ~ ablat, data = d, method = "REML")
mr                         # R^2、殘餘 I^2、殘餘異質性檢定 QE 都在裡面
regplot(mr, xlab = "Absolute latitude", las = 1)   # 氣泡圖

# ── 亞組:組間差異要看 QM,不是比較兩組各自的 p ──
rma(yi, vi, mods = ~ factor(alloc), data = d, method = "REML")

# 想要每組各自的合併值,就逐組跑(並各自看預測區間)
for (lv in levels(factor(dat.bcg$alloc))) {
  r <- rma(yi, vi, data = d, subset = (dat.bcg$alloc == lv), method = "REML")
  print(predict(r, transf = exp))
}

驗證環境:R 4.6.0 + metafor 5.0.1 + metadat 1.6.0

怎麼讀報表

  1. 有沒有同時給 τ²(或 τ)與 I²。 只給 I² 的論文,讀者無法判斷那個「不一致」在臨床上有多大。
  2. 有沒有預測區間。 隨機效應模型只報信賴區間,是漏掉了模型本身在講的那件事。沒有的話,用 τ 自己粗估一下:效應分布的兩個標準差大約是 exp(±2τ) 倍。
  3. Q 不顯著時的用詞。 「no heterogeneity was found」與「no statistically significant heterogeneity was detected」在方法學上是兩句不同的話,後者才對。
  4. 亞組差異有沒有組間檢定。 只列出各組各自的 p 值而沒有 QM,就是「差異之顯著性」謬誤的溫床。
  5. 亞組與 meta-regression 是事先指定還是事後挖出來的。 計畫書(PROSPERO 註冊號)裡有沒有寫,是可以自己去查的。
  6. 有沒有把研究層級的關聯講成病人層級的結論。 看到「老年/女性/重症病人受益較多」,先去確認資料是 IPD 還是研究層級的共變項。

常見誤用

誤用為什麼錯
用固定門檻(25/50/75%)判讀 I²同一個 I² 在不同資料上代表的臨床落差差很多;Cochrane 已明說不要當分界
以 I² 高低描述「效果差異有多大」I² 是比例,受各研究精確度影響;絕對大小要看 τ² 或預測區間
Q 檢定不顯著就寫「沒有異質性」研究數少時檢定力很低;只能寫「未偵測到統計上顯著的異質性」
依 Q 檢定的 p 值決定用固定或隨機效應資料驅動的模型選擇,且靠的是一個檢定力很低的檢定
隨機效應只報信賴區間不報預測區間信賴區間講的是平均,讀者要的是下一篇研究會落在哪
研究數極少仍報預測區間並據以下結論τ² 估不準、區間寬到沒有資訊,且效應分布的常態假設無法檢查
亞組分析比較「哪一組顯著」差異之顯著性謬誤;要看組間的 QM
事後切亞組並當成結論沒有事先指定的亞組是假說,不是發現
meta-regression 塞很多個共變項樣本數是研究篇數;每個共變項至少要有十篇研究撐
把研究層級共變項的關聯講成病人層級的效果修飾生態謬誤;要回答那個問題需要 IPD-MA
異質性高就刪掉離群研究讓 I² 下降這是在用結果決定納入條件,且離群值往往正是資訊最多的那幾篇

重跑本頁的所有數字

/opt/homebrew/bin/Rscript figures/scripts/B7-03-heterogeneity.R

讀讀看這張圖

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

把這 13 篇 BCG 試驗的 τ² 釘死在 0.3132 不動,只把每一篇研究的內部變異數乘上一個倍數,I² 會怎麼變?

看答案與解析

正確答案: 變異數乘到十倍時 I² 掉到 54.25%——研究之間真實效果的差異一個字都沒動,動的只是各研究測得多準

I² 是一個比例:分子是 τ²,分母是 τ² 加上典型的組內變異。分子在這張表裡從頭到尾釘死,分母卻跟著各研究的精確度走,於是同一組真實差異可以顯示成 54.25%,也可以顯示成 99.16%。這導出兩條判讀規則:一群大型精確試驗即使真實差異在臨床上微不足道,I² 也會很高;一群小型不精確的研究即使真實效果天差地遠,I² 也可能不高,因為抽樣誤差把分母撐大了。92.22% 是這批試驗按實際變異數算出來的那一列,它是表上的一格,不是一個固定不動的常數。要回答「差異到底有多大」得看 τ² 或預測區間這種帶單位的絕對量;而低、中、高那組門檻只是一篇方法學文章裡的舉例,Cochrane Handbook 現在明說不要當成分界。

一組模擬顯示:真實 I² 約五成、納入 10 篇研究時,Q 檢定達到顯著的比例只有 42.2%。這對「Q 檢定不顯著,所以改用固定效應模型」這句話說明了什麼?

看答案與解析

正確答案: 說明不顯著只代表這次沒偵測到:異質性再低一階、同樣 10 篇研究時顯著率只剩 18.5%,拿它決定模型等於讓模型被檢定力決定

Q 檢定的樣本數是研究篇數,而研究篇數通常很小。真實 I² 約五成、10 篇研究時它只有 42.2% 的機率顯著,異質性再低一階時只剩 18.5%。所以不顯著的 Q 說的是「這次沒偵測到」,不是「不存在」;拿它做模型選擇會同時犯三個錯——把未偵測到當成不存在、用一個檢定力很低的檢定做決定、讓模型變成資料驅動的。4.9% 是真實 τ² 等於零時的顯著率,那正好落在名目水準上,證明檢定沒有壞,它只是在異質性中等而研究又少的時候看不見東西,這兩件事完全不同。80.5% 是篇數最多那一列的顯著率,即使到了那裡仍有五分之一會漏掉,而多數臨床統合分析根本收不到那麼多篇。正確的講法是「本次分析未偵測到統計上顯著的異質性」,並同時報出 τ² 與預測區間。

同一個隨機效應模型,合併 RR 0.489 的 95% 信賴區間是 0.344 到 0.696,完整落在 1 的左側。為什麼還要另外報一個會跨過 1 的區間?

看答案與解析

正確答案: 因為那是預測區間,回答的是下一個地點做一次新試驗大概落在哪:上界到 1.549,落在未偵測到保護效果那一側是完全可能的

信賴區間回答「平均效應在哪」,預測區間回答「下一篇研究會落在哪」,兩者納入的東西不同:預測區間同時含 τ² 與平均值的標準誤。所以正確的敘述是兩句話——這批試驗的平均而言 BCG 顯著降低結核發生風險,而依現有證據,在一個新地點做一次新試驗、結果落在未偵測到保護效果那一側完全可能,上界 1.549 就是這件事。只報第一句是選擇性呈現。3.270 是預測區間與信賴區間在 log 尺度上的寬度比,它是結果不是理由:預測區間不是把信賴區間放寬的修正版,它回答的是另一個問題。1.785 是改用 t 分位數的上界,兩個版本的差別來自分位數的選擇,引用時該說明用了哪一個,而不是挑比較寬的那個報——挑法本身就是先看結果再決定。

把試驗地點的絕對緯度放進 meta-regression,R² 是 75.6%,殘餘 I² 仍有 68.4%。這個結果撐得起什麼樣的宣稱?

看答案與解析

正確答案: 只撐得起關聯:殘餘 I² 還有 68.39%,而且共變項是觀察來的,年代、菌株、診斷標準都跟著緯度一起變

R² 說的是緯度解釋掉多少研究間變異,它不是因果的證據。共變項是觀察來的、不是隨機分派的:緯度與年代、營養狀態、菌株、診斷標準、研究品質一起變,meta-regression 沒有辦法把它們分開,所以結論永遠是觀察性的、產生假說用的,即使納入的每一篇都是隨機試驗。殘餘 I² 的 68.39% 也提醒緯度沒有把異質性解釋完。第三個選項犯的是生態謬誤:這條迴歸線說的是「試驗的平均緯度越高,該試驗觀察到的效果越好」,不是「同一個試驗裡住在比較北邊的人保護力較好」。要回答個人層級的問題得做個別病人資料的統合分析,在每一篇研究內部估交互作用再合併起來。至於 0.75,那是每高十度的換算值,數字本身沒錯,錯的是把關聯講成因果。而且以這個篇數配一個共變項已經勉強,Cochrane 的經驗規則是每個共變項至少十篇。

亞組分析裡,隨機分派那一組合併 RR 是 0.379、信賴區間不跨 1;系統性分派那一組是 0.654、區間跨 1。可以寫成「只有隨機分派的試驗顯示保護效果」嗎?

看答案與解析

正確答案: 不行。判斷亞組差異要看組間檢定,這裡的組間檢定統計量是 1.768,兩個自由度下未達顯著,兩個獨立檢定的顯不顯著不是差異的檢定

「一組顯著、另一組不顯著」是兩個獨立檢定的比較,不是差異的檢定——這個錯誤有個名字,差異之顯著性謬誤。正確做法只是多看一個數字:組間檢定統計量 1.768,兩個自由度,未達統計顯著,所以這批資料未偵測到分派方式造成的差異。篇數也解釋了為什麼容易誤讀:隨機分派那一組的篇數是另外兩組的好幾倍,篇數少的那組本來就不容易顯著。0.400 是系統性分派那一組的 τ²,它只有四篇研究撐著,這種 τ² 極不穩定,拿它宣告「那是雜訊」等於用一個估不準的量下結論。0.582 是交替分派那一組的 RR,三組的點估計確實排成一個順序,但要把三個點連成趨勢得有組間檢定支持,而它正好不顯著。亞組分析的紀律是事先指定、數量要少、每組要有足夠篇數,並且一定要同時報出組間檢定。

同一個模型報了 I² = 92.22%、τ² = 0.3132、τ = 0.560。要跟臨床同事解釋「這些試驗的結果有多不一致」,哪一個數字最能直接說明?

看答案與解析

正確答案: τ 的 0.56,因為它是 log RR 的標準差,取指數之後就變成「一篇典型偏離平均的試驗,RR 大約是合併值的幾倍」這種醫師聽得懂的話

I² 是比例,會被各研究的精確度牽著走,所以 92.22% 這個數字說不出臨床落差有多大——同一個 I² 在不同資料上對應的實際差異可以差好幾倍。H² 的 12.86 是同一組恆等式的另一種寫法,總變異是抽樣變異的幾倍,它一樣是無單位的相對量,換成倍數並沒有讓它變得可以轉譯。τ 的 0.56 則帶著效果量的單位:它是 log RR 的標準差,取指數之後就直接說出一篇典型偏離平均的試驗,RR 大約是合併值的幾倍或幾分之一。這句話醫師聽得懂,「I² 等於九成」則不然。τ² 的 0.3132 是同一件事的平方,單位是 log RR 的平方,不適合直接唸給人聽。報告時把 τ 或預測區間放在 I² 旁邊,讀者才有辦法判斷那個不一致重不重要。

延伸觀看

統合分析的異質性(Heterogeneity)
繁中杜裕康老師研究室· 11 min繁中談異質性最清楚的一支,台大生統教授親講。讀本頁前兩節之前先看,術語對照可以直接沿用。
What is Heterogeneity?
ENTerry Shaneyfelt· 9 min臨床端視角,把「臨床異質性、方法學異質性、統計異質性」三層分開講——本頁只處理第三層,但決定要不要合併靠的是前兩層。
統合分析異質性和小樣本研究偏誤
繁中杜裕康老師研究室· 10 min接續第一支,把異質性與小研究效應綁在一起談,正好銜接本頁最後一節與 B7-04。

素材來源與授權

本頁為原創內容

回報內容問題

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

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

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

一併送出的資訊

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