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

切點選擇與兩條 ROC 的比較

Youden index 挑出來的「最佳切點」隱含一個幾乎不成立的假設——一個百分點的敏感度與一個百分點的特異度等價,而這等於把隱含的門檻機率釘在挑切點那個世代的盛行率上;而且它是在同一份資料上挑的,因此樂觀。這一頁用 bootstrap 把樂觀量出來、把代價比拉高看切點怎麼崩掉,接著用配對 DeLong 檢定比較兩個標記,並示範一個常見的誤解:配對不一定比較有力;最後把比較限縮到高特異度那一段(部分 AUC),在同一批病人身上得到與整條曲線不同的結論。

「最佳切點」這四個字裡藏了什麼

ROC 曲線上的每一點都是一組敏感度與特異度的取捨。要把連續的檢驗值變成臨床上可以執行的規則,總得挑一點。

問題是「最佳」這兩個字沒有內建的定義。挑點需要兩樣資料以外的資訊:

  1. 偽陽性與偽陰性各自的代價是多少(漏掉一個病人 vs 多做一次侵入性檢查)
  2. 這個規則會被用在檢驗前機率多少的族群上

實務上最常見的做法——Youden index——把這兩件事都用預設值悄悄填掉了。這一頁就是把那些預設值挖出來看。

Youden index

Youden index 的定義是:

J=sensitivity+specificity1J = \text{sensitivity} + \text{specificity} - 1

幾何上它是 ROC 曲線上某點與對角線的垂直距離,範圍是 0(毫無資訊)到 1(完美)。所謂 Youden 最佳切點,就是讓 JJ 最大的那一點。

pROC::aSAH 的 S100β 上:

切點(µg/L)敏感度特異度JPPV(本世代盛行率 36.3%)NPV(本世代盛行率 36.3%)
0.20563.4%80.6%0.439765.0%79.5%

pROC 報的切點是兩個相鄰觀測值的中點,所以會看到資料裡不存在的小數:0.205 µg/L。 這份資料沒有任何一位病人的 S100β 落在本家族前幾頁那個先訂好的 0.20 µg/L 與 0.205 µg/L 之間, 所以那個較粗的 0.20 µg/L 切點在這裡剛好給出同一組敏感度與特異度——兩者是不同的數,只是在這份資料上把同一批人分到同一邊。)

折線圖,橫軸是切點取對數、縱軸是 Youden index;曲線在中段有一個不算尖銳的高峰,峰頂附近有一塊陰影標出所有距離最大值 0.05 以內的切點。
Youden index 隨切點的變化。峰頂附近相當平坦:陰影帶裡的每一個切點,J 值與最大值的差距都在 0.05 以內。「最佳切點」其實是一段區間,不是一個點。產圖腳本 figures/scripts/B4-05-cutoff.R

峰頂平坦這件事有實際後果:距離最大值 0.05 以內的切點共有 6 個, 分布在 0.175 到 0.245 µg/L 之間; 在這個範圍裡,敏感度從 58.5% 到 63.4%,特異度從 76.4% 到 81.9%。 把小數點後三位的那個「最佳」切點寫進臨床指引,是在報告資料裡沒有的精確度。

依代價選切點,以及它會怎麼崩掉

把代價放進來的標準做法是最大化加權的版本:

Jw=sensitivity+1r1prevprevspecificityJ_w = \text{sensitivity} + \frac{1}{r} \cdot \frac{1 - \text{prev}}{\text{prev}} \cdot \text{specificity}

其中 rr 是「漏掉一個病人的代價 ÷ 一個偽陽性的代價」。pROCcoords(..., best.weights = c(r, prev)) 就是在做這件事。

rr 從 1 拉到 10(盛行率固定在本世代的 36.3%):

