基礎已經雙重審閱,尚未人工抽查

無母數檢定:Wilcoxon 與 Kruskal-Wallis

Wilcoxon rank-sum 檢定的虛無假設是隨機優勢(stochastic ordering),不是中位數相等——所以「兩組中位數一樣、p 值卻顯著」不是矛盾。還有為什麼只報 p 值不夠、Hodges-Lehmann 位移估計怎麼讀、無母數與取對數估的是不同的量、相同值對精確 p 值的影響,以及 Kruskal-Wallis 之後的兩兩比較。

這個方法在解決什麼問題

「資料看起來不常態,所以我改跑 Wilcoxon」——這是無母數檢定最常見的登場方式, 而它幾乎總是伴隨一個沒有被說出口的誤解:以為 Wilcoxon 是在比中位數

它不是。Wilcoxon rank-sum 檢定(又叫 Mann-Whitney U 檢定)比的是隨機優勢 (stochastic ordering):隨機抽一個 A 組的人、隨機抽一個 B 組的人,前者比後者大的機率是不是二分之一。 寫成式子就是虛無假設 P(X>Y)=1/2P(X > Y) = 1/2。中位數只是分布的一個摘要,而這個機率吃的是整個分布

兩者大部分時候會給出一致的結論,但不是同一件事——而它們分開的時候, 報表上就會出現一組看起來自相矛盾的數字:兩組中位數印在 Table 1 上一模一樣, 底下那個 p 值卻是顯著的。本頁的第二節就是把那個情境完整做出來。

本頁用兩份資料:MASS::birthwt(189 位產婦,結果變項是新生兒出生體重,公克) 與 datasets::sleep(Student 1908 年那份安眠藥資料), 與 t 檢定與變異數分析那一頁用的是同一組變項定義, 所以兩頁的數字可以直接對照。

虛無假設是隨機優勢,不是中位數

下面這組資料是刻意構造出來的,用來示範一件真的會發生的事。 情境是同一種手術在兩家醫院的住院天數(單位是天):

  • 甲院沒有固定的出院流程,每個病人依狀況決定,於是有一條很長的下尾(術後隔天就走的人不少),上方則封在 9 天。
  • 乙院有一套以第七天出院為目標的流程,所以幾乎沒有人在第 6 天以前離開,剩下的變異全部往跑——併發症把少數人留到三、四週。

甲院(30 人):1, 2, 2, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9

乙院(30 人):6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 9, 10, 11, 12, 13, 14, 17, 18, 20, 22, 25

醫院n中位數(天)平均(天)四分位距全距
3076.234.25 到 81 到 9
30710.17 到 11.756 到 25

兩組中位數的差是 0 天——完全相同。 而 Wilcoxon rank-sum 檢定給出 W = 629,p = 0.007。

三格圖。A 為兩家醫院住院天數的對照長條圖,乙院在上、甲院在下,兩者的中位數線都落在第七天,但甲院有很長的下尾、乙院有很長的上尾。B 為兩組的累積分布函數,乙院的曲線始終不高於甲院,兩條線都在第七天跨過 0.5。C 為 900 個跨組配對的比較格圖,多數格子顯示乙院較長。
A:對照長條圖,虛線是兩組共同的中位數。B:累積分布函數——乙院的線從頭到尾都不在甲院之上,這就是隨機優勢的定義;兩條線都在中位數處跨過 0.5,所以中位數相同。C:900 個跨組配對逐一比較,乙院較長的比例是 69.9%。產圖腳本 figures/scripts/B1-04-nonparametric.R

中間那格是重點。乙院的累積分布函數從頭到尾都不高於甲院—— 也就是說,不論你把門檻設在幾天,乙院超過那個門檻的比例都不會比甲院低。 這正是「乙院系統性地比較久」的嚴格意思,而它與「兩組中位數相同」完全相容: 兩條階梯都在第 7 天那一階跨過 0.5。

順帶一提,同一組資料的平均數差是 3.87 天,Welch t 檢定 p < 0.001。 平均數看得見的東西,中位數看不見——右尾那幾個住到三週的病人,正是臨床上最該被看見的人。

