主成分分析方法和matlab函式中的princomp
主成分分析方法
在許多實際問題中,多個變數之間是具有一定的相關關係的。因此,我們就會很自然地想到,能否在各個變數之間相關關係研究的基礎上,用較少的新變數代替原來較多的變數,而且使這些較少的新變數儘可能多地保留原來較多的變數所反映的資訊?事實上,這種想法是可以實現的,這裡介紹的主成分分析方法就是綜合處理這種問題的一種強有力的方法。
一、主成分分析的基本原理
主成分分析是把原來多個變數化為少數幾個綜合指標的一種統計分析方法,從數學角度來看,這是一種降維處理技術。假定有n個地理樣本,每個樣本共有p個變數描述,這樣就構成了一個n×p階的地理資料矩陣:
(1)
如何從這麼多變數的資料中抓住地理事物的內在規律性呢?要解決這一問題,自然要在
如果記原來的變數指標為x1,x2,…,xp,它們的綜合指標——新變數指標為z1,z2,…,zm(m≤p)。則
(2)
在(2)式中,係數lij由下列原則來決定:
(1)zi與zj(i≠j;i,j=1,2,…,m)相互無關;
(2)z1
這樣決定的新變數指標z1,z2,…,zm分別稱為原變數指標x1,x2,…,xp的第一,第二,…,第m主成分。其中,z1在總方差中佔的比例最大,z2,z3,…,zm的方差依次遞減。在實際問題的分析中,常挑選前幾個最大的主成分,這樣既減少了變數的數目,又抓住了主要矛盾,簡化了變數之間的關係。
從以上分析可以看出,找主成分就是確定原來變數xj(j=1,2,…,p)在諸主成分zi(i=1,
二、主成分分析的計算步驟
通過上述主成分分析的基本原理的介紹,我們可以把主成分分析計算步驟歸納如下:
(1) 計算相關係數矩陣
(3)
在公式(3)中,rij(i,j=1,2,…,p)為原來變數xi與xj的相關係數,其計算公式為
因為R是實對稱矩陣(即rij=rji),所以只需計算其上三角元素或下三角元素即可。
(2)計算特徵值與特徵向量
首先解特徵方程|λI-R|=0求出特徵值λi(i=1,2,…,p),並使其按大小順序排列,即λ1≥λ2≥…,≥λp≥0;然後分別求出對應於特徵值λi的特徵向量ei(i=1,2,…,p)。
(2) 計算主成分貢獻率及累計貢獻率
主成分貢獻率:,累計貢獻率:。
一般取累計貢獻率達85-95%的特徵值λ1,λ2,…,λm所對應的第一,第二,……,第m(m≤p)個主成分。
(3) 計算主成分載荷
(5)
由此可以進一步計算主成分得分:
(6)
matlab:princomp解釋
主成分分析函式:
[coeff,score,letent]=princomp(x);
供獻率:每一維資料對於區分全部資料的供獻,供獻率最大的顯然是主成分,第二大的是次主成分......
[coef,score,latent,t2] = princomp(x);
x:為要輸入的n維原始資料。帶入這個matlab自帶函式,將會生成新的n維加工後的資料(即score)。此資料與之前的n維原始資料一一對應。
score:生成的n維加工後的資料存在score裡。它是對原始資料進行的解析,進而在新的座標系下獲得的資料。他將這n維資料按供獻率由大到小分列。(即在改變座標系的景象下,又對n維資料排序)
latent:是一維列向量,每一個數據是對應score裡響應維的供獻率,因為數佔領n維所以列向量有n個數據。由大到小分列(因為score也是按供獻率由大到小分列)。
coef:是係數矩陣。經由過程coef可以知道x是如何轉換成score的。但這個轉換不是單純的轉換,必須使用下列計算方法,即score(:,i)=coef*(x(:,i)-mean(x(:,i))),這樣才能得到。
用你的原矩陣x*coeff(:,1:n)才是你要的的新資料,其中的n是你想降到多少維。
而n的取值取決於對特徵值的累計貢獻率的計算。