因為這個相關矩陣是對稱的,λi=λk,故ColT=λikλkkλkkλk=λix1x2x3x4x5x6Rowx11.00.550.430.320.280.362.94x20.551.00.500.250.310.322.93x30.430.501.00.390.250.332.90x40.320.250.391.00.430.492.88x50.280.310.250.431.00.432.71x60.360.320.330.490.431.02.94Col2.942.932.902.882.712.94T=17.30Col/T0.710.700.700.690.650.71從上麵的推導得知,Col/T=λi。上表最後一行就是第一個因子的因子載荷。所以根據我們的假設,x1的載荷是λ1=0.71,x2的載荷λ2=0.70,…,x6的載荷λ6=0.71。因此,用上麵的方法求得的第一個因子F1為F1=0.71x1+0.70x2+0.70x3+0.69x4+0.65x5+0.71x6以上的因子載荷計算是利用一個假設:“兩個變量的相關等於它們的因子載荷的乘積”。
可是,利用“因子載荷的乘積”估計出來的相關不會完全等於原來的相關。原因是因子F1沒有能力完全解釋這6個變量的方差協方差。原來的相關矩陣與估計出來的矩陣的差稱為“殘餘矩陣”。
“殘餘矩陣”就是第一個因子代表原來的相關矩陣的誤差,也可以說是第一個因子代表原來的相關矩陣的“剩餘”或是“解釋不了的地方”。
用統計的名詞,“殘餘矩陣”其實就是相關矩陣把第一因子控製以後的“淨相關矩陣(partialcorrelationmatrix)”。
x1x2x3x4x5x6λ1λ2λ3λ4λ5λ61.00.550.430.320.280.36λ1λ1λ1λ2λ1λ3λ1λ4λ1λ5λ1λ6λ1x20.551.00.500.250.310.32λ2λ1λ2λ2λ2λ3λ2λ4λ2λ5λ2λ6λ2x30.430.501.00.390.250.33λ3λ1λ3λ2λ3λ3λ3λ4λ3λ5λ3λ6λ3x40.320.250.391.00.430.49λ4λ1λ4λ2λ4λ3λ4λ4λ4λ5λ4λ6λ4x50.280.310.250.431.00.43λ5λ1λ5λ2λ5λ3λ5λ4λ5λ5λ5λ6λ5x60.360.320.330.490.431.0λ6λ1λ6λ2λ6λ3λ6λ4λ6λ5λ6λ6λ6x1x2x3x4x5x6λ1λ2λ3λ4λ5λ60.710.700.700.690.650.711.00.550.430.320.280.36λ10.710.500.500.500.490.460.50x20.551.00.500.250.310.32λ20.700.500.490.490.490.460.50x30.430.501.00.390.250.33λ30.700.500.490.490.480.450.49x40.320.250.391.00.430.49λ40.690.490.490.480.480.450.49x50.280.310.250.431.00.43λ50.650.460.460.450.450.420.46x60.360.320.330.490.431.0λ60.710.500.500.490.490.460.50左邊的相關矩陣是我們的觀察矩陣,右邊的相關矩陣是用第一個因子的載荷“估計出來的”矩陣。把左邊的“相關矩陣”減右邊的“用第一因子的因子載荷相乘而得的矩陣”就等於“殘餘矩陣”,也就是第一因子不能解釋相關矩陣的部分。殘餘矩陣x1.1x2.1x3.1x4.1x5.1x6.1x1.10.500.05-0.07-0.17-0.18-0.14x2.10.050.510.01-0.24-0.15-0.18x3.1-0.070.010.51-0.09-0.20-0.16x4.1-0.17-0.24-0.090.52-0.020.00x5.1-0.18-0.15-0.20-0.020.58-0.02x6.1-0.14-0.18-0.160.00-0.020.50注:x1.1是x1除去了第一因子解釋的部分的變量。利用“殘餘矩陣”,根據同樣的方法,我們就可以估計第二個因子(F2)。這個第二因子是反映了第一因子(F1)不能代表原來相關矩陣的“殘餘”部分。因此,第二因子(F2)是彌補第一因子(F1)代表原來相關矩陣的不足。兩個因子合起來就更能代表原來的相關矩陣。可是,在估計第二因子以前,我們看見殘餘矩陣內有很多負數。因此我們要做一個稱為“反映(reflection)”的動作。“反映”其實就是把某些變量改變符號。因為x4,x5和x6的殘餘相關有很多負數,我們把這3行的殘餘相關改變了符號(不過我們會把這個“反映”記錄在案的)。殘餘矩陣x1x2x3x4x5x6“反映”後的殘餘矩陣x1x2x3-x4-x5-x6x10.500.05-0.07-0.17-0.18-0.14x10.500.05-0.070.170.180.14x20.050.510.01-0.24-0.15-0.18x20.050.510.010.240.150.18x3-0.070.010.51-0.09-0.20-0.16x3-0.070.010.510.090.200.16x4-0.17-0.24-0.090.52-0.020.00-x40.170.240.090.520.020.00x5-0.18-0.15-0.20-0.020.58-0.02-x50.180.150.200.020.580.02x6-0.14-0.18-0.160.00-0.020.50-x60.140.180.160.000.020.50注:x4,x5和x6的自相關0.52,0.58和0.50的符號沒有變。原因是“反映”的動作在橫的x4,x5和x6做了一次,把符號改變了。但是直的x4,x5和x6又再做了一次,把負數再改變回來。現在我們用同樣的方法,再求“第二個”因子。“反映”後的殘餘矩陣x1x2x3x4x5x6Rowx10.500.05-0.070.170.180.140.97x20.050.510.010.240.150.181.14x3-0.070.010.510.090.200.160.91x40.170.240.090.520.020.001.0x50.180.150.200.020.580.021.07x60.140.180.160.000.020.500.96Col0.971.140.911.01.070.96T=6.05Col/T0.400.460.37-0.41-0.43-0.39注:因為x4,x5和x6做了“反映”的動作,所以它們的因子權數變成負數。因此,用上麵的方法求得的第二個因子F2為F2=0.40x1+0.46x2+0.37x3-0.41x4-0.43x5-0.39x6以上“反映”這個動作,讓我們了解到為什麼有些時候載荷會是負數。其主要的原因是,這些變量與其他變量的相關是相反的。利用上麵的邏輯繼續下去,我們就可以找到第三、第四、第五、第六個因子了。到了第六個因子後,你會發現“殘餘矩陣”內的所有相關係數都會變成0,代表我們已經完全解釋了原來的相關矩陣。一個好的因子分析方法是用最少的因子來代表(解釋)變量的最多方差。一個因子解釋變量的能力是這個因子在所有變量的因子載荷的平方和。因此,一個抽取因子的方法如果能夠得到最大的“因子載荷平方和”的,就是最理想的抽取因子的方法。以上介紹的“重心法”是把“因子載荷的絕對值的和”最大化,因此,隻是一個完美的方法。真正把“因子載荷平方和”最大化的方法稱為“主成分法(principalcomponentmethod)”。
(2)主成分法(principalcomponentmethod)如果F=w1x1+w2x2+w3x3+w4x4+w5x5+w6x6如果我們用矩陣方式表示的話,F1的方差為Var(F1)=Var(wi′x)=wi′Σwi[注:Σ是x1到x6的方差協方差矩陣]最大化[Var(F1)]=最大化[wi′Σwi]可是這裏有一個問題,如果我們找到某一組wi,如F1=0.2x1+0.3x2+0.4x3+0.4x4+0.2x5+0.3x6我們永遠可以把整組λi乘以一個常數,讓F1的方差[Var(F1)]變得更大,故在找尋因子時,統計學家就多加了一項條件,就是wi′wi=1(也就是因子權重的平方和等於1)。因此,因子分析的目標是找n組(n小於變量的數目)互不相關的wi′X(X的線性函數),讓:[Var(F1)]最大化或是[wi′Σwi]最大化條件是λ′iλi=1統計學告訴我們x1到x6組成的“方差協方差矩陣(variancecovariancematrix,Σ)的“特征向量”就可以達到以上的目標。每個n維的矩陣都有n個“特征值特征向量”配對。要了解“特征向量”,我們就要明白一個矩陣的“特征值”。
對於一個矩陣Σ來說,它的“特征值”(αi)是符合以下公式的α數值(I是單位矩陣,identitymatrix):|Σ-αI|=0這個方程稱為矩陣的特征方程。例1如果Σ=10
13,上麵的方程就變為10
13-α10
01=010
13-α0
0α=01-α0
13-α=01-α3-α=0α=1或α=3在這個例子中1和3就是Σ=10
13的兩個“特征值”。
如果矩陣Σ的特征值是αi,那麼Σ的“特征矩陣”(e)就是所有符合以下方程的矩陣:ΣX=αX而e=XX′X繼續上麵的例子,因為Σ=10
13的“特征值”是1和3,所以Σ的兩個“特征矩陣”為10
13λ1
λ2=1λ1
λ2和10
13λ1
λ2=3λ1
λ2根據左邊的方程,得λ1=λ1
λ1+3λ2=λ2如果我們隨意定義λ2=1的話,λ1=-2。當α=1時,“特征向量”(e)為e=XX′X=1λ21+λ22λ1
λ2=-25
15例2如果Σ=1-20
-250
002的話,因為這是個三維的矩陣,它會有3個“特征值”和3個對應的“特征矩陣”,即α1=5.83e′1=[0.383,-0.924,0]α2=2.00e′2=[0,0,1]α3=0.17e′3=[0.924,-0.383,0]Σ的3個主成分變量就為y1=0.383x1-0.924x2+0x3
y2=0x1+0x2+x3
y3=0.924x1-0.383x2+0x3或y1=0.383x1-0.924x2
y2=x3
y3=0.924x1-0.383x2看到這裏,讀者可能開始有點迷茫了。這個看上去古古怪怪的“特征值”和“特征向量”到底是什麼東西?其實我們可以用以下簡單的概念去理解它們。首先,如果我們把一個矩陣(matrix)乘以一個向量(vector),其實在幾何上就是改變了這個向量的角度。
向量5—3乘以4-4-22後,變成8-4。我們可以把這個轉換看成是把向量53順時針轉了60°左右,而且“拉長”了一點。有了這個認知,我們就可以把特征向量做下麵的理解。因為X(k×1)這個向量如果符合下麵條件的話,就可以稱為矩陣A(k×k)的特征向量,而λ這個無向量(或稱純量)就稱為X的特征值:AX=λX因為矩陣A乘以X後,X的方向沒有改變,隻是X前麵多了一個常數λ。因此,我們可以說:矩陣A沒有旋轉向量X(也就是說A沒有改變A的方向),矩陣A隻是把向量X“拉長”了。拉長多少呢?拉長了λ這麼多倍。因此,我們可以這樣說:當一個矩陣A乘以(試圖旋轉)一個向量X時,如果矩陣A沒有改變向量X的方向,隻是把向量拉長了λ倍的話,這個向量X就稱為矩陣A的特征向量,λ就稱為矩陣A的特征值。一個維度(箭頭)在空間裏就是一個向量;一個2×2的矩陣就是一個平麵。
蒙娜麗莎的畫像(一個平麵)可以用來表現一個矩陣A。指向上的箭頭可以用來代表一個向量X。當矩陣A試圖旋轉向量X時(畫像沿著上麵箭頭方向平麵地向前轉,向上的箭頭(向量X)的方向沒有被改變。它的大小(長短)也沒有在旋轉中改變。所以上麵箭頭這個向量A就可以稱為蒙娜麗莎這幅畫像這個矩陣X的“特征向量”。
因為向量A沒有在旋轉過程拉長,所以矩陣X的“特征值”λ=1。如果這個畫像一麵旋轉卻一麵拉伸[請注意因為旋轉的方法不同,現在的矩陣A與剛才的A已經不同了],X還是矩陣A的“特征向量”,但是“特征值”λ卻大於1了。但是如果這幅畫像現在用另外一個方法來旋轉。畫像現在是沿著右邊箭頭往後地上下轉(注:因為旋轉的方法不同,現在的矩陣A又跟以前的不同了)。現在向上的向量X在旋轉的過程中方向改變了。原來向量X是向上的,現在慢慢地指向後麵了。現在的向量A已經不再是矩陣A的“特征向量”了。可能另外一個向量(可能是向右的橫向量)才是現在的矩陣A的特征向量了。或者簡單一點,短的是原來的向量(稱為X),如果我們找到一個矩陣A,把A乘以X後,X方向沒有改變,隻是拉長了一點。X就是A的一個特征向量,λ就是A的一個特征值。資料來源:http://en.wikipedia.org/wiki/Eigenvalue,_eigenvector_and_eigenspace明白了矩陣、特征向量和特征值的關係,如何幫助我們理解特征向量就是方差協方差矩陣的因子呢?讓我們嚐試用一個粗疏的比喻解釋一下。
現在讓我們回到開始的問題。讓我用一個橢圓形的雞蛋來代表這些數據的方差協方差矩陣(Σ)。如前所述,這個橢圓體是一個“想象”出來的東西。我們把觀察到的數據的邊界想象成為一個橢圓體。為什麼是橢圓形呢?因為它們是相關的。如果沒有關係,應該是一個球體。如果是完美的相關,應該是一條直線。一個橢圓體就介於球體與直線之間。如果我現在不準你用三個維度來描述這些數據,而隻準你用一個維度的的話,那自然會用一個x1,x2,x3的線性組合,也就是它們的一個因子。我們也知道一個在三維空間的線性組合,其實就是一個x1,x2,x3組成的向量。但是如何找這個線性組合(向量)呢?直覺告訴我們,最合理的就是淺灰色這個貫穿所有數據中間的向量。如果我現在讓你再加一個因子的話,第二個線性組合(向量)應該就是深灰色的,貫穿所有數據中間,但是垂直於第一個因子的向量。但是,大家有沒有注意到,整個方差協方差矩陣(也就是這個雞蛋)旋轉的時候,唯一一個不會改變方向的向量,也正是這兩個深灰色與淺灰色的向量(軸)?同時,如果要盡可能代表這個數據,我們會把這兩個向量“拉長”,使它們可以覆蓋所有的數據。用數學的語言來說,這些線性的組合(因子)就是這個方差協方差矩陣的“特征向量”。
而我們要伸延它們的程度,也就是它們的“特征值”了。數學上的推導告訴我們,任何一個矩陣其實都可以拆成由它的“特征值”和“特征矩陣”組成的總和。對於任何一個(k×k)的矩陣:A=λ1e1e′1+λ2e2e′2+…+λkeke′k如果eke′k=1(k×k)(k×1)(1×k)雖然有很多不同的計算方法來幫助我們計算矩陣的特征值和特征矩陣。但是,當變量數目越來越大時,方差協方差矩陣也越來越大。尋找“特征值”和“特征矩陣”就越來越複雜了。現在一般都是用電腦模擬的方法來尋找矩陣的特征值和特征矩陣。下麵用一個簡單的數據來演算一下。假設我們有4個變量:x1,x2,x3,x4。以下是我們的數據:x1x2x3x42322344532242322123355333322323333224422我們計算數據的方差協方差矩陣:x1x2x3x4x11.21110.78890.05560.0889x20.78890.98890.16670.0222x30.05560.16670.50000.5556x40.08890.02220.55561.0667然後,我們找計算程序計算這個矩陣的特征值和特征向量(這樣的程序在網上很容易找到)。因為方差協方差矩陣是四維的(有4個變量),我們知道應該有4個特征值和它們對應的特征向量。計算結果如下:α1=1.9422e1=[0.72340.63480.17970.2036]
α2=1.3660e2=[-0.2070-0.16870.48760.8312]
α3=0.3519e3=[0.6055-0.6598-0.37630.2377]
α4=0.1066e4=[-0.25920.3651-0.76710.4595]根據主成分法,因子的載荷就是特征值的平方根乘以特征向量的值。例如,第二個變量(x2)在第一個因子的載荷(λ12),即l12=e12α1=(0.6348)1.9422=0.8847(見下表原始載荷因子1,x2項)同樣的l34=e34α3=(0.2377)0.3519=0.1410(見下表原始載荷因子3,x4項)但是讀者會看到,我們把這個因子載荷稱為“原始載荷”。
因為我們談過,主成分法的要求是,每一個因子載荷的平方和要等於1(λ′iλi=1)。我們發現現在這個原始載荷不符合這個條件。例如,因子1的平方和是1.2111,因子2的平方和是0.9889。所以我們要做一個小小的轉換,使因子載荷符合這個條件。轉換的方法為λjk=ljkkl2jk經過轉換後,符合“λ′iλi=1”的因子載荷就是我們真正的載荷,在下表中稱為“調節載荷”。
23=l223/(2k)2=(0.56992)/0.5000=0.8059αχ1χ2χ3χ41.94220.72340.63480.17970.20361.3660-0.2070-0.16870.48760.83120.35190.6055-0.6598-0.37630.23770.1066-0.25920.3651-0.76710.4595原始載荷1234因子11.00820.88470.25040.2837因子2-0.2419-0.19720.56990.9715因子30.3592-0.3914-0.22320.1410因子4-0.08460.1192-0.25050.1500(k)21.21110.98890.50001.0667調節載荷1234因子10.91610.88960.35420.2747因子2-0.2198-0.19830.80590.9406因子30.3264-0.3936-0.31570.1365因子4-0.07690.1199-0.35420.1453明白了因子載荷的計算方法後,我們來看看因子解釋能力的問題。①我們上麵講過,一個因子的特征值,其實就是這個因子的方差。我們知道4個變量的方差,分別是1.2111,0.9889,0.5000和1.0667,它們的總方差和是3.7667。而4個抽取出來的因子的特征值分別是1.9422,1.3660,0.3519和0.1066。因子的特征值的總和也是3.7667。為什麼呢?因為隻有4個變量,如果我們用4個因子,就能完全解釋變量的所有方差了。為什麼“因子的方差”就是“能解釋變量的方差”呢?因為這是我們抽取因子時所用的標準。因子是根據“能解釋變量的方差”的能力來選取的。②雖然因子的總方差等於變量的總方差。但是它們代表變量的能力是不一樣的。主成分法的特點是第一因子解釋變量方差的能力最高。從下表中看到,第一因子的方差是1.9422,除以變量的總方差3.7667,代表第一因子解釋了所有變量的總方差的51.56%。同樣的,第二因子解釋了35.27%,第三因子解釋了9.34%,第四因子解釋了2.83%。故這裏我們也看見第三因子和第四因子是相對沒用的了。其實它們的特征值也是小於1的。③下表可見我們的特征向量是標準化的,故e2k=1。(e2k)=e221+e222+e223+e224=(-0.2070)2+(0.16872)+(0.4876)2+(0.8312)2=1F3的總方差特征值(α)e1e2e3e4(ek)21.94220.72340.63480.17970.20361.01.3660-0.2070-0.16870.48760.83121.00.35190.6055-0.6598-0.37630.23771.00.1066-0.25920.3651-0.76710.45951.0=3.7667x1x2x3x4Total方差1.21110.98890.50001.06673.7667F1F2F3F4特征值1.94221.36600.35190.10663.7667方差解釋%51.56%36.27%9.34%2.83%100%1.94223.7667=51.56%4個變量的總方差和=4個因子的總方差(特征值)明白了因子載荷和因子的解釋能力後,我們最後談一談載荷旋轉的問題。在超過兩個維度(變量)的情形下,載荷旋轉是不容易了解的。因此,我們就用一個最簡單的例子來說明兩個變量下因子的旋轉。假設我們有以下的數據:x13214243152x22235554233x1與x2的相關矩陣是:x1x2x11.00.407x20.4071.0主成分分析的結果是,找到的兩個特征值是1.407和0.593。對應的因子載荷是:原來的x1與x2的載荷使得F1與F2很難分別。因為x1與x2在F1與F2都很大。現在我們要把上麵的載荷旋轉。旋轉的條件就是結果的載荷方差是最大的。在二維平麵上,我們可以用以下的矩陣作旋轉之用:順時針旋轉cossin-sincos逆時針旋轉cos-sinsincos最大方差旋轉法VARIMAX的條件為最大化2j=1(jth因子的載荷)2結果發現大概逆時針旋轉45°就能達到這個條件,即0.8390.544
0.5440.839cosπ/2-sinπ/2sinπ/2cosπ/2=0.2080.9780.9780.208因此,我們把A,B的兩個箭頭鎖住(它們代表了沒有旋轉前的x1與x2),逆時針旋轉45°,得到了C,D的兩個箭頭鎖住(它們代表了經過旋轉後的x1與x2)。經過旋轉後,C,D兩個點就很好理解了。F1代表x2,F2代表x1。