Part 1 數據品管統計(Nielsen's Food Analysis 第4章)/第 5 章
有效數字與異常值檢定 Significant Figures, Dixon Q-test & Grubbs Test
學長的報告寫 64.7201359%,被退件;學姊把一個「怪數據」刪掉,被告學術不端。兩個地雷,這一章教你怎麼避開。
🔑 課前暖身
為什麼課本寫 64.72% 而不是 64.7201359%?為什麼全班都考 60–80 分、有人考 5 分你會先懷疑他缺考?
本章教你有效數字的專業規則,以及判斷「手滑數據」的客觀檢定——還有重要提醒:不能為了報告漂亮而亂刪數據。
本章新詞先認識:有效數字=報告該保留的位數;異常值=明顯不合群的可疑數據;Q 檢定/Grubbs 檢定=判斷能否刪除的「法律依據」。
名詞卡住了?回 Ch0 名詞圖鑑 查白話解釋與比喻。
本章新詞先認識:有效數字=報告該保留的位數;異常值=明顯不合群的可疑數據;Q 檢定/Grubbs 檢定=判斷能否刪除的「法律依據」。
名詞卡住了?回 Ch0 名詞圖鑑 查白話解釋與比喻。
學習目標
- 掌握有效數字的判定規則與運算取位
- 會執行 Dixon Q 檢定並正確查表(90% 信賴)
- 認識 Grubbs 檢定作為進階工具
- 建立「刪數據的學術倫理」底線
5.1 有效數字:報告的誠實度
有效數字 = 所有確定的位數 + 最後一位有疑義的位數。 多報是膨風、少報是浪費。Nielsen 的規則:
| 規則 | 例子 | 有效位數 |
|---|---|---|
| 小數點後的零算 | 64.720 | 5 |
| 前導零(0.00xx)不算 | 0.0072 | 2 |
| 夾在中間的零算 | 6.407 | 4 |
| 整數末端的零預設不算 | 7000 → 7×10³ | 1 |
| 寫成 7000.0 則末端零算 | 7000.0 | 5 |
運算取位:乘除看「有效位數最少」的項;加減看「小數位數最少」的項。 先算完再一次四捨五入。
36.54 × 238 × 1.1 = 9566.172 → 9600(1.1 只有 2 位)
7.45 + 8.725 = 16.175 → 16.18(7.45 只有 2 位小數) Nielsen 4.5.1 的兩個課本例題
7.45 + 8.725 = 16.175 → 16.18(7.45 只有 2 位小數) Nielsen 4.5.1 的兩個課本例題
⚠️ 稀釋倍數的陷阱(課本經典)
咖啡因 43.5 μg/mL 稀釋 50 倍 → 43.5×50 = 2175。若把「50」當 1 位有效數字會得到 2000——
嚴重低估!A 級容量瓶的容許差 ±0.05 mL,稀釋倍數應寫成 50.0(3 位)→ 2180 μg/mL。
每個數字都要檢視它的「器皿依據」,不能機械套規則。
5.2 異常值:能不能刪?
Nielsen 的答案很明確:「非常罕見(very rarely)」,且必須經過審慎評估。 為了讓精密度變漂亮而刪數據=扭曲結果。客觀工具是 Dixon Q 檢定:
Q = gapW =
可疑值與最近鄰的距離全距(最大 − 最小)
Nielsen 式 (4.26):Q > 臨界值 → 該值可在 90% 信賴下捨棄
| n | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
|---|---|---|---|---|---|---|---|---|
| Q0.90 臨界值 | 0.94 | 0.76 | 0.64 | 0.56 | 0.51 | 0.47 | 0.44 | 0.41 |
課本範例:水分 4 重複 64.78、64.53、64.45、55.31?
Q = (64.45 − 55.31)/(64.78 − 55.31) = 9.14/9.47 = 0.97 > 0.76(n=4)→ 可捨棄。
習題 3(乾物質):88.62、88.74、89.20、82.20?
Q = 6.42/7.00 = 0.917 > 0.76 → 可捨棄。捨棄後 mean = 88.85、SD = 0.31
(捨棄前 mean = 87.19、SD = 3.34——差很多!這就是為什麼檢定要客觀)。
# --- Dixon Q 檢定(90% 信賴)---
q_crit <- c("3"=.94, "4"=.76, "5"=.64, "6"=.56,
"7"=.51, "8"=.47, "9"=.44, "10"=.41)
q_test <- function(x) {
x <- sort(x); n <- length(x)
gap <- max(x[2]-x[1], x[n]-x[n-1]) # 兩端誰更可疑
Q <- gap / (x[n] - x[1])
list(Q = round(Q,3), Qcrit = q_crit[[as.character(n)]],
reject = Q > q_crit[[as.character(n)]])
}
q_test(c(64.78, 64.53, 64.45, 55.31))
#> $Q [1] 0.965 $Qcrit [1] 0.76 $reject [1] TRUE
dry <- c(88.62, 88.74, 89.20, 82.20)
q_test(dry) # Q=0.917 > 0.76 -> TRUE
dry2 <- dry[-which.min(dry)] # 捨棄後重算
round(c(mean=mean(dry2), SD=sd(dry2)), 2)
#> mean SD
#> 88.85 0.31
# --- 95% 信賴區間(捨棄前 vs 後)---
round(mean(dry) + c(-1,1)*qt(.975,3)*sd(dry)/2, 2) # 87.19±5.31
round(mean(dry2) + c(-1,1)*qt(.975,2)*sd(dry2)/sqrt(3), 2)
R Console輸出 output
$Q [1] 0.965 $Qcrit [1] 0.76 $reject [1] TRUE $Q [1] 0.917 $Qcrit [1] 0.76 $reject [1] TRUE mean SD 88.85 0.31 [1] 81.88 92.50 [1] 88.09 89.61
5.3 進階:Grubbs 檢定
Q 檢定只看「與最近鄰的距離」,一次只適合處理一個可疑值。 Grubbs 檢定用「離群距離 ÷ 標準差」:
G = max |xi − x̄|SD > Gcrit(n, α) → 為異常值
對乾物質數據:G = |82.20 − 87.19|/3.34 = 1.496 > 1.481(n=4, 95% 雙尾)→ 勉強超過臨界值,判定為異常值;但差距極小,實務上應優先查實驗紀錄找原因,而不是只憑檢定剔除。
# Grubbs 臨界值(t 分布近似公式)
grubbs_crit <- function(n, alpha = 0.05) {
t2 <- qt(alpha/(2*n), df = n-2)^2
((n-1)/sqrt(n)) * sqrt(t2/(n-2+t2))
}
round(sapply(4:8, grubbs_crit), 3)
#> n=4 n=5 n=6 n=7 n=8
#> 1.481 1.715 1.887 2.020 2.127
G <- max(abs(dry - mean(dry))) / sd(dry)
G #> 1.496
G > grubbs_crit(4) #> TRUE -> 82.20 是異常值
R Console輸出 output
[1] 1.481 1.715 1.887 2.020 2.127 [1] 1.495783 [1] TRUE
🔗 其實你剛剛做的就是「假說檢定」
Q 檢定與 Grubbs 檢定的骨架一模一樣:先假設 H0:這個可疑值和其他值來自同一個母體(它只是運氣不好的正常數據)。
算出的 Q 或 G 超過臨界值=「如果 H0 為真,這麼極端的值很罕見」,所以拒絕 H0。
完整邏輯(H0、p 值、型一/型二錯誤)在 Ch15 假說檢定。
但請記住:拒絕 H0 不等於可以直接刪數據——檢定只說「它很可疑」,能不能刪還要過下面的三條底線。
⚖️ 學術倫理三條底線
① 只有可追溯的操作失誤紀錄(漏加試劑、樣品灑落)+統計檢定支持,兩者兼備才可刪除
② 刪除必須在報告中揭露(檢定方法、數值、理由)
③ QUAM §2.4.13 同樣警告:「純粹以統計理由拒絕數值通常不明智」——統計是輔助,不是藉口
② 刪除必須在報告中揭露(檢定方法、數值、理由)
③ QUAM §2.4.13 同樣警告:「純粹以統計理由拒絕數值通常不明智」——統計是輔助,不是藉口
📊 Excel 也會算:異常值檢定與有效數字
📊 沒有 R 也能動手
Dixon Q 檢定:將 4 個值由小到大排序於
若可疑值是最大值,Q=
Grubbs 檢定:適用於不需要排序的原始資料(如 A1:A4):
⬇ 下載本章 Excel 活頁簿 數據、公式、白話說明都排好了,打開就能算;改黃色儲存格試試看,最後一張工作表會幫你和 R 的答案對照。
有效數字:若=ROUND(數值, 小數位數);要求保留有效數字則 =ROUND(數值, 位數-1-INT(LOG10(ABS(數值))))。Dixon Q 檢定:將 4 個值由小到大排序於
A1:A4(如 55.31、64.45、64.53、64.78),可疑值若是最小值:| 計算 | Excel 函數 | 說明 |
|---|---|---|
| gap(可疑值與相鄰的差距) | =A2-A1 | 64.45-55.31=9.14 |
| 全距 W | =A4-A1 | 64.78-55.31=9.47 |
| Q 值 | =(A2-A1)/(A4-A1) | 約 0.97 |
| 判定 | =IF(Q>0.76,"可剔除","保留") | n=4 臨界值 0.76 |
=(A4-A3)/(A4-A1)。Excel 內無 Q 檢定,查表為首。Grubbs 檢定:適用於不需要排序的原始資料(如 A1:A4):
| 計算 | Excel 函數 | 說明 |
|---|---|---|
| G 值 | =MAX(ABS(A1:A4 - AVERAGE(A1:A4))) / STDEV(A1:A4) | 須按 Ctrl+Shift+Enter (舊版) 或直接 Enter (新版) |
| 臨界值 Gcrit | =(COUNT(A1:A4)-1)/SQRT(COUNT(A1:A4)) * SQRT(T.INV.2T(0.05/COUNT(A1:A4), COUNT(A1:A4)-2)^2 / (COUNT(A1:A4)-2 + T.INV.2T(0.05/COUNT(A1:A4), COUNT(A1:A4)-2)^2)) | 利用 \(\alpha/n\) 反求雙尾 t 分配,免查表! |
| 判定 | =IF(G值 > G_crit, "可剔除", "保留") | n=4 時 Gcrit 算出來精準等於 1.481 |