最近和同學(xué)討論他們要做的電子醫(yī)療系統(tǒng)的時候镇草,聊到單因素分析和主成分分析乘凸,一想自己對這方面也不是很懂橘券,就用sas做了一套標(biāo)準(zhǔn)的流程茉稠,記錄如下:
個人總結(jié):如果遇到多因素分析描馅,想要很多很多個自變量與因變量進行線性回歸分析必須進行降維,一種很好的解決方案就是主成分分析而线。
引言
主成分分析铭污,舉了這么個例子:就像你選女人,有身材膀篮、相貌兩個指標(biāo)嘹狞,如果身材、相貌都很突出誓竿,那當(dāng)然很好選擇磅网;但如果兩個女人,一個身材突出烤黍,一個相貌出眾知市,看著都很喜歡傻盟,那可如何是好速蕊!這個時候通過主成分分析,匯總出一個指標(biāo)娘赴,這個指標(biāo)可以一定程度上代替原來的身材规哲、相貌,這時就可以排序做出選擇了诽表。
這例子當(dāng)然有很多缺陷唉锌,但至少指出了主成分分析的目的之一:減少決策變量數(shù),也就是降維竿奏。主成分分析的另一個目的是防范多重共線性袄简。實際問題往往涉及很多變量,但某些變量之間會有一定的相關(guān)性泛啸,我們希望構(gòu)造較少的幾個互不相關(guān)的新指標(biāo)來代替原始變量绿语,去除多重共線性,減少所需分析的變量候址,同時盡可能減少這一過程的信息損失吕粹。主成分分析正是基于這樣的目的而產(chǎn)生的有效方法。
主成分分析流程
1岗仑、原始數(shù)據(jù)標(biāo)準(zhǔn)化匹耕。
2、計算標(biāo)準(zhǔn)化變量間的相關(guān)系數(shù)矩陣荠雕。
3稳其、計算相關(guān)系數(shù)矩陣的特征值和特征向量驶赏。
4、計算主成分變量值既鞠。
5母市、統(tǒng)計結(jié)果分析,提取所需的主成分损趋。
實例(個人覺得說了再多患久,其實一個實例就懂了)
下表列出了1999年全國31個省、直轄市和自治區(qū)(港浑槽、澳蒋失、臺不在其中)的城鎮(zhèn)居民家庭平均每人全年消費性支出的八個主要變量數(shù)據(jù),請從八個變量中識別出主成分桐玻。
變量說明(隨便從網(wǎng)上找的數(shù)據(jù))
x1:食品 ? ? ? ? ? ? ? ? ? ? ? ?x2:交通和通訊
x3:衣著 ? ? ? ? ? ? ? ? ? ? ? ?x4:娛樂教育文化服務(wù)
x5:家庭設(shè)備用品及服務(wù) ? x6:居住
x7:醫(yī)療保健 ? ? ? ? ? ? ? ? ?x8:雜項商品和服務(wù)
1.對照省份可用sas做表
data comp;
input name $ x1-x8;
cards;
北京 2959.19 730.79 749.41 513.34 467.87 1141.82 478.42 457.64
天津 2459.77 495.47 697.33 302.87 284.19 735.97 570.84 305.08
河北 1495.63 515.90 362.37 285.32 272.95 540.58 364.91 188.63
山西 1406.33 477.77 290.15 208.57 201.50 414.72 281.84 212.10
內(nèi)蒙古 1303.97 524.29 254.83 192.17 249.81 463.09 287.87 192.96
遼寧 1730.84 553.90 246.91 279.81 239.18 445.20 330.24 163.86
吉林 1561.86 492.42 200.49 218.36 220.69 459.62 360.48 147.76
黑龍江 1410.11 510.71 211.88 277.11 224.65 376.82 317.61 152.85
上海 3712.31 550.74 893.37 346.93 527.00 1034.98 720.33 462.03
江蘇 2207.58 449.37 572.40 211.92 302.09 585.23 429.77 252.54
浙江 2629.16 557.32 689.73 435.69 514.66 795.87 575.76 323.36
安徽 1844.78 430.29 271.28 126.33 250.56 513.18 314.00 151.39
福建 2709.46 428.11 334.12 160.77 405.14 461.67 535.13 232.29
江西 1563.78 303.65 233.81 107.90 209.70 393.99 509.39 160.12
山東 1675.75 613.32 550.71 219.79 272.59 599.43 371.62 211.84
河南 1427.65 431.79 288.55 208.14 217.00 337.76 421.31 165.32
湖北 1783.43 511.88 282.84 201.01 237.60 617.74 523.52 182.52
湖南 1942.23 512.27 401.39 206.06 321.29 697.22 492.60 226.45
廣東 3055.17 353.23 564.56 356.27 811.88 873.06 1082.82 420.81
廣西 2033.87 300.82 338.65 157.78 329.06 621.74 587.02 218.27
海南 2057.86 186.44 202.72 171.79 329.65 477.17 312.93 279.19
重慶 2303.29 589.99 516.21 236.55 403.92 730.05 438.41 225.80
四川 1974.28 507.76 344.79 203.21 240.24 575.10 430.36 223.46
貴州 1673.82 437.75 461.61 153.32 254.66 445.59 346.11 191.48
云南 2194.25 537.01 369.07 249.54 290.84 561.91 407.70 330.95
西藏 2646.61 839.70 204.44 209.11 379.30 371.04 269.59 389.33
陜西 1472.95 390.89 447.95 259.51 230.61 490.90 469.10 191.34
甘肅 1525.57 472.98 328.90 219.86 206.65 449.69 249.66 228.19
青海 1654.69 437.77 258.78 303.00 244.93 479.53 288.56 236.51
寧夏 1375.46 480.89 273.84 317.32 251.08 424.75 228.73 195.93
新疆 1608.82 536.05 432.46 235.82 250.28 541.30 344.85 214.40
;
run;
2.假定相互獨立篙挽,得到特征向量
proc princomp
data = mylib.comp
out = mylib.changecomp
prefix = comp /*(具體數(shù)據(jù)分析過程只需要看數(shù)據(jù),避免其他的干擾镊靴,改成代號名稱)*/
outstat = mylib.result
;
var x1-x8;
run ;
會得到以下結(jié)果:
除此之外铣卡,得到的changecomp表為:
得到的result表為:
3.快速得到主成分
首先我們需要知道主成分分析希望能夠達到什么樣的目的:
將多個指標(biāo)轉(zhuǎn)換為少數(shù)幾個相互獨立的且包含原來指標(biāo)大部分信息(一般是80%或85%)的綜合指標(biāo)
假如你并不想知道各種結(jié)果的含義,只想知道那些是主成分偏竟,那其實只需要用到上面的“相關(guān)矩陣的特征值”表的最后兩列:比例和累積
累積從哪一行大于85%就行了煮落;本實例是從第三行,因為這3個變量合起來解釋了原來8個變量87.81%的信息踊谋,能夠滿足要求蝉仇。
4.詳細解讀各種表
表1:PRINCOMP 過程
31個觀測代表數(shù)據(jù)中的31個省份/直轄市;
8個變量代表最開始的8個成分
表2:簡單統(tǒng)計量
這個表也很簡單殖蚕,均值x不用說轿衔,StD是標(biāo)準(zhǔn)差,即方差開個正根
表3:相關(guān)矩陣
相關(guān)系數(shù)又稱皮氏積矩相關(guān)系數(shù)(Pearson product-moment correlation coefficient,PPCC)睦疫,就是我們高中統(tǒng)計學(xué)獨立檢驗時候的r值害驹;
當(dāng)r>0時,表示兩變量正相關(guān)蛤育,當(dāng)r<0時宛官,表示兩變量為負相關(guān)。當(dāng)|r|=1時缨伊,表示兩變量為完全線性相關(guān)即函數(shù)關(guān)系摘刑。當(dāng)r=1時,稱為完全正相關(guān)刻坊,而當(dāng)r=-1時枷恕,稱為完全負相關(guān)。當(dāng)r=0時谭胚,表示兩變量間無線性相關(guān)關(guān)系徐块。
當(dāng)︱r︱≥0.8時未玻,可視為高度相關(guān);當(dāng)0.5≤︱r︱<0.8時胡控,可視為中度相關(guān)扳剿;當(dāng)0.3≤︱r︱<0.5時,視為低度相關(guān)昼激;當(dāng)︱r︱<0.3時庇绽,說明兩個變量之間的相關(guān)程度極弱。
本表里的x1與x5橙困、x1與x8瞧掺、x3與x6高度相關(guān);x2與x7負相關(guān)
表4:相關(guān)矩陣的特征值
列1.特征值越大凡傅,表示對應(yīng)的主成分變量包含的信息越多辟狈,對原始變量的解釋力度越強。
列2.相鄰兩行特征值之間的差值
列3.改行特征值/總特征值的和
列4.前面幾行的列3的和
(誤區(qū):變量不是越多越好夏跷,否則不能達到降維的目的哼转,一般等sqrt(num))
表5:特征向量
這個和特征值都是線性代數(shù)的內(nèi)容,幸虧還是學(xué)過這門課槽华。
對于同一個矩陣壹蔓,特征值和特征向量是一一對應(yīng)的;
A是矩陣硼莽,V就是特征向量庶溶,是特征值
對比本實例:
表3是A煮纵,表5的每一列是V懂鸵,表4的特征值是
5.除此之外的一些東西
1.以comp1與comp2分布散點圖:(載荷圖)
proc plot
data=mylib.changecomp vpct=100;/*vpct后的數(shù)值表示圖所占頁面的長度*/
plot comp1*comp2 ='*'$ name/
/* ='*'表明圖中的散點用*表示,還可用#等*/
/*美元符號后寫標(biāo)簽變量 name 代表每個點根據(jù)name變量命名*/
haxis=-3.5 to 3 by 0.5
HREF=-2,0,2 ? ? ?vaxis=-3 to 6 by 0.5
VREF=-2,0,2; ? ?/*HREF代表垂直于水平軸-2,0,2處畫參考線,VREF同理*/
title '主成分散點圖'
; ?/*title為結(jié)果命名行疏。Plot:主成分散點圖匆光,否則Plot:SAS系統(tǒng)*/
run;
2.changecomp表的comp變量是怎么來的
主成分變量是原始變量的線性表示,用公式表示如下:酿联;
X表示原始變量對應(yīng)數(shù)據(jù)組成的矩陣(以下稱為原始數(shù)據(jù)矩陣)终息,U是特征向量以列向量形式依次排列組成的矩陣(以下稱為特征向量矩陣)。
但是這樣做有問題贞让,原始數(shù)據(jù)還未標(biāo)準(zhǔn)化周崭;
proc standard
data = mylib.comp
out = mylib.standard
mean = 0
std=1;
var x1-x8;
run ;
正確的公式應(yīng)該是;
3.變量是否線性相關(guān)
proc corr
data = mylib.changecomp
out = mylib.compcorr
;
var comp1-comp8;
with comp1-comp8;
run ;
可以看出喳张,主成分變量之間的相關(guān)系數(shù)都為零续镇。