把隨機優勢變成一個能報的數字

P(X>Y)P(X > Y) 不必停在抽象的層次,它可以直接估出來:把所有跨組配對拿出來數一遍, 一方較大就記一分,兩者相同就各記半分,除以配對總數。上圖的 C 格畫的就是這件事—— 900 個格子,每一格是一對病人。

構造例的估計值是 0.699,也就是說隨便抓一組甲乙兩院的病人, 乙院那位住得比較久的機率大約是 70%。

真實資料也一樣可以報。birthwt 裡未抽菸與抽菸兩組的出生體重, 這個機率是 0.617——隨機抓一對母嬰,未抽菸那組的嬰兒比較重的機率大約 62%。

它的好處是可以直接講給人聽:「隨機挑一位接受新療法的病人,他的恢復比隨機挑一位接受標準治療的病人好, 機率是七成」,比 p 值有訊息量得多,而且不需要任何分布假設。

只報 p 值不夠:Hodges-Lehmann 位移估計

Wilcoxon 的輸出預設只有一個 p 值,於是很多論文的 Results 就寫成 「中位數 A vs B(p = …)」。這個寫法把兩個不同的東西併在一起: 中位數是各組的摘要,p 值是組間的檢定,中間缺了「差多少、精確度多少」的效果量。

補上那一格的是 Hodges-Lehmann 位移估計:所有跨組配對差值的中位數。 R 的 wilcox.test(conf.int = TRUE) 會一併給出它與信賴區間,單位與原始資料相同。

三格圖。A 為 birthwt 資料中所有跨組配對出生體重差值的直方圖,紅色縱線標出其中位數,也就是 Hodges-Lehmann 估計值。B 為 Hodges-Lehmann 位移估計與 Welch 平均差的 95% 信賴區間並列,兩者同為公克。C 為取對數後 t 檢定得到的幾何平均比值與其信賴區間,橫軸是比值不是公克。
A:8510 個跨組配對差值,紅線是它們的中位數(Hodges-Lehmann 估計)。B:位移估計與平均差都以公克為單位,可以並排讀。C:取對數那條路得到的是幾何平均的比值,橫軸的刻度是倍數,與 B 格不能直接比較。產圖腳本 figures/scripts/B1-04-nonparametric.R

birthwt 的抽菸與否為例,同一個比較有三個不同的數字:

估計量值(公克)95% CI它估的是什麼
兩組中位數之差324.5預設不提供兩個摘要值相減,不是任何檢定的估計對象
Hodges-Lehmann 位移估計306.285 到 512隨機一對跨組個案的差值的中位數
Welch 平均差283.878.6 到 489兩組平均數之差

三個數字都在三百公克上下,但它們不是同一個量。中間那列的定義值得再讀一次: Hodges-Lehmann 估的是「配對差值的中位數」,不是「中位數的差」—— R 的說明文件把後者明白標成常見誤解。這兩者在對稱分布下會很接近,在偏態分布下不會。

實務上的寫法:報「Hodges-Lehmann 位移估計 306.2 公克 (95% CI 85 到 512,Wilcoxon rank-sum p = 0.007)」, 必要時再加上 P(X>Y)P(X > Y) 的估計 0.617。 順帶檢查:直接算 8510 個配對差值的中位數是 307 公克, 與 wilcox.test() 回報的 306.2 公克非常接近,但不是同一個數。 差別來自算法:wilcox.test() 是把檢定反轉、用 uniroot 解出來的, 不是直接取那 8510 個差值的中位數。

無母數還是取對數?兩條路估的對象不同

右偏的變項(住院天數、費用、生物標記濃度)還有第二條路:取對數之後跑 t 檢定。 兩條路都合理,但它們的產出不是同一個量,而論文必須說清楚走的是哪一條。

同一份 birthwt 資料,兩條路的結果是:

分析路線點估計95% CI尺度
Wilcoxon + Hodges-Lehmann306.285 到 512公克(加法的位移)
取對數後 t 檢定1.1011.014 到 1.196倍數(乘法的比值)

