組內相關係數與信度
ICC 不是一個係數,是六個。同一份資料上六種合法型式可以差到兩倍半,所以論文只寫「ICC = 0.85」是一個沒辦法解讀的數字。這一頁先解掉它與集群資料那一頁的命名衝突(同一條變異拆解、不同的問題),再拆開模型/型別/單位三個軸各自在分母裡動了什麼,最後說明為什麼一個接近 1 的 ICC 完全不保證量得準。
這個 ICC 跟集群那一頁的 ICC,是同一個 ICC
這個站上已經教過一次 ICC 了。集群與重複測量那一頁把它定義成「同一個病人的任兩次測量之間的相關」,用來算設計效應、說明為什麼把重複測量當成獨立觀察會低估標準誤。
這一頁的 ICC 是同一條變異拆解,寫出來是同一個分式:分子是「單位與單位之間」的變異數,分母是總變異數。差別在於問題:
- 集群那一頁問的是同一個群裡的兩個人(或同一個人的兩個時點)有多像,而答案越大越麻煩——它是要被校正掉的 nuisance。
- 這一頁問的是同一個對象被量兩次有多像,而答案越大越好——它就是要報告的結果本身。
同一個數字,一個是干擾,一個是產出。名字撞在一起是歷史造成的,不是你讀錯了。
figures/scripts/B9-02-icc.R迴歸稀釋那一頁的「信度」,就是這個數字
測量誤差那一頁在講迴歸稀釋時定義過一個量:信度(reliability)=真值的變異數除以觀察值的變異數。古典測量誤差下,迴歸係數會被乘上這個常數。那一頁把它當成一個已知的量在用,沒有說它從哪裡來。
它就是這一頁的 ICC。真值的變異數是「對象之間」的變異數(不同的人真的不一樣),觀察值的變異數是它再加上量測本身的變異。單次量測的信度=單次量測的 ICC。
這件事有一個實務推論:迴歸校準(regression calibration)需要一個重複量測的子研究來估信度,而那個子研究要跑的統計,就是這一頁的內容。子研究裡選錯 ICC 型式,校正係數就錯——而校正之後的迴歸係數看起來一樣體面。
六種型式,不是八種
三個軸決定你算的是哪一個 ICC:
- 模型:判讀者效應不進模型(單因子)還是進模型(雙因子)。
- 型別:判讀者之間系統性的高低差,排除在分母之外(一致性 consistency)還是留在分母裡(絕對一致 absolute agreement)。
- 單位:報的是一次評分的信度,還是 k 次評分取平均的信度。
figures/scripts/B9-02-icc.R三個軸應該給出八種組合,但實際上只有六種。少掉的兩種在下一節。
| 模型 | 型別 | 單位 | 判讀者效應怎麼處理 | 估計值(95% CI) |
|---|---|---|---|---|
| 單因子 | type 不適用 | 單次評分 | 不進模型,判讀者差異落到誤差項裡 | 0.175(-0.077 到 0.484) |
| 單因子 | type 不適用 | k 位的平均 | 不進模型,判讀者差異落到誤差項裡 | 0.389(-0.275 到 0.738) |
| 雙因子 | 一致性 | 單次評分 | 估出來,但不放進分母 | 0.216(-0.046 到 0.522) |
| 雙因子 | 一致性 | k 位的平均 | 估出來,但不放進分母 | 0.453(-0.153 到 0.766) |
| 雙因子 | 絕對一致 | 單次評分 | 估出來,而且留在分母裡 | 0.198(-0.039 到 0.494) |
| 雙因子 | 絕對一致 | k 位的平均 | 估出來,而且留在分母裡 | 0.425(-0.137 到 0.746) |
最低的是 0.175,最高的是 0.453,相差 0.278,比值 2.59 倍。這六個數字全部合法,而且全部來自同一份未經改動的資料。
為什麼是六種不是八種:單因子那一支根本不看 type
irr 印出來的 label 會跟另一個模型撞名
三套命名並排長這樣。同一列的三個代號指的是同一個東西:
irr 印出來的 | Shrout-Fleiss | McGraw-Wong | 估計值 |
|---|---|---|---|
ICC(1) | ICC(1,1) | ICC(1) | 0.175 |
ICC(3) | ICC(1,k) | ICC(k) | 0.389 |
ICC(C,1) | ICC(3,1) | ICC(C,1) | 0.216 |
ICC(C,3) | ICC(3,k) | ICC(C,k) | 0.453 |
ICC(A,1) | ICC(2,1) | ICC(A,1) | 0.198 |
ICC(A,3) | ICC(2,k) | ICC(A,k) | 0.425 |
所以「ICC = 0.85」不是一個結果
看到論文只寫一個 ICC 數字、沒有寫模型、型別與單位時,你不知道它是哪一格。這份資料上那個範圍是 0.175 到 0.453;換一份判讀者差異更大的資料,範圍只會更寬。
而且這三個軸不是學術偏好,它們對應三個不同的臨床問句:
- 絕對一致還是一致性:你要用這個量測值去比對一個固定的切點(例如收縮壓超過某個數字就算高血壓)嗎?要,就必須用絕對一致——判讀者系統性地高兩格,切點就整個歪掉。你只需要排序(誰比誰嚴重)嗎?那一致性就夠。
- 單次還是平均:臨床上實際會用的是一個人的判讀,還是三個人開會取共識?報平均型式而臨床上用單次,是把信度灌水。
- 單因子還是雙因子:每位受試者都由同一組判讀者評(雙因子),還是每個人由當天輪到的人評、判讀者各不相同(單因子)?
三個軸各自在分母裡動了什麼
三種型式的分子都叫「對象之間的變異數」,但單因子那一個跟雙因子不是同一個數字:單因子模型裡沒有判讀者這一項,判讀者之間的差異被吸進組內誤差,於是它估到的對象間變異比雙因子少 0.056。兩個雙因子型式的分子確實一模一樣,變的只有分母。
figures/scripts/B9-02-icc.R先看變異數本身。雙因子拆解給出對象之間 0.399、判讀者之間 0.168、殘差 1.448,佔比分別是 19.8%、8.4%、71.8%。
三個單次量測型式的分母是這樣組出來的:
| 型式 | 分子 | 分母 | 分母裡有什麼 |
|---|---|---|---|
單因子(ICC(1,1)) | 0.343 | 1.960 | 對象之間 + 對象之內(判讀者與殘差併在一起,拆不開) |
雙因子一致性(ICC(3,1)) | 0.399 | 1.847 | 對象之間 + 殘差(判讀者之間被扣掉) |
雙因子絕對一致(ICC(2,1)) | 0.399 | 2.016 | 對象之間 + 判讀者之間 + 殘差 |
注意第一列的分子 0.343 比另外兩列的 0.399 小,差了 0.056。同一份資料,對象之間的變異數怎麼會變小?因為單因子佈局辨識不出判讀者效應,那一塊被沖進誤差項裡,於是連分子也被壓低。單因子不只是「比較寬鬆的分母」,它是一個估不出判讀者效應的模型。
平均型式做的是另一件事:把分母裡除了分子那一塊以外的每一項都除以 k。所以人越多、平均越穩,信度越高——這是設計出來的,不是量測變準了。
這份資料上,判讀者之間真的有差別嗎
有,而且達到統計顯著(勉強)。判讀者主效應的 F 檢定給出 F(2, 38) = 3.33,p = 0.0467。三位判讀者的平均分數分別是 3.15、3.15、2.30——前兩位完全相同,第三位系統性地低了將近一格。
那一格,就是一致性型式扣掉、而絕對一致型式留著的東西。
誠實的限制:這份資料上,真正拉開數字的不是那個軸
為了讓第二個軸也看得見,腳本做了一件刻意的合成操作:把一個常數加到第一位判讀者的所有評分上,然後重算。JSON 裡這一段標著 SYNTHETIC MANIPULATION, not a finding,就是提醒讀者這不是任何研究的發現,是為了教學造出來的。
| 加在判讀者 1 上的常數 | 單因子(ICC(1,1)) | 雙因子一致性(ICC(3,1)) | 雙因子絕對一致(ICC(2,1)) |
|---|---|---|---|
| 0 | 0.175 | 0.216 | 0.198 |
| 1 | 0.058 | 0.216 | 0.152 |
| 2 | -0.090 | 0.216 | 0.102 |
| 3 | -0.208 | 0.216 | 0.068 |
三件事同時發生,而且每一件都是代數的必然:
- 一致性那一欄一個字都沒動。 不是幾乎沒動,是完全相同——一致性型式對「整位判讀者平移一個常數」是恆等不變的。腳本用
stopifnot()斷言了這件事。 - 絕對一致那一欄一路往下掉,從 0.198 掉到 0.068。它把那個平移算成不一致,因為那本來就是不一致。
- 單因子那一欄掉得最快,而且在常數等於 2 的時候變成負的。 單因子佈局沒有地方可以放系統性的判讀者差異,只能全部丟進誤差項,於是誤差項膨脹到超過對象之間的變異。
ICC 高不代表量得準:比例與距離
換一份資料。data(sbp, package = "MethComp") 是 85 個人的收縮壓,每人由 3 種方法各量 3 次。這一頁只取兩位人工觀察者(J 與 R),因為那是一個判讀者信度的問題,裡面沒有儀器;人對機器那一組留給 Bland-Altman 一致性分析。
用每人三次的平均值算,雙因子絕對一致單次型式的 ICC 是 0.9991。這是一個看起來不能再好的數字。
同一組人、同一組讀數,換一種描述方式:兩位觀察者的差值,平均是 0.09 mmHg,一致性界限是 -4.34 到 4.52 mmHg,寬度 8.86 mmHg。
也就是說:這兩位觀察者量同一個人的同一次血壓,可以差到四、五個 mmHg,而 ICC 是 0.9973。
這句話可以直接驗。腳本把這 85 個人依平均血壓由中位數往外對稱地砍,砍成越來越窄的一段,兩位觀察者與他們的每一個讀數都沒有改變,改變的只有「被量的這群人有多不一樣」:
| 保留中間 | 人數 | 受試者平均值的 SD(mmHg) | ICC(95% CI) | 一致性界限寬度(mmHg) |
|---|---|---|---|---|
| 100% | 85 | 30.63 | 0.9991(0.9985 到 0.9994) | 5.24 |
| 50% | 44 | 11.09 | 0.9944(0.9897 到 0.9969) | 4.66 |
| 30% | 25 | 6.44 | 0.9847(0.9660 到 0.9932) | 4.45 |
| 20% | 17 | 4.09 | 0.9609(0.8972 到 0.9856) | 4.60 |
族群的離散程度從 30.63 mmHg 掉到 4.09 mmHg,ICC 跟著從 0.9991 掉到 0.9609。而一致性界限的寬度從 5.24 只變到 4.60 mmHg,變化量 0.64 mmHg,而且不是單調的——中間兩列一路變窄,最後一列(最窄的那個帶)反而回升。
結論寫成一句能帶走的話:ICC 是量測方法與族群兩者共同的性質,一致性界限只是量測方法的性質。 所以文獻上的 ICC 不能直接搬到你的族群,而一致性界限可以——這就是這兩個統計量的分工。Bland-Altman那一頁講的是後者:一樣的問題,答案用 mmHg 而不是用比例來回答。
什麼時候用 kappa,什麼時候用 ICC
這一頁與 kappa 與判讀者一致性的分工只有一條線:結果變項是連續的還是類別的。
- 類別(有無、分級、判讀為良性或惡性)→ kappa 家族。它問的是「扣掉純靠運氣猜對的部分,還剩多少一致」。
- 連續(分數、濃度、長度、血壓)→ ICC。它問的是「總變異裡有多少是真的來自對象不同」。
兩者不是互相取代的兩個選項,是被資料型態決定的。有一個交界值得記住:有序類別(例如五級的疼痛評分)兩邊都算得出來——二次權重的加權 kappa 與絕對一致 ICC 會給出很接近的值。這時候選哪一個要看你打算怎麼描述,不是看哪個數字比較好看。
而 ICC 與 Bland-Altman 的分工不是資料型態,是你要一個比例還是一個距離:審稿人問「這兩位觀察者一致嗎」時要 ICC,臨床醫師問「我可以拿 A 的讀數當 B 的用嗎」時要以 mmHg 表示的界限。兩個都報是常態,不是重複。
動手跑一次
library(irr)
data(anxiety, package = "irr") # 20 subjects x 3 raters, fully crossed
# 六種合法型式。注意 oneway 那一支的 type 參數是無效的:icc(x, "oneway",
# "agreement", ...) 與 "consistency" 回傳完全相同的值,而且沒有警告。
icc(anxiety, model = "oneway", type = "consistency", unit = "single")
icc(anxiety, model = "twoway", type = "consistency", unit = "single")
icc(anxiety, model = "twoway", type = "agreement", unit = "single")
icc(anxiety, model = "oneway", type = "consistency", unit = "average")
icc(anxiety, model = "twoway", type = "consistency", unit = "average")
icc(anxiety, model = "twoway", type = "agreement", unit = "average")
# 印出來的 $icc.name 不要直接抄進論文。oneway + average 的 label 是
# paste("ICC(", 判讀者人數, ")"),三位判讀者就印出 ICC(3),
# 而 Shrout-Fleiss 的 ICC(3,1) 是雙因子一致性,是另一個模型。
icc(anxiety, "oneway", "consistency", "average")$icc.name
# 同一件事自己拆一次。兩個雙因子型式的分子確實是同一個數字,動的只有分母;
# 上面那個 oneway 呼叫不在此列——單因子連分子都要重估,而且會估得比較小。
A <- as.matrix(anxiety); ns <- nrow(A); nr <- ncol(A)
long <- data.frame(y = as.vector(A),
subj = factor(rep(seq_len(ns), nr)),
rater = factor(rep(seq_len(nr), each = ns)))
a <- anova(lm(y ~ subj + rater, data = long))
MSs <- a["subj", "Mean Sq"]; MSr <- a["rater", "Mean Sq"]; MSe <- a["Residuals", "Mean Sq"]
vs <- (MSs - MSe) / nr # 對象之間
vr <- (MSr - MSe) / ns # 判讀者之間
ve <- MSe # 殘差
c(consistency = vs / (vs + ve), # 判讀者變異不進分母
agreement = vs / (vs + vr + ve)) # 判讀者變異留在分母
# 跟集群那一頁是同一台機器:平衡且完全交叉時,REML 與上面的動差估計相等。
lme4::VarCorr(lme4::lmer(y ~ 1 + (1 | subj) + (1 | rater), data = long))
# 第二份資料:ICC 是比例,一致性界限是距離。兩個一起報。
data(sbp, package = "MethComp")
sb <- sbp[sbp$meth %in% c("J", "R"), ]
mJ <- tapply(sb$y[sb$meth == "J"], sb$item[sb$meth == "J"], mean)
mR <- tapply(sb$y[sb$meth == "R"], sb$item[sb$meth == "R"], mean)
M <- cbind(J = as.numeric(mJ), R = as.numeric(mR))
icc(M, "twoway", "agreement", "single")$value
d <- M[, "J"] - M[, "R"]; mean(d) + c(-1.96, 1.96) * sd(d) # mmHg,不是比例驗證環境:R 4.6.0 + irr 0.85 + MethComp 1.30.2 + lme4 2.0.6。兩份資料都是一行取得,不需要向任何資料庫申請。
import numpy as np
import pandas as pd
import statsmodels.api as sm
import statsmodels.formula.api as smf
# irr does not ship a Rdatasets CSV, so get_rdataset("anxiety", "irr") 404s.
# The table is 20 x 3 integers; it is written out here so the block runs with
# no R installation. Column order is rater1, rater2, rater3.
A = np.array([
[3, 3, 2], [3, 6, 1], [3, 4, 4], [4, 6, 4], [5, 2, 3],
[5, 4, 2], [2, 2, 1], [3, 4, 6], [5, 3, 1], [2, 3, 1],
[2, 2, 1], [6, 3, 2], [1, 3, 3], [5, 3, 3], [2, 2, 1],
[2, 2, 1], [1, 1, 3], [2, 3, 3], [4, 3, 2], [3, 4, 2],
], dtype=float)
ns, nr = A.shape
long = pd.DataFrame({
"y": A.ravel(order="F"),
"subj": np.tile(np.arange(ns), nr),
"rater": np.repeat(np.arange(nr), ns),
})
fit = smf.ols("y ~ C(subj) + C(rater)", data=long).fit()
tab = sm.stats.anova_lm(fit, typ=1)
MSs = tab.loc["C(subj)", "sum_sq"] / tab.loc["C(subj)", "df"]
MSr = tab.loc["C(rater)", "sum_sq"] / tab.loc["C(rater)", "df"]
MSe = tab.loc["Residual", "sum_sq"] / tab.loc["Residual", "df"]
vs = (MSs - MSe) / nr # 雙因子的受試者變異
vr = (MSr - MSe) / ns
ve = MSe
# 單因子沒有判讀者這一項:判讀者的變異與殘差合併成一個組內均方,
# 受試者變異要用 MSw 而不是 MSe 扣掉,否則 oneway 會等於 agreement。
MSw = ((tab.loc["C(rater)", "sum_sq"] + tab.loc["Residual", "sum_sq"])
/ (tab.loc["C(rater)", "df"] + tab.loc["Residual", "df"]))
vs_ow = (MSs - MSw) / nr
# 三種單次量測型式。consistency 與 agreement 只差分母那一行;
# one-way 因為模型裡沒有判讀者這一項,分子與分母都要換。
print({
"oneway": vs_ow / (vs_ow + MSw),
"consistency": vs / (vs + ve),
"agreement": vs / (vs + vr + ve),
})
# pingouin.intraclass_corr(data=long, targets="subj", raters="rater", ratings="y")
# 會一次給出六種型式與各自的信賴區間,可以拿來對答案。Python 側沒有跟 irr 對等的套件,所以直接把變異數分析的均方寫出來——反而看得比較清楚:consistency 與 agreement 只差分母那一行,one-way 連受試者變異都要重算。pingouin 有 intraclass_corr(),回傳的是六種型式的表,可以拿來對答案。
怎麼讀報表
論文報 ICC 時,把下面這幾項一項一項對過去。缺任何一項,那個數字就不能被引用,也不能拿來跟別篇比:
- 寫出模型:單因子、雙因子隨機效果,還是雙因子混合效果
- 寫出型別:一致性,還是絕對一致
- 寫出單位:單次量測,還是 k 次的平均,並且給出 k
- 寫出受試者人數與判讀者人數——信賴區間由兩者共同決定
- 報信賴區間,不要只報點估計值
- 描述受試者的離散程度,因為 ICC 隨它上升,而且不能搬到一個更窄的族群
- 如果量測帶單位,把一致性界限跟 ICC 一起報
最後一項最常被漏。一個沒有單位的比例,回答不了「這個量測夠不夠準來做臨床決定」。 上面血壓那一節就是它的反例:ICC 是 0.9973,而同一組人同一組讀數的一致性界限有 8.86 mmHg 寬。
至於「ICC 多少算好」的那些切點(0.5、0.75、0.9 之類)——它們是慣例,不是性質。既然同一份資料的六種型式可以差到 2.59 倍,任何一條固定切點在跨過型式之後就失去意義。切點要有用,前提是型式先寫清楚。
常見誤用
| 誤用 | 為什麼錯 |
|---|---|
| 只報一個 ICC 數字,不寫模型、型別與單位 | 六種型式在同一份資料上可以差到 2.59 倍,讀者無法還原你算的是哪一個 |
| 把套件印出來的 label 直接抄進論文 | irr 的 oneway+average label 是判讀者人數,會與 Shrout-Fleiss 的模型編號撞名 |
| 宣稱做了「單因子、絕對一致」的 ICC | 單因子佈局辨識不出判讀者效應,這個組合不存在——irr 會靜默忽略你給的 type |
| 臨床上用單次判讀,卻報 k 位平均的 ICC | 平均型式的分母除以 k,報的是一個臨床上不會發生的情境 |
| 把文獻上的 ICC 搬到自己的族群 | ICC 隨受試者的離散程度上升;同一組觀察者換到更同質的族群,ICC 會自己掉 |
| ICC 接近 1 就宣稱兩種量測可以互換 | ICC 高只代表人與人的差異遠大於量測誤差,互換要看以原始單位表示的界限 |
| 把負的 ICC 夾到零再報 | 那會讓「看不出對象之間有差別」讀起來像一個有下限的正結果 |
| 只報點估計值 | 受試者少的時候區間非常寬,這一頁的區間下界多數落在零以下 |
| 把未達顯著的 F 檢定寫成「判讀者一致」 | 那個檢定問的是 ICC 是否為零,未偵測到不等於不存在,更不等於一致 |
| 用 ICC 處理類別結果 | 類別資料要的是 kappa 家族,ICC 的分子在那裡沒有意義 |
這一頁與其他頁的關係
- 同一條變異拆解的另一種用法——見 集群與重複測量。那裡 ICC 是要被校正掉的干擾,這裡是要被報告的結果,模型是同一個。
- 信度這個量從哪裡來——見 測量誤差。迴歸稀釋要乘的那個常數,就是這一頁的單次量測 ICC。
- 類別結果的版本——見 kappa 與判讀者一致性。
- 以原始單位表示的一致性——見 Bland-Altman 一致性分析。同一份血壓資料,換一種問法。
- 判讀者一致性在診斷研究裡的位置——見設計章 診斷準確度研究。一個判讀不可靠的 index test,準確度的上限已經被信度封死。
- 變異數分析的基本結構——見 t 檢定與變異數分析。這一頁的三個均方就是那裡的表。
重跑本頁的所有數字
/opt/homebrew/bin/Rscript figures/scripts/B9-02-icc.R讀讀看這張圖
答案取自產生本頁圖表的同一份統計輸出,不是另外打上去的。
同一份資料上,雙因子一致性的單次型式是 0.216,雙因子絕對一致的單次型式是 0.198。這兩個型式差在哪裡?
看答案與解析
正確答案: 判讀者之間的變異數是 0.168,絕對一致把它留在分母裡,一致性把它扣掉
兩個雙因子型式的分子完全一樣,都是對象之間的變異數 0.399,差別只在分母。絕對一致把判讀者之間的 0.168 留在分母裡,一致性把它扣掉,所以一致性的數字比較高,0.216 對 0.198。0.018 是這兩個估計值的差,不是任何一個變異數;而且「差很小所以可以互換」是錯的推論——差多大取決於判讀者主效應相對於殘差有多大,換一份有人系統性偏高兩格的資料,這個差會整個放大。要拿量測值去比一個固定切點時只能用絕對一致,只需要排序時一致性才夠。
腳本刻意把一個常數加到第一位判讀者的所有評分上再重算,三種單次型式的反應各不相同。加了三分之後,哪一個說法對?
看答案與解析
正確答案: 雙因子一致性還是 0.216,一個字都沒動——整位判讀者平移常數不會動到它
一致性型式對「整位判讀者平移一個常數」是恆等不變的,加了三分之後仍然是 0.216,腳本用斷言把這件事釘住。0.068 是絕對一致那一欄,它把平移算成不一致,所以一路往下掉——那正是絕對一致存在的理由。單因子那一欄則掉到 -0.208:單因子佈局沒有地方放系統性的判讀者差異,只能全部丟進誤差項,於是誤差膨脹到超過對象之間的變異。負的 ICC 不是錯誤訊息,它說的是「這份資料看不出對象之間有差別」,照實報就好,不要夾到零。
兩位人工觀察者量同一批人的收縮壓,以重複配對的單次讀數計算,雙因子絕對一致的單次型式 ICC 是 0.9973。可以說這兩位的讀數可以互換嗎?
看答案與解析
正確答案: 不一定。同一組讀數的一致性界限跨了 8.86 mmHg,兩位量同一個人可以差到四、五 mmHg
ICC 是一個比例,分母裡有「對象之間」那一塊。這群人的收縮壓彼此差很多——受試者平均值的標準差是 30.63 mmHg——而兩位觀察者之間的差值標準差只有 2.26 mmHg,比值當然接近 1。但差值標準差不是「最多會差多少」:要乘上將近兩倍才是界限的半寬,所以單次讀數的界限跨距是 8.86 mmHg。至於「量測誤差相對於族群離散度小到可以忽略」,那正是 ICC 高的原因,不是可以互換的證據——把同一組觀察者搬到更同質的族群,ICC 自己就會掉,界限卻不會。審稿人問「這兩位一致嗎」時要的是比例,臨床醫師問「我可以拿一位的讀數當另一位的用嗎」時要的是以 mmHg 表示的距離。
同一組觀察者、同一批讀數,只把被量的族群依平均血壓由中位數往外砍窄。一致性界限的寬度從 5.239 只變到 4.598 mmHg。ICC 呢?
看答案與解析
正確答案: 掉到 0.961——族群變同質之後 ICC 自己下降,文獻上的 ICC 不能直接搬過來
這張表有兩件事同時發生。點估計往下掉是離散程度造成的:「對象之間」那一塊是 ICC 的分子,族群一窄它就縮水,而量測誤差幾乎沒動,於是 ICC 從 0.999 掉到 0.961。信賴區間變寬才是人數造成的,0.897 是最窄那一段的區間下界、不是點估計;就算每一層都補足人數,點估計還是會掉。同一段裡界限的寬度只從 5.239 變到 4.598 mmHg,而且不是單調的——兩位觀察者並沒有變差。ICC 是量測方法與族群兩者共同的性質,一致性界限只是量測方法的性質。
用 irr 算單因子、平均型式的 ICC,函式印出來的 label 是 ICC(3)。把這個 label 原樣抄進論文,讀者會讀到什麼?
看答案與解析
正確答案: 讀者會照 Shrout-Fleiss 記號把括號裡那個數字當成模型編號,而這份輸出其實是 ICC(1,k)
irr 在 model 等於 oneway、unit 等於 average 時,label 是拿判讀者人數拼出來的,三位判讀者就印成 ICC(3),而它實際計算的是 Shrout-Fleiss 記號的 ICC(1,k)。兩套記號剛好撞名:Shrout-Fleiss 括號裡的第一個位置是模型編號,第三號模型是雙因子一致性,判讀者當成固定效應估計出來、再從分母扣掉;單因子佈局沒有地方放系統性的判讀者差異,只能整包丟進誤差項。所以抄過去的後果不是換一個名字,是宣稱一個從來沒有做過的模型——讀者會以為判讀者之間的系統性差異已經處理掉了,而這份分析根本沒有估計過它。說 irr 括號裡印的就是模型編號,對照同一張表就站不住:同一個套件對雙因子一致性印的是 ICC(C,1) 與 ICC(C,3),那個位置根本不放模型編號。說被誤解的只有單次與平均那個軸也不對,ICC(3,1) 與 ICC(1,k) 連模型都不一樣,兩個軸都錯了。報告時把模型、型別與單位三個詞寫出來,不要抄套件印出來的 label。
這份資料只有 20 位受試者。單因子單次型式的 ICC 是 0.175,F 檢定的 p 值是 0.094,而區間下界是負的。可以怎麼寫?
看答案與解析
正確答案: 區間下界 -0.077 落在零以下,只能寫這份資料未偵測到受試者之間的差異
三件事要分開講。p 值 0.094 檢定的是 ICC 是否為零,未達顯著只能寫「未偵測到受試者之間的差異」,不能寫成「沒有差異」——20 位受試者本來就撐不出多少檢定力。區間下界 -0.077 是負的,代表對象之間的均方低於殘差均方,動差估計出來的變異數是負的;照實報,夾到零之後 0.175 會讀起來像一個有下限的正結果。至於 -0.046,那是另一個型式的下界,換一個型式來讓數字好看,跟試三種權重挑最大的那個報是同一件事。
用到這個方法的章節
素材來源與授權
本頁為原創內容