那天 Cpk 報告出來,全場沉默了三秒
還記得好幾年前,我們有一條新製程的良率一直卡關,DPMO 硬是壓不下來,穩定在 6210 左右。每天會議都像在開檢討會,PM、製程、設備,大家臉都綠了。那時候,大頭叫我從數據下手,看有沒有什麼蛛絲馬跡。我二話不說,抓了所有想得到的參數,什麼機台設定、化學品濃度、反應時間、甚至連操作員班別都拉進來,直接跑了一個多變量迴歸。結果報告一出來,嚇死人,R-squared 高達 0.95,看起來超棒,但 Cpk 報告依舊是 1.08,沒啥起色。全場沉默了三秒,空氣中瀰漫著一股「你是不是在莊孝維」的氣氛。
問題出在哪?你的模型真的「懂」製程嗎?
說穿了,那時候我就是犯了個菜鳥常犯的錯:以為參數拉越多越好,模型看起來很漂亮就代表我搞懂了。但其實,這就跟你在聯誼會上,明明喜歡的對象就那幾個,你卻硬要加一百個不認識的女生 LINE 一樣,搞到最後根本不知道誰是誰。統計上,這就是「變數選擇」的問題。你拉進來的變數,有些可能根本沒影響,有些甚至彼此之間有高度相關,也就是所謂的「多重共線性」。
想一想,你同時把「機台溫度設定值」跟「機台實際溫度」都丟進去分析,這兩者八成會高度相關吧?如果模型把這兩個都當成獨立的影響因素,那就會產生誤導,結果就是模型看起來很神,但對實際製程改善根本沒用,甚至會給你錯誤的方向。
實際上怎麼做?用統計把「冗員」踢掉
所以重點是,我們要找出那些真正有影響力、而且彼此獨立的變數。坦白講,這沒有萬靈丹,但有幾個方法你可以試試:
- 逐步迴歸 (Stepwise Regression):這就像是讓電腦幫你自動篩選。它會一個一個把變數加進去或踢出去,然後根據統計指標(像 AIC、BIC 值)去判斷哪個組合最好。但要注意,這不是絕對的,有時候它選出來的組合不一定符合你的製程知識。
- VIF 值 (Variance Inflation Factor):這是專門用來抓「多重共線性」的。簡單來說,如果一個變數的 VIF 值很高(通常超過 5 或 10 就要小心),就代表它跟其他變數的相關性太高。這時候,你就要考慮是不是把它踢掉,或是有沒有其他變數可以取代它。
- 領域知識 (Domain Knowledge):說實話,這才是最重要的。統計工具只是輔助,你對製程的了解才是關鍵。像那天,我後來去跟設備工程師、製程工程師聊過後,才發現有幾個參數根本是連動的,丟進去只是互相干擾。這時候,寧可相信你的經驗,把那些「表面上有效」但「實質上無用」的變數捨棄。
舉個例,如果你的模型顯示「機台 A 的功率」跟「機台 B 的轉速」對良率都有影響,但你知道這兩者其實是因為同一個中央控制系統在調整,那你就應該考慮只保留其中一個,或是找到那個真正源頭的變數。
最常見的坑:看到 R-squared 高就嗨翻
我年輕的時候,最常犯的錯就是看到 R-squared 衝到 0.9 以上就嗨翻,覺得自己是統計之神。結果隔天去現場驗證,發現改善幅度根本不及預期。這就是因為模型可能包含太多「多重共線性」的變數。它們讓模型看起來解釋力超強,但實際上,這些變數的貢獻是重疊的,甚至互相抵銷。
另一個坑是,有時候你為了讓模型「好看」,硬是要把一些沒什麼關係的變數拉進來。結果搞到模型太複雜,反而失去了「解釋性」。要知道,我們的目的是要找到「因果關係」,不是單純的「相關性」。一個簡單但精準的模型,遠比一個複雜但失真的模型有用得多。
今天能做的一件事
回去打開你的迴歸模型,算一下每個變數的 VIF 值。