第二列的意思是:未抽菸組的幾何平均出生體重(2950.8 公克) 是抽菸組(2679.8 公克)的 1.101 倍, 換算成百分比是高出 10.1%(95% CI 1.4% 到 19.6%), p = 0.022。

差別不只是換算單位而已:

  • 加法的位移假設兩組相差一個固定的量。出生體重適合這樣看——臨床門檻(低出生體重 2500 公克)是加法的,「少 300 公克」對每一個嬰兒的意義大致相同。
  • 乘法的比值假設兩組相差一個固定的倍數。跨越好幾個數量級的量(病毒量、C 反應蛋白、住院費用)適合這樣看——「高 10%」在低值與高值處都成立,而「高 300 單位」在低值處可能是三倍、在高值處微不足道。
  • 取對數的 t 檢定估的是幾何平均的比值,不是算術平均的比值。把對數尺度上的平均數反轉回來得到的是幾何平均,它一定小於或等於算術平均;要主張算術平均要另外處理。
  • 取對數要求所有觀測值為正。有零值時常見的 log(x + 1) 會讓那個常數影響結果,而且比值失去乾淨的解釋。

相同值與精確 p 值

秩檢定的精確 p 值來自「把 N 個觀測值重新分派到兩組」的所有排列。 資料裡出現相同值(ties)時,這些觀測值只能給相同的平均秩,排列的參考分布因此改變。

birthwt 的出生體重記錄到公克,仍然有 131 個相異值分給 189 筆資料, 其中 97 筆與別人共用同一個值,最大的一群有 5 筆。 臨床資料幾乎不可能沒有 ties。

多數教科書寫的是「有 ties 就算不出精確 p 值,軟體會退回常態近似」。 這句話對現在的 R 已經不成立(本頁驗證於 R 4.6.0): wilcox.test() 內建了 Streitberg-Röhmel 移位演算法, 在有 ties 時改用「條件於觀測到的秩」的排列分布,照樣給精確推論。

真正切換預設的是樣本數,不是 ties:兩組都少於 50 筆時走精確法,否則走常態近似。 所以本頁的構造例(每組 30 筆)拿到的是精確 p 值, 而 birthwt 的抽菸比較(115 對 74)拿到的是常態近似。

birthwt 裡出生體重在全體中唯一的那些列抽出來(92 筆,完全沒有 ties), 再把同一批資料四捨五入到最接近的 250 公克—— 也就是病歷回顧實際上能拿到的精度——可以看到 ties 的代價:

同一批 92 筆資料相異值最大同值群W精確 p常態近似 p
記錄到公克(無 ties)92111800.25000.2487
四捨五入到 250 公克171211600.31810.3174

同一批病人、同一個比較,只因為量得比較粗,檢定統計量與 p 值就都動了。 測量精度是分析的一部分,不是資料收集階段結束後就不再影響結果的事。

幾個實務要點:

  • 報軟體與版本。 同一份資料在舊版 R、SPSS、SAS 上可能拿到常態近似而不是精確 p 值,兩者不會完全相同。
  • 連續性校正只影響常態近似那條路。 本頁的抽菸比較有校正時 p = 0.00677,沒有校正時 p = 0.00674;差距通常很小,但 p 值貼著門檻時就不是小事。
  • 不要為了消除 ties 去加隨機擾動。 那等於把答案交給亂數種子。
  • ties 多到某個程度時,該換的是模型不是檢定:結果變項本來就是有序類別(疼痛分級、NYHA 分級)時,有序邏輯迴歸能同時給出效果量與共變項校正。

配對版:Wilcoxon signed-rank

同一個人前後測、同一個人左右眼、配對設計——有一對一的連結就要用配對版本, 理由與 配對 t 檢定完全相同:配對把人與人之間的差異整個消掉。

Wilcoxon signed-rank 檢定的做法是:算出每個人的差值,依絕對值大小排序給秩, 再看正差值的秩和有沒有偏離。用 Student 那份安眠藥資料(10 位受試者各試兩種藥), 每個人的差值是 1.2, 2.4, 1.3, 1.3, 0, 1, 1.8, 0.8, 4.6, 1.4

注意其中有 1 個差值為零的受試者。這在配對資料裡很常見, 而不同軟體的處理方式不一樣:

分析方式統計量點估計(小時)信賴區間p
signed-rank(R 4.6.0 現行做法)V = 541.30.9 到 2.7(實際水準 95.6%)0.0039
signed-rank(丟掉零差值的教科書做法)V = 451.41.1 到 2.95(實際水準 96.5%)0.0039
配對 t 檢定t = 4.061.580.7 到 2.460.0028

兩種零差值處理法在這份資料上給出相同的 p 值,但點估計與區間都不一樣, 而且沒有任何輸出會提醒你剛剛做了一個選擇。有零差值時,把軟體與版本寫進 Methods。

還有一個容易被忽略的細節:上表兩個無母數區間的實際涵蓋水準是 95.6% 與 96.5%,不是剛好 95%。 秩統計量是離散的,能達到的水準只有有限幾個,R 會挑最接近的並如實標出來。

三組以上:Kruskal-Wallis 與事後兩兩比較

Kruskal-Wallis 檢定是 ANOVA 的秩版本:把所有觀測值一起排序,再問各組的平均秩是不是都一樣。 它同樣是一個綜合檢定(omnibus test),顯著只代表「不全相同」,不說是誰跟誰不同。

birthwt 依產婦族群分成三組:

組別n中位數(公克)四分位距平均秩
White9630622584.75 到 3651106.1
Black2628492370.5 到 305777.5
Other6728352313 到 327485.8

綜合檢定的結果是 χ2\chi^2 = 8.52,df = 2,p = 0.014。

接下來的兩兩比較有一個常見的做法是錯的:跑三次 Wilcoxon rank-sum。 問題在於每一次都只拿其中兩組重新排秩,第三組的資訊被丟掉了, 而且各次的參考分布互不相容。正確的做法(Dunn 檢定)是只排一次秩, 用全體樣本算出的變異數去比較各組的平均秩,並且共用同一套 ties 校正。

兩格圖。A 為三個族群分組的出生體重秩散點,橫線標出各組平均秩,白人組的平均秩明顯高於另外兩組。B 為三組兩兩比較的 p 值對數座標圖,空心點是未調整的 p、實心點是 Holm 調整後的 p,虛線標在 0.05;兩個原本落在 0.05 左側的比較調整後都移到右側。
A:檢定實際看到的東西是秩,不是公克;粗橫線是各組平均秩。B:Dunn 兩兩比較,空心點為未調整的 p 值、實心點為 Holm 調整後的 p 值,虛線為 0.05。兩個原本低於 0.05 的比較在調整後都越過了門檻。產圖腳本 figures/scripts/B1-04-nonparametric.R
比較平均秩Dunn z未調整 pHolm 調整後 p
White vs Black106.1 vs 77.52.370.01790.0537
White vs Other106.1 vs 85.82.330.01970.0537
Black vs Other77.5 vs 85.8-0.660.50960.5096

這張表是本節的重點。綜合檢定 p = 0.014 是顯著的, 但三個兩兩比較經 Holm 調整之後沒有一個達到統計顯著。 這不是矛盾,也不代表各組之間沒有差異——只代表這份資料的證據強度不足以在控制家族錯誤率的前提下, 指認出是哪兩組不同。要寫的是「未達統計顯著」,不是「沒有差異」。

幾個實務要點:

  • 事後比較的方法與調整法要事先寫進計畫書。 「所有兩兩比較」與「只比對照組」需要的調整不同,型一錯誤累積的原理見 t 檢定與變異數分析
  • Holm 幾乎總是優於 Bonferroni。 兩者控制的都是家族錯誤率,Holm 是逐步做法,檢定力嚴格較高而假設不變。
  • Kruskal-Wallis 也不是在比中位數。 要把它讀成「位移」需要各組分布形狀相似這個額外假設,和兩組的情況一樣。
  • 有共變項要校正時,秩檢定就不夠用了。 秩檢定沒有校正機制;改用有序邏輯迴歸或對轉換後的變項跑線性迴歸

動手跑一次

library(MASS)
data(birthwt, package = "MASS")

birthwt$smoke_f <- factor(birthwt$smoke, levels = c(0, 1),
                          labels = c("Non-smoker", "Smoker"))
