VIP 專屬 資料處理與評測 實戰

評測的統計嚴謹性:信賴區間與多重比較

200 題的評測集,91% 和 89% 的差距可能完全是雜訊。

資料處理與評測教程封面

評測報告上常見「新版 91.3%,舊版 89.1%,提升 2.2 個百分點」。在 200 題的評測集上,這個差距很可能不顯著——換一組題目結論就翻轉。

不理解這件事,你會不斷追逐雜訊,把時間花在實際上沒有改善的改動上。

先算信賴區間

import math

def wilson_ci(k, n, z=1.96):
    """比例的 Wilson 信賴區間,小樣本比常態近似準確"""
    if n == 0: return (0.0, 1.0)
    p = k / n
    d = 1 + z*z/n
    c = p + z*z/(2*n)
    s = z * math.sqrt(p*(1-p)/n + z*z/(4*n*n))
    return ((c - s)/d, (c + s)/d)

lo, hi = wilson_ci(183, 200)
print(f'91.5% (95% CI: {lo:.1%} – {hi:.1%})')   # 約 86.8% – 94.7%

區間寬度接近 8 個百分點。兩個版本的區間大幅重疊時,就不該宣稱有差異。

配對比較更有力

兩個版本跑的是同一組題目,所以應該用配對檢定,而不是把兩個獨立比例拿來比。配對檢定只看「一個對一個錯」的那些題目,統計效力高得多。

from statsmodels.stats.contingency_tables import mcnemar

# b: 舊對新錯的題數;c: 舊錯新對的題數
table = [[both_correct, b], [c, both_wrong]]
res = mcnemar(table, exact=True)
print(f'改善 {c} 題、退步 {b} 題,p = {res.pvalue:.4f}')

需要多少題

# 想穩定偵測 3 個百分點的差異,配對設計下
# 大致需要 400-800 題(視兩版本的分歧率而定)
# 分歧率越低,需要的題數越多

這解釋了為什麼小評測集只能偵測大改善。若你的改動預期只有兩三個百分點,200 題的評測集根本測不出來。

多重比較的陷阱

  • 同時比較十個版本,最好的那個「看起來顯著」的機率很高,但那可能只是運氣。
  • 解法一:先用開發集篩出前二,再用獨立的保留集做最終判定。
  • 解法二:對 p 值做多重比較校正。
  • 最實用的解法:只比較兩個版本,並事先聲明主要指標。

報告的正確寫法

❌ 新版 91.3%,優於舊版 89.1%
✅ 新版 91.3%(95% CI 86.8–94.7),舊版 89.1%(95% CI 84.2–92.8)
   配對比較:改善 12 題、退步 7 題,p = 0.36 — 差異未達統計顯著。
   建議:擴充評測集至 500 題後重測,或先觀察線上指標。
把信賴區間直接做進評測工具的輸出。工程師不會自己去算,但如果報告上就印著,決策品質會立刻改善。
🔒

訂閱後繼續閱讀全文

本篇為訂閱者專屬內容。訂閱後可取得下列權限:

  • 解鎖全部內容權限
  • 閱讀不限篇數
  • 全站移除廣告
月卡
NT$240
開通 30 天
一次付清,開通 30 天
季卡
NT$620
開通 90 天
一次付清,開通 90 天,每天約 NT$7
年卡
NT$2,160
開通 365 天
一次付清,開通 365 天,每天約 NT$6

一次性付款,付款成功後立即開通,到期自動結束,不會再次扣款,也不需要取消訂閱。

立即訂閱

金額均為新臺幣(TWD),即實際扣款金額,不另收手續費
支援信用卡 · Apple Pay · Google Pay · WebATM · ATM 轉帳
購買須知與退款政策