偽陰性 : 偽陽性的代價比特異度的權重 w選出的切點(µg/L)敏感度特異度
1 : 1(並列最佳 1 / 2)1.7560.20563.4%80.6%
1 : 1(並列最佳 2 / 2)1.7560.51029.3%100.0%
2 : 10.8780.20563.4%80.6%
3 : 10.5850.20563.4%80.6%
4 : 10.4390.06597.6%13.9%
5 : 10.3510.06597.6%13.9%
10 : 1(並列最佳 1 / 2)0.176不設有限切點(全部判成陽性)100.0%0.0%
10 : 1(並列最佳 2 / 2)0.1760.06597.6%13.9%

表格裡有幾列的代價比出現不只一次:那是因為在那個權重下,最佳解不只一個coords(..., "best") 會把所有達到最大值的切點一起回傳,只取第一列就會把並列解靜默丟掉。五件事值得注意:

  • 代價比 1 : 1 那一列不等於 Youden index。 盛行率那一項永遠在算式裡:本世代的盛行率 36.3% 讓權重變成 1.756,也就是即使兩種錯誤等價,特異度仍然被加權得比敏感度重(因為沒病的人比較多,每一個百分點的特異度牽涉到更多人)。代價比為 1 時權重剛好是 (1prev)/prev(1-\text{prev})/\text{prev},整個目標函數化簡成「答對的人數 ÷ 病例數」——這一列真正在最大化的是正確分類率(accuracy),不是 JJ。用決策曲線那一頁的語言講,這一列對應的門檻機率是二分之一,而 Youden 切點對應的門檻機率是 36.3%——所以只有在病例與非病例對半分的世代裡,這兩個目標才會是同一件事。
  • 而且這一列的最佳解不唯一。 切點 0.205(敏感度 63.4%、特異度 80.6%)與切點 0.510(敏感度 29.3%、特異度 100.0%)答對同樣 84 人,目標函數值完全相同(2.049)。前者剛好與 Youden 選到同一個切點,那是巧合而不是恆等;後者是臨床上幾乎相反的規則——幾乎不會誤判沒病的人,代價是漏掉七成的病人。
  • 代價比在 1 到 3 之間,選出來的切點都包含 0.205。 切點對代價比不是連續反應的——它會卡在同一個觀測值上一段時間,然後一次跳掉。所以「代價比大概是二還是三」這種不確定性,常常根本不影響決定。
  • 跳到 4 : 1 時,切點掉到 0.065,敏感度衝到 97.6%,特異度只剩 13.9%。
  • 代價比到 10 : 1 時,最佳解同樣不唯一:「不設切點、把所有人都判成陽性」這個退化解,與有限切點 0.065 µg/L 的目標函數值完全相同(都是 1.000)。

在同一份資料上挑出來的切點是樂觀的

這是本頁最重要的一節。挑切點的動作本身用掉了資料裡的資訊:你在一堆候選切點裡挑了在這份樣本上表現最好的那個,而「這份樣本上最好」有一部分來自真實訊號、有一部分來自這份樣本的隨機起伏。回報那個切點在同一份資料上的表現,等於把隨機起伏也算成成績。

量化的方法是 bootstrap 樂觀修正:在每一次重抽樣裡重跑整個挑選程序,比較它在重抽樣裡的表現與在原始資料上的表現,兩者的差就是那一次的樂觀量。

2000 次重抽樣的結果:

在資料上挑了什麼表面上的 J平均樂觀量修正後的 J
只挑切點0.43970.02670.4130
挑切點 + 挑兩個標記中較好的那個0.43970.05230.3874
兩張直方圖,左邊是每次 bootstrap 重抽樣選出的最佳切點分布,主峰落在原始資料的最佳切點上但右側有長尾;右邊是 Youden index 樂觀量的分布,中心略大於零。
左:每一次重抽樣各自挑出的「最佳切點」。紅線是原始資料挑出來的那個。右:樂觀量的分布,紅線是平均值。分布橫跨零的兩側,代表單一次重抽樣的樂觀量可正可負,會系統性偏正的是平均。產圖腳本 figures/scripts/B4-05-cutoff.R