birthwt$race_f  <- factor(birthwt$race, levels = 1:3,
                          labels = c("White", "Black", "Other"))

# 兩組獨立樣本:一定要加 conf.int = TRUE,才拿得到 Hodges-Lehmann 估計
wilcox.test(bwt ~ smoke_f, data = birthwt, conf.int = TRUE)

# P(X > Y):直接數配對,同值各算半分
ns <- birthwt$bwt[birthwt$smoke_f == "Non-smoker"]
sm <- birthwt$bwt[birthwt$smoke_f == "Smoker"]
mean(outer(ns, sm, ">")) + 0.5 * mean(outer(ns, sm, "=="))

# 另一條路:取對數後 t 檢定,得到的是幾何平均的比值
fit <- t.test(log(ns), log(sm))
unname(exp(c(diff(rev(fit$estimate)), fit$conf.int)))

# 配對版。⚠️ R 4.6 起公式介面不接受 paired = TRUE(會直接報錯),
# 要嘛給兩個向量,要嘛用 Pair() 的寫法。
data(sleep)
d1 <- sleep$extra[sleep$group == 1]
d2 <- sleep$extra[sleep$group == 2]
wilcox.test(d2, d1, paired = TRUE, conf.int = TRUE)
wilcox.test(Pair(d2, d1) ~ 1, conf.int = TRUE)   # 等價寫法

# 三組以上
kruskal.test(bwt ~ race_f, data = birthwt)

# Dunn 事後比較:只排一次秩,用全體的變異數,最後做 Holm 調整
r <- rank(birthwt$bwt); N <- length(r); tie <- table(birthwt$bwt)
s2 <- N * (N + 1) / 12 - sum(tie^3 - tie) / (12 * (N - 1))
nn <- tapply(r, birthwt$race_f, length); rb <- tapply(r, birthwt$race_f, mean)
cb <- combn(levels(birthwt$race_f), 2)
z  <- apply(cb, 2, function(k) (rb[[k[1]]] - rb[[k[2]]]) /
                               sqrt(s2 * (1 / nn[[k[1]]] + 1 / nn[[k[2]]])))
data.frame(pair = apply(cb, 2, paste, collapse = " vs "),
           z = round(z, 2),
           p_holm = p.adjust(2 * pnorm(-abs(z)), method = "holm"))

驗證環境:R 4.6.0 + MASS 7.3.65。conf.int = TRUE 不是預設值,但少了它就只有 p 值可報。

常見誤用

誤用為什麼錯
說「Wilcoxon 在比中位數」它檢定的是 P(X>Y)=1/2P(X > Y) = 1/2;中位數相同而檢定顯著是可能的
只報 p 值,效果量寫「中位數 A vs B」中位數之差不是這個檢定的估計對象;該報的是 Hodges-Lehmann 位移估計與其信賴區間
把 Hodges-Lehmann 讀成「中位數的差」它是「差的中位數」,偏態資料下兩者不同
先跑常態性檢定再決定要不要用無母數檢定力隨 n 走向與需求相反,詳見 t 檢定那一頁
資料偏態就自動選無母數,不考慮取對數兩條路估的是位移與比值,該由臨床解釋決定,不是由 p 值決定
把 Hodges-Lehmann 的公克數與幾何平均比值放同一欄比較尺度不同,一個是加法一個是乘法,不可直接比較
三組以上跑三次 Wilcoxon 不調整每次重新排秩丟掉第三組資訊,而且家族錯誤率沒有被控制
綜合檢定顯著就宣稱「各組都不同」Kruskal-Wallis 只說「不全相同」;本頁的例子調整後沒有一組兩兩比較達到顯著
為了消除 ties 對資料加隨機擾動結論會隨亂數種子改變
配對資料有零差值卻不說明處理方式保留與丟棄給出不同的點估計與區間,而輸出不會提醒你
p > 0.05 就說「兩組沒有差異」只能說本研究未偵測到差異;要主張相等需要等效性設計與預設的界限
需要校正共變項時仍用秩檢定秩檢定沒有校正機制,該換成迴歸模型

重跑本頁的所有數字

