那天 CPK 報告出來,全場沉默了三秒
還記得嗎?幾年前,我們產線導入新製程,搞得大家人仰馬翻。某天,PM 突然衝過來,臉色鐵青地說:「良率掉到 92% 了,比預期的 95% 低太多!」我心裡一沉,知道要加班了。為了找出問題,我們拉了一批只有 10 片的樣品來跑分析。結果出來,Cpk 值只有 1.08,DPMO 衝到 6210。報告一出,會議室裡瞬間安靜下來,大家面面相覷,因為這數字跟我們平常看到的差太多了,根本判斷不出問題在哪。
問題出在哪?你的樣本數不夠大!
說實話,我們半導體廠很多時候,根本不可能拿幾百幾千片晶圓來做實驗。光是成本和時間,老闆就會把你釘在牆上。這時候,你手上可能只有十幾二十個樣本,但又必須從這些少少的數據中,判斷出整體製程的狀況。你怎麼知道這 10 片的 Cpk 1.08,是真的反映了整體良率,還是只是剛好抽到比較差的?這就是「小樣本統計推論」最頭痛的地方。
換句話說,當你樣本數不夠大時,傳統的統計方法會因為誤差太大,導致你的結論根本不準。你用那 10 片算出一個平均值,它的「可信度」有多高?你真的敢拿這個數字去跟老闆報告,然後決定要不要停機嗎?當然不敢啊!
實際上怎麼做?用「拔靴法」來變出更多樣本!
這時候,一個叫做「拔靴法(Bootstrap)」的技術就派上用場了。聽起來很炫砲,說穿了就是「自己生樣本」。具體怎麼做呢?
- 複製貼上,重新組合: 想像你手上有那 10 片晶圓的數據。你把這 10 個數據當成一個「母體」。從這 10 個數據裡,隨機「有放回地」抽取 10 個數據,組成一個新的樣本。注意,因為是有放回抽取,所以新的樣本裡,可能會重複出現某片晶圓的數據,也可能有些數據根本沒被抽到。
- 重複千萬次: 你把步驟 1 重複做個幾千次、幾萬次。每次都得到一個新的、由 10 個數據組成的「假樣本」。
- 計算統計量: 對於每個「假樣本」,你都去計算你感興趣的統計量,比如平均值、標準差,或者是 Cpk。
- 建立分佈: 這樣一來,你就會得到幾千幾萬個 Cpk 值。這些 Cpk 值就形成了一個「模擬分佈」。這個分佈,就能讓你更好地了解真實 Cpk 的可能範圍。
比如說,我們那 10 片晶圓的 Cpk 是 1.08。透過拔靴法,我們可能模擬出 10000 個 Cpk 值,然後發現這些 Cpk 值有 95% 的機率落在 1.0 到 1.25 之間。這樣你就能更自信地說:「雖然我只有 10 片數據,但依照目前結果,我預期整體 Cpk 有 95% 的機會會落在這個區間。」這比光看 1.08 一個點,判斷起來是不是更踏實?
最常見的坑:把「隨機」當「亂來」
我還記得有一次,一個新來的菜鳥工程師,學了拔靴法後很興奮。他直接把那 10 個數據複製貼上 10 次,變成 100 個數據,然後當作樣本去跑分析。他覺得這樣就是「生出更多樣本」了。我看到他的報告差點沒從椅子上摔下來!
坦白講,這完全是搞錯重點了。拔靴法的精髓在於「隨機有放回抽取」,這樣才能模擬出數據本身的不確定性。你只是單純複製,等於只是把同樣的錯誤重複放大,根本沒有任何新的資訊。你的「新樣本」其實還是那 10 個數據的死板重複,算出來的統計量也只會跟你一開始的結果一樣,一點用都沒有!所以,務必記得「隨機」和「有放回」這兩個關鍵詞。
今天能做的一件事
打開你的 Excel 或 R/Python,用手上的小數據,跑一次拔靴法,看看你的統計量會怎麼分佈。