比較兩條 ROC:DeLong 檢定

這一節與後面兩節都在回答同一個問題。S100β 的 AUC 是 0.731,NDKA 是 0.612,差了 0.119。這個差距站得住嗎?

關鍵在於這兩個標記量在同一批病人身上,所以兩個 AUC 估計值是相關的,不能當成兩個獨立的樣本比較。DeLong 檢定處理的正是這件事:它用每位受試者對 AUC 的貢獻(結構化的 placement values)算出兩個 AUC 的變異數與它們之間的共變異數,再檢定差值。

結果
AUC 差值(S100β − NDKA)0.119
95% CI-0.049 到 0.288
Z1.39
p0.164
兩條 ROC 曲線,S100B 整體位於 NDKA 的左上方;圖上方標註配對 DeLong 檢定的差值、信賴區間、Z 值與 p 值,信賴區間包含 0。
兩條曲線看起來分得很開,但配對 DeLong 檢定的信賴區間包含 0。曲線的視覺差距與統計上的可分辨程度是兩件事,尤其在樣本只有百餘人時。產圖腳本 figures/scripts/B4-05-cutoff.R

一個差點寫錯的說法

寫到 DeLong 那一節時,最自然的收尾是那句到處都看得到的話:「因為是同一批病人,配對檢定利用了相關性,所以比不配對的檢定更有效率。」

在這份資料上,那句話是錯的。 把同樣兩條曲線用不配對的方式檢定:

配對(正確做法)忽略配對
差值的變異數0.00740.0059
Z1.391.56
p0.1640.120

忽略配對反而給出比較小的 p 值。原因在算式裡:差值的變異數是

Var(A^1A^2)=Var(A^1)+Var(A^2)2Cov(A^1,A^2)\mathrm{Var}(\hat{A}_1 - \hat{A}_2) = \mathrm{Var}(\hat{A}_1) + \mathrm{Var}(\hat{A}_2) - 2\,\mathrm{Cov}(\hat{A}_1, \hat{A}_2)

共變異數是減的,但它不一定是正的。 這份資料的兩個 AUC 估計值共變異數是 -0.00076,是負的(兩個標記本身的 Spearman 相關也接近零而略偏負,-0.060)。於是 2Cov-2\mathrm{Cov} 變成加號,配對後的變異數 0.0074 比忽略配對的 0.0059 還大,檢定更保守。

部分 AUC——只比較會用到的那一段

前一節的兩個檢定都是在整條曲線上做的。但整條曲線裡有一大段是臨床上根本不會採用的操作點:篩檢與影像研究的偽陽性要往下接侵入性檢查,所以特異度低於某個值的切點不會被寫進流程。整條 ROC 的 AUC 把那一段一起算進去,等於讓「這個檢驗在不會被使用的操作點上表現如何」也參與評分。

部分 AUC(partial AUC)把積分限制在指定的特異度區段上。本節看的是特異度 0.90 到 1.00 這一段——高特異度端,也就是大多數篩檢與影像判讀規則實際運作的地方。

左圖是兩條完整的 ROC 曲線,S100B 整體位於 NDKA 的左上方,靠近縱軸的高特異度區段以灰色陰影標出;右圖把該區段放大,兩個標記在區段內曲線下的面積各自填色,S100B 的填色面積明顯大於 NDKA,兩條垂直虛線分別標出特異度 0.90 與 0.80 的位置。
左:整條曲線,配對 bootstrap 的 p = 0.169。右:只看特異度 0.90 以上的區段,同一批病人、同一個配對檢定,p = 0.022。改變的只有比較的範圍。產圖腳本 figures/scripts/B4-05-cutoff.R

未標準化的部分 AUC 不能跨區段比較,因為區段愈寬,能裝的面積愈多。特異度 0.90 到 1 這一段的面積上限就是它的寬度 0.10,特異度 0.80 到 1 則是 0.20。所以 S100β 在窄區段的 0.0328 與在寬區段的 0.0806 不能拿來比大小——後者比較大,有一部分只是因為區段比較寬。同一個理由:一篇論文只寫一個 pAUC 而沒有交代區段,那個數字是不可解讀的。

