評測的統計嚴謹性:信賴區間與多重比較
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 轉帳
購買須知與退款政策