/opt/homebrew/bin/Rscript figures/scripts/B1-04-nonparametric.R

讀讀看這張圖

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

兩家醫院的住院天數中位數完全相同,中位數差是 0,Wilcoxon rank-sum 檢定卻達到統計顯著。這是哪裡算錯了嗎?

看答案與解析

正確答案: 沒算錯。檢定問的是隨機優勢:隨便抓一組兩院的病人,乙院那位住得比較久的機率是 0.70,而這件事與兩組中位數相同完全相容

Wilcoxon 的虛無假設是隨機優勢,不是中位數相等。乙院的累積分布函數從頭到尾都不高於甲院——不論門檻設在幾天,乙院超過那個門檻的比例都不會比甲院低——而兩條階梯又在同一階跨過一半,所以「乙院系統性地比較久」與「兩組中位數相同」完全相容,0.70 就是把這件事變成一個能報的數字。0.00 這個中位數差是真的,它只是回答了另一個問題。3.87 這個平均數差同樣是真的,而且它看得見中位數看不見的東西:右尾那幾個住到三、四週的病人,正是臨床上最該被看見的人。但把兩個摘要量的分歧當成「算錯」是誤讀,分歧本身才是資訊。反過來說,中位數差很多而 Wilcoxon 未達統計顯著,同樣不是矛盾。

同一份出生體重資料,Wilcoxon 加 Hodges-Lehmann 的點估計是 306.2 公克,取對數後 t 檢定的點估計則是一個倍數。這兩條路能不能互相取代?

看答案與解析

正確答案: 不能。1.1 是幾何平均的比值,量的是倍數;位移估計量的是公克

加法的位移假設兩組相差一個固定的量,乘法的比值假設相差一個固定的倍數。出生體重的臨床門檻是加法的——少三百公克對每一個嬰兒的意義大致相同——所以位移估計講得通。病毒量、C 反應蛋白、住院費用這種跨好幾個數量級的量則相反:高一成在低值與高值處都成立,而高三百單位在低值處可能是三倍、在高值處微不足道。324.5 是兩組中位數的差,它與 306.2 接近不是因為四捨五入,而是因為兩者都在同一個加法尺度上,但定義不同:位移估計是所有跨組配對差值的中位數。10.1 這個百分比是幾何平均比值換算來的,而幾何平均一定小於或等於算術平均,把它乘回算術平均會得到一個沒有人定義過的量;要主張算術平均要另外處理。另外,取對數要求所有觀測值為正,有零值時常見的加一再取對數會讓那個常數影響結果,比值也失去乾淨的解釋。

同一批 92 位產婦(53 位未抽菸、39 位抽菸)的出生體重,記錄到公克時算出來的精確 p 是 0.2500;把同一批資料四捨五入到最接近的 250 公克之後,精確 p 變成 0.3181。為什麼會動?

看答案與解析

正確答案: 四捨五入把 12 筆資料擠進同一個值,相同值只能拿到相同的平均秩,參考分布因此改變

秩檢定的精確 p 值來自「把觀測值重新分派到兩組」的所有排列。出現相同值時那些觀測值只能拿到相同的平均秩,參考分布跟著改變,於是同一批病人、同一個比較,只因為量得比較粗,檢定統計量與 p 值就都動了——四捨五入之後最大的一群有 12 筆共用同一個值。17 個相異值是同一件事的另一種說法,但樣本數並沒有變小,還是那 92 個人,變的是他們能被區分到什麼程度。50 確實是 R 在精確法與常態近似之間切換的門檻,但它看的是每一組的筆數,而 53 已經跨過那條線了——這一批在 R 的預設下走的其實是常態近似,本頁表格裡的精確 p 是腳本顯式指定 exact = TRUE 算出來的,兩種算法的 p 值在同一張表上並列。所以那個選項錯的不是門檻本身,是「四捨五入讓這批資料跨過門檻」這個推論,四捨五入只改變相異值的個數,53 與 39 這兩個組別人數在四捨五入前後完全一樣。順帶一提,不要為了消除相同值去加隨機擾動,那等於把答案交給亂數種子;相同值多到某個程度時,該換的是模型而不是檢定。

