胡良平
(1.軍事科學院研究生院,北京 100850;2.世界中醫(yī)藥學會聯(lián)合會臨床科研統(tǒng)計學專業(yè)委員會,北京 100029
嶺回歸分析是在構(gòu)建多重線性回歸模型時,對基于“最小二乘原理”推導出的估計回歸系數(shù)的計算公式作一下校正,使回歸系數(shù)更穩(wěn)定。
當自變量之間存在較強的多重共線性時,求得的多重線性回歸模型很不穩(wěn)定;尤其是某些自變量前回歸系數(shù)的正負號與實際問題的專業(yè)背景不吻合。此時,嶺回歸分析有可能較好地解決前述提及的問題。
多重線性回歸方程的回歸系數(shù)可以表示為
β=(X'X)-1X'Y
(1)
β(k)=(X'X+kIm)-1X'Y
(2)
即在矩陣X'X的主對角線元素上加上一個非負因子k,其中Im為m階單位矩陣,k>0稱為嶺參數(shù)或偏參數(shù)。如果k取與試驗數(shù)據(jù)Y無關(guān)的常數(shù),則β(k)為線性估計,否則β(k)為非線性估計。取不同的k,得到不同的嶺估計。故上式實際定義了一個很大的估計類。特別當k=0時,β(k)=(X'X)X'Y就是β的最小二乘估計。當k∈[0,+∞)時,對于每個i,β(k)的第i個分量βi(k)的值均為k的函數(shù),在直角坐標系中,點[k,βi(k)]所構(gòu)成的變化軌跡,稱為嶺跡。隨著k的增大,βi(k)的絕對值均趨于不斷變小[由于自變量之間可能存在相關(guān)性,個別βi(k)可能有小范圍的向上波動或改變正、負號],若k→+∞,則β(k)→0。
如果在進行多重線性回歸分析時,從專業(yè)上或通過共線性診斷得知自變量間存在多重共線性,那么可以考慮用嶺回歸分析進行參數(shù)估計,在進行嶺估計時通常采用以下幾步:
第1步,嶺回歸分析通常要先對X變量作中心化和標準化處理,以使不同自變量處于同樣數(shù)量級上而便于比較。
第2步,確定k值。
(1)嶺跡法
嶺跡法主要是通過將β(k)的分量βi(k)的嶺跡畫在同一幅圖上,從圖中選擇盡可能小的k值,使得各回歸系數(shù)的嶺估計大體穩(wěn)定,即各分量在圖上的嶺跡曲線趨于平行于X軸。選擇k值的一般原則主要有:①各回歸系數(shù)的嶺估計基本穩(wěn)定;②用最小二乘估計時符號不合理的回歸系數(shù),其嶺估計的符號將變得合理;③回歸系數(shù)的大小要與實際相符,即從專業(yè)上講對因變量影響較大的自變量其系數(shù)的絕對值也較大;④均方誤差增大不太多。
(2)方差膨脹因子法
方差膨脹因子cjj度量了多重共線性的嚴重程度,一般當cjj>10時,模型就有嚴重的多重共線性,如果計算嶺估計βi(k)的協(xié)方差陣為:
上式中矩陣Cij(k)的對角元素cjj(k)就是嶺估計的方差膨脹因子,不難看出,cjj(k)隨著k的增大而減小。應用方差膨脹因子選擇k的經(jīng)驗做法是:選擇k使所有方差膨脹因子cjj(k)≤10。
此外還有Cp準則法、Hoerl-Kennad公式法、Mcdorard-Gararneau法、雙h公式法等,因SAS的REG過程主要可以運用嶺跡法及方差膨脹因子法,所以其他的方法在此不作介紹,有興趣的讀者可以參考相關(guān)的文獻。
第3步,根據(jù)嶺跡圖進行變量篩選及重新確定k值。
嶺跡圖不僅能夠?qū)做出確定,還可以根據(jù)自變量的嶺跡曲線對自變量進行篩選,也就是說可以根據(jù)自變量的嶺跡曲線來判斷該變量是否可以進入回歸方程。把嶺跡應用于回歸分析中自變量的選擇,其基本原則為:
(1)去掉嶺回歸系數(shù)比較穩(wěn)定且絕對值比較小的自變量。這里嶺回歸系數(shù)可以直接比較大小,因為設(shè)計陣X是假定已經(jīng)中心標準化了的。
(2)去掉嶺回歸系數(shù)不穩(wěn)定但隨著k值的增加迅速趨于零的自變量。
(3)去掉一個或若干個具有不穩(wěn)定嶺回歸系數(shù)的自變量。如果不穩(wěn)定的嶺回歸系數(shù)很多,究竟去掉幾個,去掉哪幾個,并無一般原則可遵循。這要結(jié)合已找出的復共線性關(guān)系以及去掉后重新進行嶺回歸分析的效果來決定。
第4步,對模型進行表達及作出專業(yè)結(jié)論。
在進行嶺估計后,應根據(jù)所估計的參數(shù)寫出回歸方程,并結(jié)合專業(yè)知識判斷方程中各自變量的系數(shù)及正負號是否符合實際情況。最后根據(jù)回歸系數(shù)的大小來判斷各自變量對因變量影響的大小及根據(jù)所求得的回歸方程進行預測。
沿用文獻[2]中的“問題與數(shù)據(jù)”,并基于派生變量得到的“最優(yōu)回歸模型”所決定的“數(shù)據(jù)集”,來提出下面的“新問題”:即“weight”的回歸系數(shù)為“-88.00801”,這個“負值”表明體重越重的人收縮壓(SBP)越低,這似乎不符合臨床專業(yè)知識。盡管計算出來的因變量的預測值在專業(yè)上都成立,而且,模型的殘差方差=122.32418、R2=0.9931,這些結(jié)果都提示所構(gòu)建的多重線性回歸模型很好。但畢竟存在回歸系數(shù)的正負號不符合專業(yè)知識的“嚴重瑕疵”,這是一個需要徹底解決的“疑難問題”!
解決上述提及的“疑難問題”的一個有效方法就是使用“嶺回歸分析”。所需要的SAS程序如下:
data a1;
input id age height weight bmi sbp;
cards;
(此處輸入文獻[2]表1中50行6列數(shù)據(jù))
;
run;
/* 以上程序為了創(chuàng)建數(shù)據(jù)集a1 */
data a2;
set a1;
x1=age*age; x2=age*height; x3=age*weight;
x4=age*bmi; x5=height*height; x6=height*weight;
x7=height*bmi; x8=weight*weight; x9=weight*bmi;
x10=bmi*bmi;
run;
/* 以上程序是在數(shù)據(jù)集a1基礎(chǔ)上創(chuàng)建數(shù)據(jù)集a2,它增添了10個派生變量 */
proc reg data=a2;
model sbp=age height weight bmi x1-x10/noint selection=backward sls=0.05;
quit;
/* 以上程序是基于數(shù)據(jù)集a2擬合文獻[2]中那個“最佳”回歸模型 */
symbol1 v=x c=blue;
symbol2 v=circle c=black;
symbol3 v=square c=red;
symbol4 v=triangle c=green;
symbol5 v=dot c=yellow;
symbol6 v=# c=orange;
symbol7 v=% c=purple;
symbol8 v=$ c=blue;
legend1 mode=protect position=(bottom right inside)
across=3 cborder=black offset=(0,0) label=(color=blue position=(top center) 'independent variables') cframe=white;
/* 以上程序為了設(shè)置繪圖的基本條件 */
proc standard data=a2 m=0 s=1 out=a3;
run;
/* 以上程序為了對數(shù)據(jù)集a2進行標準化變換 */
/*因前面用后退法篩選自變量,故僅保留有統(tǒng)計學意義的自變量,列在下面的model語句*/
proc reg data=a3 outest=b1 ridge=0 to 0.1 by 0.01;
model sbp=age weight x3 x6-x10/noint;
plot /ridgeplot vref=0 lvref=1 nomodel legend=legend1 nostat;
quit;
/* 以上程序是基于標準化變換后的數(shù)據(jù)集a3進行嶺回歸分析并繪制出嶺跡圖 */
proc print data=b1;
run;
/* 以上程序為了輸出嶺回歸分析的計算結(jié)果 */
proc reg data=a2 outest=b2 ridge=0 to 0.1 by 0.01;
model sbp=age weight x3 x6-x10/noint;
quit;
/* 以上程序是基于數(shù)據(jù)集a2進行嶺回歸分析以便獲得與原變量對應的嶺回歸分析結(jié)果 */
/* 其中,“ridge=0 to 0.1 by 0.01”就是讓嶺參數(shù)k取一系列數(shù)值代入建模 */
proc print data=b2;
run;
/* 以上程序是輸出與原變量對應的嶺回歸分析結(jié)果 */
【SAS程序說明】在以上的SAS程序中,都用“/* ……… */”注釋語句作了說明。
以上SAS程序輸出的結(jié)果非常多,因篇幅所限,此處從略。下面僅摘要給出最主要的結(jié)果。
由繪制出的嶺跡圖(圖略)可知:當嶺參數(shù)k=0.01時,全部8個自變量的回歸系數(shù)就已經(jīng)趨向于穩(wěn)定狀態(tài),但結(jié)合數(shù)據(jù)集b1的輸出結(jié)果可從數(shù)值清楚地看出:當嶺參數(shù)k=0.08時,全部8個自變量的回歸系數(shù)的取值波動都在小數(shù)點后第2位上,因為k的取值越大,自變量的回歸系數(shù)數(shù)值波動就會越小,但殘差方差會越大。故要求不高時,本例可取k=0.01;要求稍高一點時,可取k=0.08。
(1)標準化條件下嶺回歸分析所得到的全部自變量的回歸系數(shù)
由數(shù)據(jù)集b1可獲得標準化條件下嶺回歸分析所得到的全部自變量的回歸系數(shù):
k=0.01和k=0.08時,全部自變量的標準化回歸系數(shù):
kageweightx3x6x7x8x9x100.011.361760.370-1.248120.6060.3183-0.0352-0.1420.10000.080.577370.228-0.269360.2830.19050.0213-0.048-0.0693
(2)基于原變量的嶺回歸分析所得到的全部自變量的回歸系數(shù)
kageweightx3x6x7x8x9x100.011.400700.1400-0.0067670.002870.01370-0.000034-0.001100.005920.080.593880.0865-0.0014600.001340.008200.000021-0.00037-0.00410
(3)基于原變量的常規(guī)多重線性回歸分析所得到‘最佳結(jié)果’的全部自變量的回歸系數(shù)
ageweightx3x6x7x8x9x101.82182-88.00801-0.00970.645694.32456-0.058350.78530-2.62458
【說明】比較上面的“(2)”與“(3)”中各自變量前的回歸系數(shù)可知,引入派生變量并構(gòu)建出“最優(yōu)回歸模型”后,weight的回歸系數(shù)為“-88.00801”[見上面的“(3)”標題之下第2行],該負值不符合臨床專業(yè)知識;經(jīng)過嶺回歸分析后,得出:weight的回歸系數(shù)為“0.0865”[見上面的“(2)”標題之下k=0.08的那一行],這個系數(shù)是正值,與臨床專業(yè)知識相符。由此可知,在創(chuàng)建多重線性回歸模型的過程中,引入派生變量并采取多種方法進行自變量篩選,在獲得“最佳多重線性回歸模型”后,再采用嶺回歸分析進一步優(yōu)化多重線性回歸模型,這樣在獲得了較小殘差方差的多重線性回歸模型的基礎(chǔ)上,又能使少數(shù)自變量回歸系數(shù)的正負號不符合專業(yè)要求的問題得到合理解決。