下限也要留意。完全沒有鑑別力的對角線在區段裡仍然圍出面積(0.005 與 0.020),所以原始部分 AUC 的「等同猜測」基準既不是 0.5 也不是 0,而是隨區段變動的一個數。

McClish 的標準化把區段線性映到 0.5 與 1 之間。 它先扣掉對角線的面積,再除以該區段能給的範圍:

pAUCcorrected=12(1+pAUCpAUCminpAUCmaxpAUCmin)\text{pAUC}_{\text{corrected}} = \frac{1}{2}\left(1 + \frac{\text{pAUC} - \text{pAUC}_{\min}}{\text{pAUC}_{\max} - \text{pAUC}_{\min}}\right)

其中 pAUC 的上限是區段寬度、下限是對角線在區段裡的面積。在 pROCpartial.auc.correct = TRUE,在 sklearn 則是 roc_auc_score(..., max_fpr = ...) 的預設輸出。校正後的值可以跨區段比較,也可以跟 0.5 這條「毫無鑑別力」的線對照——但它不是整條曲線的 AUC,兩個數不可互相取代。

特異度區段面積上限對角線的面積S100β 原始 pAUCNDKA 原始 pAUCS100β McClishNDKA McClish
0.90 到 1.000.100.0050.0328(上限的 32.8%)0.0107(上限的 10.7%)0.6460.530
0.80 到 1.000.200.0200.0806(上限的 40.3%)0.0385(上限的 19.2%)0.6680.551

配對比較怎麼做。 pROC 對部分 AUC 直接拒絕跑 DeLong,錯誤訊息是 DeLong's test is not supported for partial AUC——DeLong 的變異數推導是針對整條曲線的 placement values 寫的。替代做法是配對 bootstrap:每一次重抽「病人」,兩個標記一起被抽走,配對結構才保得住,再對區段面積的差值取分布。本頁用的是 2000 次。

有一個參數不能漏:reuse.auc = FALSE。它預設為 TRUE,意思是沿用 roc 物件裡原本的 AUC 設定,把你剛傳進去的 partial.auc 靜默忽略——於是你以為在比區段,實際比的還是整條曲線,而且輸出看起來完全正常,唯一的線索是 p 值跟整條曲線一模一樣。

標準化不改變證據強度。 McClish 校正是原始面積的仿射變換,差值與 bootstrap 標準差被同一個常數同時縮放,所以檢定統計量與 p 值完全不變:原始尺度是 2.283 與 p = 0.022,校正尺度是 2.283 與 p = 0.022。校正買到的是可比較性,不是顯著性。

比較的範圍檢定統計量p
整條曲線DeLong(配對)1.3910.164
整條曲線配對 bootstrap1.3750.169
特異度 0.90 到 1.00配對 bootstrap2.2830.022
特異度 0.80 到 1.00配對 bootstrap1.8420.065

這兩種比較在這份資料上給出不同的結論。 整條曲線未偵測到差異(p = 0.164);把比較限縮到特異度 0.90 以上,同一批病人、同樣的配對設計,差異達到統計顯著(p = 0.022)。而且這不是換了檢定造成的——同一組 2000 次配對 bootstrap 用在整條曲線上給出 p = 0.169,與 DeLong 的 0.164 幾乎相同。變的是比較的範圍。

機制看得見:在高特異度那一段,S100β 拿到面積上限的 32.8%,NDKA 只有 10.7%,相差約 3.1 倍;整條曲線上兩者的 AUC 比只有 1.20 倍。整條 AUC 是把「差得最多的那一段」與「差得比較少的其他段」平均起來的一個摘要,所以一個集中在某個區段的差距,會在摘要裡被稀釋掉。

