公告

[公告]
2014/01/17
由於已經是faculty的關係,不太有足夠時間寫部落格。因此更新的速度會相當緩慢。再加上近幾年來SAS GLOBAL FORUM沒有出現讓我覺得驚艷的技術文件,所以能分享的文章相對也減少許多。若有人推薦值得分享的SAS技術文件,請利用『問題討論區』告知。

2013/07/19
臉書留言板的功能因為有不明原因故障,因此特此移除。而intensedebate的留言板因管理不易,也一併移除。目前已經開啟內建的 G+ 留言系統,所以請有需要留言的朋友,可直接至『問題討論區』裡面留言。


2009年11月24日 星期二

Stopping stepwise: Why stepwise and similar selection methods are bad, and what you should use

原文連結:Stopping Stepwise: Why Stepwise Selection Methods are Bad and What you Should use Instead

從事統計諮詢工作多年,經常遇到這樣的問題:為什麼經過stepwise過後的線性迴歸結果與預期的相差很大,無法有效解釋。這類問題也反應出理論統計和實際應用上的出入。SAS 在選擇變數的過程中,只能藉由讀進去的數字來套用公式,但每個變數的背後意義,在 SAS 還沒演化成「天網」Skynet 之前,應該是猜不出來。以往的解決方式,通常是希望使用者根據經驗法則,從電腦挑出的變數裡面刪除研究內不會去討論到的變數,或者是從刪除掉的變數裡面強迫加入研究內會討論到的變數。但這些比較主觀的方法,總是有點失去科學性。這篇教學文件主要是回答諸多常用線性迴歸做研究的人內心的疑惑,並使用 PROC GLMSELECT 來解決這個問題。

早在2001年,Dr. Frank Harrell 就提出傳統的線性迴歸模式選擇法(含backward, forward and stepwise)的盲點,諸如:
。R平方有偏誤(過高)
。參數估計值的標準差太小
。F值或卡方統計量並沒有真正服從F分配或卡方分配
。參數估計值的信賴區間太小
。p-value有偏誤(太小)
。參數估計值(絕對值)太大
。共線性

有人可能懷疑會不會是因為樣本數不多導致 power 不夠,但這跟模式選擇是沒有太大的關係。原文作者甚至利用模擬的資料來比較 100 subjects 和 1000 subjects 在同一個模式下進行模式選擇,發現 1000 subjects 的結果也沒有來得特別好。

為了要克服模式選擇的問題,原文作者提出幾個方案:

(1) A FULL(ER) MODEL
顧名思義,就是完全不要去做模式選擇,直接用 full model 去分析資料。當然使用這種有點逃避現實的方法很明顯的會出現嚴重的共線性問題。以我個人的經驗來看,為了要規避模式選擇卻讓共線性影響分析的方式並沒有高明到哪裡去。因此我得建議是,共線性分析一定要做,並把他視為模式選擇的替代品。若某個變數不是研究的重點,也沒有統計上的顯著性,又跟其他獨立變數產生高度的相關性時,便可以直接砍除了。

(2) EXPERT KNOWLEDGE
這個方法就是我在第一段提到的,使用個人對研究主題和資料背景的認知,主觀地決定什麼變數該留下,什麼變數開刪除。雖然這並不是非常科學的方法,但我一直認為統計分析必須適度跳脫教科書的範疇,在整個統計分析的過程中,完全交由電腦去決定並不是一個百分之百有保障的作法,真正的決策還是得依靠人腦才行。

(3) MODEL AVERAGING
這個方法的觀念有點像是在稀釋掉使用 full model 時會造成的問題,其概念是建立數個可能的模式,再利用 AIC 去計算每個變數在每個模式的權重,最後用加權的方法把每個變數在不同模式下的估計值給平均起來。詳細的作法可以參考這本書:

Burnham, K. P. & Anderson, D. R. (2002), Model selection and multimodel inference, Springer, New York.

(4) PARTIAL LEAST SQUARES
這個方法主要是用來解決用主成分分析法(Principal Component Analysis, PCA)建立 PCA regression 以達成變數減少目的所產生不易解釋 PCA 變數的問題。
 
(5) LASSO
這個方法是借用脊迴歸(ridge regression)的參數估計方法來重新估計參數,詳細過程可見:

Trevor Hastie, R. T. & Friedman, J. (2001), The elements of statistical learning, Springer-Verlag, New York.

(6) LAR
Least Angle Regression 的縮寫,其概念是將所有參數中央化,讓所有的參數從零開始,然後再慢慢加上從殘差相關係數所產生的數據。詳細方法可見:

Bradley Efron, Trevor Hastie, I. J. & Tibshirani, R. (2004), ‘Least angle regression’, Annals of Statistics 32, 407–499.

(7) CROSS VALIDATION
類似 bootstrap 和 jackknife 的 resampling 方法,先決定要重複抽出 K 組資料,每一組資料裡面用 (K-1)/K 筆資料去估計模式,剩下的 1/K 筆資料拿來做驗證。

上述的方法中,LASSO 和 LAR 已經可以透過 PROC GLMSELECT 來完成,此程序的基本語法如下:
PROC GLMSELECT (options);
CLASS variable;
MODEL variable = (effects)/(options);
SCORE (data=dataset) (out=dataset)

此程式在執行模式選擇的主要關鍵語法是 MODEL statement 後面的 selection=。透過 selection= 這個 option 來指定選模方法和設定變數選取的準則(AIC, AICC, BIC,...,etc)。如果要計算 LASSO 和 LAR,只需要簡單地寫上「selection=LAR」和「selection=LASSO」即可。傳統的 backward、foreward 以及 stepwise 法仍舊可以使用在 PROC GLMSELECT 程序中,但提供額外參數供使用者自行設定,例如:

selection=forward(select=SL stop=validation)

selection=backward(select=SL)

selection=stepwise(select=SL SLE=0.1 SLS=0.08 choose=AIC)

這些參數其實就跟 PROC REG 裡面會用到的模式選擇參數一樣,在此不額外補充(其實原文裡面也沒有,是我自己從 PROC GLMSELECT手冊裡面添加的)。

使用 LASSO 和 LAR 法可提供傳統的模式選擇結果出現問題的替代方案,但這兩個方法也不是一本萬利,因為他們也各自有一些假設需要去檢驗。由於原文裡面沒有提到要檢定哪些假設,所以請自行參考原著。但原文作者也提到,這兩個方法仍舊比傳統的 stepwise 要好很多。若今後我有看到有專門在探討這兩種方法的 SAS 技術文件,會再以專文提出。

CONTACT INFORMATION
Peter L. Flom
515 West End Ave
Apt 8C
New York, NY 10024
peterflomconsulting@mindspring.com
(917) 488 7176

David L. Cassell
mathematical statistician
Design Pathways
3115 NW Norwood Pl.
Corvallis OR 97330
CODE { display: block; /* fixes a strange ie margin bug */ font-family: Courier New; font-size: 8pt; overflow:auto; background: #f0f0f0 url(http://klcintw.images.googlepages.com/Code_BG.gif) left top repeat-y; border: 1px solid #ccc; padding: 10px 10px 10px 21px; max-height:200px; height:200px; // for IE6 line-height: 1.2em; }