安眠藥資料的十位受試者裡有一位差值為零。R 現行做法的 signed-rank 統計量是 54,教科書丟掉零差值的做法是 45,兩者的 p 值相同。這代表兩種做法可以互換嗎?

看答案與解析

正確答案: 不可以。丟掉零差值之後點估計變成 1.40,與現行做法不同,區間也不同,而且沒有任何輸出會提醒你剛剛做了一個選擇

p 值相同不代表結論相同。丟掉零差值之後點估計變成 1.40,與現行做法的點估計不一樣,區間也不一樣,而報表上沒有任何東西提醒你剛剛做了一個選擇——所以有零差值時要把軟體與版本寫進 Methods。1.58 是配對 t 檢定的平均差,它是另一條路上的量:signed-rank 報的點估計叫虛擬中位數,只有在差值分布對稱時才等於差值的中位數,差值本身明顯偏態時,這個檢定就不再是「不需要任何假設」的安全選項。95.60 這個數字也值得看一眼:無母數區間的實際涵蓋水準不是剛好九成五,秩統計量是離散的,能達到的水準只有有限幾個,而兩種零差值處理法達到的水準並不相同。

三個族群的出生體重做 Kruskal-Wallis,p = 0.0141。Dunn 事後比較裡,白人對黑人的未調整 p 是 0.0179、Holm 調整後是 0.0537。這一段該怎麼寫?

看答案與解析

正確答案: 寫調整後的 0.0537,並說明綜合檢定顯著只代表各組不全相同

Kruskal-Wallis 是綜合檢定,顯著只代表各組的平均秩不全相同,不說是誰跟誰不同,所以 0.0141 之後必須做事後比較,而事後比較要調整——「綜合檢定顯著就不必再調整」正是 Fisher’s LSD 的說法,組數超過三組時它保護不了家族錯誤率。調整之後 0.0179 變成 0.0537,落在慣用水準的另一側,而這正是該誠實寫出來的地方:未調整看起來顯著、調整後不顯著,兩個數字都報,讀者才判斷得出來。0.5096 是另外一組比較調整後的 p 值,它不代表整組的錯誤率,Holm 是對每一個比較各自調整,不是取最大值。而未達顯著只能寫成本研究未偵測到差異,不能寫成各組相同。

論文寫「未抽菸組與抽菸組的出生體重,隨機抓一對母嬰、未抽菸那組的嬰兒比較重的機率」,後面接著一個數字。同一段還有 Wilcoxon 的 p 值與 Hodges-Lehmann 位移估計。這個機率回答的是什麼?

看答案與解析

正確答案: 0.617 回答兩組重疊得多嚴重——它就是把組別當金標準、結果變項當預測值時的 ROC 曲線下面積

0.617 是隨機優勢的估計值:把所有跨組配對數一遍,一方較大記一分、兩者相同各記半分,除以配對總數。它等於把組別當金標準、結果變項當預測值時的 ROC 曲線下面積,也就是 c-statistic,把 Wilcoxon 的統計量除以兩組人數的乘積就會得到它。0.007 是同一個檢定的 p 值,它回答「這樣的重疊程度像不像抽樣運氣」,而不是「重疊多嚴重」——樣本數夠大時,一個很接近一半的機率照樣可以得到很小的 p 值。0.699 來自本頁刻意構造出來的教學資料,腳本把它標成假設性資料、不是任何研究的結果,拿它跟真實資料的估計相減,得到的是一個沒有對象的數字。這個量真正的好處是可以直接講給人聽,比 p 值有訊息量得多。

延伸觀看

醫學統計 EP10 t 檢定與非參數法
繁中EDMAN MURMURS· 10 min繁中、專為臨床醫師設計,把 t 檢定與它的無母數替代品放在一起講,適合當本頁的暖身。
醫學統計 EP11 ANOVA
繁中EDMAN MURMURS· 14 min本頁最後一節的 Kruskal-Wallis 是 ANOVA 的秩版本,先看懂 ANOVA 在比什麼會省力很多。

素材來源與授權

本頁為原創內容

回報內容問題

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

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

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

一併送出的資訊

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