動手跑一次

library(pROC)
data(aSAH, package = "pROC")

r1 <- roc(aSAH$outcome, aSAH$s100b, levels = c("Good", "Poor"),
          direction = "<", quiet = TRUE)
r2 <- roc(aSAH$outcome, aSAH$ndka, levels = c("Good", "Poor"),
          direction = "<", quiet = TRUE)

# Youden 最佳切點,以及整條 Youden 曲線
coords(r1, "best", best.method = "youden",
       ret = c("threshold", "sensitivity", "specificity"), transpose = FALSE)

# 依代價比選切點:c(漏掉一個病人的相對代價, 使用場域的盛行率)
coords(r1, "best", best.weights = c(5, 0.36),
       ret = c("threshold", "sensitivity", "specificity"), transpose = FALSE)

# 配對比較兩條曲線
roc.test(r1, r2, method = "delong")          # paired 預設為 TRUE
cov(r1, r2, method = "delong")               # 共變異數,可能是負的

# 部分 AUC:把積分限制在高特異度區段
auc(r1, partial.auc = c(1, 0.9), partial.auc.focus = "sp")
auc(r1, partial.auc = c(1, 0.9), partial.auc.focus = "sp",
    partial.auc.correct = TRUE)              # McClish 標準化到 0.5 與 1 之間

# 配對比較兩個部分 AUC。DeLong 對部分 AUC 會直接報錯,只能用 bootstrap;
# reuse.auc = FALSE 不能漏,否則 partial.auc 被靜默忽略、比到的還是整條曲線
set.seed(20260824)
roc.test(r1, r2, method = "bootstrap", reuse.auc = FALSE,
         partial.auc = c(1, 0.9), partial.auc.focus = "sp")

# 想比的其實是「特異度固定時的敏感度」時,直接比那一點
roc.test(r1, r2, method = "specificity", specificity = 0.9)

# 樂觀修正:每一次重抽樣都要「重跑整個挑選程序」
youden_at <- function(y, x, thr) {
  d <- y == "Poor"; p <- x >= thr
  sum(p & d) / sum(d) + sum(!p & !d) / sum(!d) - 1
}
best_thr <- function(y, x)
  as.numeric(coords(roc(y, x, levels = c("Good", "Poor"), direction = "<",
                        quiet = TRUE), "best", ret = "threshold",
                    transpose = FALSE)[1, 1])

app <- youden_at(aSAH$outcome, aSAH$s100b, best_thr(aSAH$outcome, aSAH$s100b))
opt <- replicate(2000, {
  b  <- aSAH[sample(nrow(aSAH), replace = TRUE), ]
  tb <- best_thr(b$outcome, b$s100b)
  youden_at(b$outcome, b$s100b, tb) - youden_at(aSAH$outcome, aSAH$s100b, tb)
})
c(apparent = app, optimism = mean(opt), corrected = app - mean(opt))

# 匯出給下面的 Python 用
write.csv(aSAH, "aSAH.csv", row.names = FALSE)

驗證環境:R 4.6.0 + pROC 1.19.0.1。roc.test() 預設就是配對版本,只要兩條曲線來自同一個 data frame 的同一批 case。

常見誤用

誤用為什麼錯
把 Youden 最佳切點當成「客觀」的切點把敏感度與特異度等權相加本身就是一個代價假設;正因為算式沒用到盛行率,隱含的門檻機率就被盛行率定死了
把切點報到小數點後三位峰頂通常很平,那個精確度資料裡沒有
在同一份資料上挑切點再報它的敏感度與特異度樂觀偏誤;至少要做 bootstrap 修正或外部驗證
認為樂觀偏誤只發生在複雜模型上只挑一個切點就有;挑選愈多層,樂觀量累積愈快
用不同的資料重挑切點卻不說切點在重抽樣間本來就很不穩定,需揭露挑選程序
用不配對的檢定比較同一批病人的兩條 ROC變異數算錯;方向不固定,可能偏樂觀也可能偏保守
認為配對檢定一定比較容易顯著共變異數可能是負的,此時配對反而更保守
未達顯著就寫「兩個標記表現相同」要主張相當需要非劣性設計與事先訂好的界值
比較兩個 AUC 卻只看點估計差值的信賴區間才是可解讀的量
只比 AUC 就決定要換用新標記臨床價值要看在決策門檻附近的重新分類與淨效益
把整條 ROC 的 AUC 拿來比,但實際只會用高特異度那一段該用部分 AUC,或直接比較該區段的敏感度;本頁的資料上兩者結論不同

