甲生在一篇寫作稿子找到a個錯誤,乙生在此同一篇文稿找到
b 個錯誤,甲生與乙生有 c 個共同找到的錯誤. 因此, 兩人共
找出 a + b -c 個錯誤.
要問 "這個稿子估計有多少個錯誤", 就要看 "估計" 是什麼意
思了. 要說, 前一回答說 "至少 a + b -c 個錯誤", 這是完全正
確的. 但可能沒滿足 "估計" 的意思.
統計學上, "估計" 就是根據已經知道的數據 "猜測" 未知的量.
假設這稿子有 N 個錯誤, 甲找到 a 個, 乙找到 b 個, 他們找
到的有 c 個是相同的. 那麼如何猜 N 是多少?
讓我們將 N 個錯誤分成 4 類:
(1) 甲發現而乙未發現: a-c;
(2) 乙發現而甲未發現: b-c
(3) 甲乙皆發現: c
(4) 甲乙皆未發現: N-a-b+c (未知)
可以把它看成缺少一格觀測值的 2×2 交叉表, 其各細格之期望
數, 對應上述分類,本應是 μp(1-q), μq(1-p), μpq, 和
μ(1-p)(1-q), 而觀測到的是前三類, 分別是 a-c, b-c, c.
其中 μ 表示期望總錯誤數, N 是實際總錯誤數; p, q 分別是
所有錯誤單獨被甲乙發現的比率(機率), 並假設甲乙二人是否
會發現任何一個錯誤是獨立的.
在上述模型, 假設實際錯誤數是一個隨機現象, 有一個理論錯誤
數 μ. 因此, 理論上與其說估計 N 不如說預測 N 或估計 μ.
但實際上這裡的 N 是已經發生了, 說是 "估計" 比說 "預測"
更適當. 而且, μ 是期望數而 N 是發生數, N 之最佳猜測通常
也是 μ 之最佳猜測.
我們把具體的機率模型寫出來: 一般我們可假設上述 2×2 交叉
表, 不管看完整的4細格, 或此處只看到其中3細格, 都適合用
product Poisson probability distribution 描述. 也就是說:
在這模型下看到上述 a, b, c 數字的機率是:
f(a,b,c;μ,p,q)
= [μp(1-q)]^(a-c) e^[-μp(1-q)]/(a-c)! ×
[μq(1-p)]^(b-c) e^[-μq(1-p)]/(b-c)! ×
(μpq)^c e^(-μpq)/c!
μ^(a+b-c) e^[-μ(p+q-pq)] p^a(1-p)^(b-c) q^b(1-q)^(a-c)
= -----------------------------------------------------------------------
(a-c)! (b-c)! c!
這個機率(機率質量函數)換個角度被稱為 μ, p, q 的概似度
函數 (likelihood function). 採取所謂 "最大概似度準則",
得概似度方程式 (likrlihood equations):
(a+b-c)μ = p+q-pq
a/p - (b-c)/(1-p) = μ(1-q)
b/q - (a-c)/(1-q) = μ(1-p)
由以上方程式導出 "自然疊代式":
(μ^, p^, q^ 依次代表 μ. p, q 之估計.)
μ^ = (a+b-c)/(p^+q^-p^q^)
p^ = a/[(a+b-c)+μ^(1-p^)(1-q^)]
q^ = b/[(a+b-c)+μ^(1-p^)(1-q^)]
上列疊代式右邊 μ, p, q 是以前一輪計算結果代入的.
雖然未經證明, 但它似乎是收斂的, 只是收斂速度很慢.
欲求較快速度的收斂, 可考慮例如 Newton-Raphson 疊代法.
這裡就不費心去推導了.
測試了一下, 假設 a = 1oo, b = 80, c = 20, 結果得
μ^ = 400, p^ = 0.25, q^ = 0.4
也就是說: 如果甲找出 1oo 個錯誤, 乙找出 80 個, 其中兩人
發現的共同錯誤有 20 個. 則估計全文有 400 個錯誤.
由結果反推公式, 似乎有:
μ^ = ab/c, p^ = c/b, q^ = c/b
將此猜測代入概似(度)方程式, 發現確實滿足所有方程式.
因此可以說: ab/c 就是總錯誤數估計.
有一方法可更容易得上述簡單的公式解, 那就是:
a = Np, b = Nq, c = Npq
所以
c/N = (a/N)(b/N)
所以
N = ab/c.
又,
p = pq/q = (c/N)/(b/N) = c/b,
q = pq/p = (c/N)/(a/N) = c/a.
這是直觀的估計法.
到這裡必然有人要問: 如果 c = 0, 也就是兩人發現的
錯誤都不同呢? 很顯然, 這代表錯誤太多了, 而兩人發
現錯誤的能力也太低了, 以致不能有共同的發現. 至於
總錯誤數是多少, 那只有天曉得!
以上方法有一個致命的問題: 那就是它假設所有錯誤被
找出的機率是一樣的 (跟檢查錯誤的人有關, 而跟錯誤
本身無關). 當然這樣的缺點固然難以完全解決, 卻也不
是束手無策. 一個方法是對錯誤類型分類 (考慮不同錯
誤類型被找出機率不等), 因此可以估計出不同類型錯誤
數, 而後加總就是錯誤總數.