重跑本頁的所有數字

/opt/homebrew/bin/Rscript figures/scripts/B4-05-cutoff.R

讀讀看這張圖

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

Youden index 挑出來的最佳切點是 0.205,J = 0.4397。這個「最佳」有沒有做代價假設?

看答案與解析

正確答案: 有。等權相加隱含的偽陽性對偽陰性代價比就是盛行率勝算,等於把門檻機率釘在本世代盛行率 0.3628 上

J 把敏感度與特異度等權相加,而這兩個百分點是在兩群不同的人身上算的,所以「每個比率等權」不等於「每個人等價」。推導下去,J 隱含的代價比就是盛行率勝算,等於選了一個門檻機率剛好是 0.3628 的決策者——一個沒有人做過的臨床判斷,是從樣本的病例組成繼承來的。算式裡沒有出現盛行率正是問題所在:因為它從來不問,最後就由盛行率替你把代價比定了下來。0.4397 是 J 的值,不是「沒有假設」的證據;0.6341 是這個切點的敏感度,J 對它沒有設任何下限,它是最大化的結果而不是限制。

距離 J 最大值 0.05 以內的切點共有六個,分布在 0.175 到 0.245 µg/L 之間。這對「最佳切點是 0.205」這個寫法有什麼影響?

看答案與解析

正確答案: 有影響。這個區間裡敏感度可以低到 0.585、也可以是 0.634,把小數點後三位寫進指引,是在報告資料裡沒有的精確度

峰頂平坦的意思是這一段裡每一個切點的表現分不太開:敏感度從 0.585 到 0.634,特異度也只在幾個百分點之內移動。0.205 之所以是最大值,有一部分來自這份樣本的隨機起伏,換一批人峰頂就落在別處。所以該報的是一段區間與挑選程序,不是小數點後三位的一個點。把切點改成 0.175 也不對——那不是比較安全,只是換一組取捨,而且同樣是在同一份資料上挑的。0.245 是這段區間的另一端,把它叫做次佳解,等於相信這些切點之間的排序是可信的。

代價比 10 : 1 那一列,「把所有人都判成陽性」與「切點 0.065」的目標函數值精確相等,都是 1.000。統計軟體只印出其中一列時該怎麼讀?

看答案與解析

正確答案: 目標函數值都是 1.000,最佳解不唯一,該做的是把並列的規則全部攤開讓臨床判斷去分

兩個解的目標函數值是精確相等的 1.000,不是四捨五入後看起來一樣,所以哪一列被印出來由軟體自己的排序決定,不是資料決定的。兩個並列解的臨床意義差很多:退化解等於不做檢驗,而切點 0.065 至少能排除 0.139 的沒病者,代價是敏感度 0.976 之下仍然漏掉少數病人。目標函數打平的時候,該做的是把並列規則全部攤開交給臨床判斷,而不是接受排序第一的那一個。它同時逼出一個常被跳過的問題:這個檢驗有沒有讓你做出跟「不做檢驗」不一樣的決定——在這個代價比與這個盛行率下,答案是打平。

在同一份資料上挑切點,表面上的 J 是 0.4397,bootstrap 估到的樂觀量是 0.0267。若連「用哪個標記」也在同一份資料上挑,樂觀量會變成多少、為什麼?

看答案與解析

正確答案: 0.0523,幾乎翻倍——每多一層在同一份資料上做的選擇,樂觀量就再累積一次

樂觀量衡量的是「在這份樣本上挑到最好」這件事本身帶來的虛胖,所以它隨著你在同一份資料上做的選擇層數放大:只挑切點是 0.0267,連標記也挑就到 0.0523。0.3874 是後者修正之後的 J、0.4130 是前者修正之後的 J,兩個都是結果不是樂觀量。有兩件事要一起記住:這個例子只挑了一個切點、在一個維度上,真實的預測模型還要挑變數、轉換、交互作用與超參數,樂觀量會累積成完全不同的量級;而「兩個標記本來就都測了」不能豁免——決定報告哪一個的動作發生在看過資料之後,那就是一次選擇。

配對的 DeLong 檢定給 p = 0.164,忽略配對反而給 p = 0.120。配對檢定不是應該比較有力嗎?

看答案與解析

正確答案: 因為配對後差值的變異數是 0.0074,比忽略配對的 0.0059 還大——共變異數是負的,減去它反而變成加號

配對檢定的正當性來自它用了正確的變異數,不是來自它一定比較容易顯著。差值的變異數是兩個變異數相加再減去兩倍共變異數,而共變異數不一定是正的:這份資料的兩個 AUC 估計值共變異數是負的,於是減號變成加號,配對後的變異數 0.0074 比忽略配對的 0.0059 還大,檢定更保守。所以忽略配對得到的 p = 0.120 不是比較有力,是把一個負的共變異數當成零、把變異數算小了。至於 -0.0600,那是兩個標記本身的 Spearman 相關,不是兩個 AUC 估計值的共變異數——進得了 DeLong 變異數式子的只有後者,而它在這份資料是負的,所以配對後的變異數反而是比較大的那一個,兩個 p 值也就不可能相同。標記之間的相關接近零,充其量只是讓配對的效率增益消失;要讓配對比不配對更保守,得是共變異數為負,而這份資料正是後者。

整條曲線的配對檢定 p = 0.169,把比較限縮到特異度 0.90 以上之後 p = 0.022。這是換了檢定造成的嗎?

看答案與解析

正確答案: 不是。同一組配對 bootstrap 用在整條曲線上是 0.169,與 DeLong 幾乎相同——變的是比較的範圍,不是檢定

同一組配對 bootstrap 用在整條曲線上給出 0.169,與 DeLong 幾乎相同,所以差別不在檢定。變的是比較的範圍:在特異度 0.90 以上那一段,這個標記拿到面積上限的 0.328,NDKA 只有 0.107,差距集中在這裡;整條 AUC 把這一段與差得比較少的其他段平均起來,於是被稀釋掉。McClish 校正是仿射變換,差值與標準差被同一個常數同時縮放,統計量與 p 值完全不變,它買到的是可比較性而不是顯著性。至於 0.065,那是另一個區段的結果——同一對曲線在這一頁被檢定了三次,引用最小的那個 p 值之前要記得這件事,區段必須事先寫進統計分析計畫。

延伸觀看

ROC 系列 5/6:最佳切點與代價權衡
繁中EDMAN MURMURS· 16 min繁中,正好對應本頁第二、四節:為什麼「最佳」取決於代價。
ROC 系列 6/6:罕見疾病與過度樂觀陷阱
繁中EDMAN MURMURS· 17 min繁中,對應本頁「在同一份資料裡挑切點」那一節的樂觀偏誤,講法與這裡互補。
ROC Curves
ENRahul Patwari· 12 min把切點在曲線上移動的過程講得很慢很清楚,適合在讀 Youden 那一節前重看一次。
Biostatistics – All You Need To Know About The ROC Curve
ENATP· 7 min七分鐘複習整條曲線與 AUC,讀本頁比較兩條曲線的那三節之前的暖身。

素材來源與授權

本頁為原創內容

回報內容問題

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

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

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

一併送出的資訊

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