正文 第10章因子分析(2 / 3)

因此,變量x1在第一因子(F1)、第二因子(F2)和第三因子(F3)的“載荷”分別是0.60,-0.06和0.02。上麵已經講過,因子載荷的平方代表了因子可以解釋變量的方差的部分。因此λ31(0.77)的平方(0.772=0.59)代表了F1能夠解釋x3的方差的59%。同樣的,λ273=(0.68)2=0.46代表了F3能夠解釋x7的方差的46%。“載荷平方總和”是x1到x9在每個因子的載荷平方的總和。因此,1.76=(0.602+0.812+0.772+0.012+0.032+0.122+0.192+0.082+0.262)。“平均方差解釋%”是1.76除9。所以0.19就是平均來說F1能夠解釋這9個項目變量的方差的19%。“平均方差解釋%”越高,就代表F1越能代表這9個項目變量。例如最極端的例子,如果F1能夠解釋這9個項目變量的方差的99%的話,用F1的方差就等於這9個項目變量的方差,這樣就沒有再找其他因子的必要了。在上表裏,3個因子加起來可以解釋9個項目變量的方差的47%。也就是說如果我們用這3個因子來代替這9個項目變量,9個項目變量大概有一半(53%)的方差就不見了。因此,“總平均方差解釋百分比”就是一個用少數的因子來代替一大堆的變量時,因子代表變量的“代表能力”或是“代表性”。

[注意:3個因子的“平均方差解釋%”可以加起來的原因是在估計F1,F2,F3時,它們是不相關的。如前所述,如果因子是相關的,“平均方差解釋百分比”就不可以這樣加起來了。]上表最後的一列稱為“分解共性(factoringcommonality)”或簡稱“共性(commonality)”(h2)。如果“載荷平方總和”是載荷平方的“縱”總和的話,“分子共性”就是載荷平方的“橫”總和。例如,x3的“分子共性”是0.60,(=0.772+0.032+0.082),它代表了3個因子加起來可以解釋x3的方差的60%。同樣,3個因子加起來可以解釋x5的方差的65%。“分子共性”越小,代表3個因子越不能代表該測量項目變量,也就是它與其他測量項目變量的共通性很低,即它的獨特性越強。最後,我們還要記得“因子載荷”是“因子”與“測量項目變量”的相關。上表中F1與x1,x2,x3的相關都很高(分別是0.60,0.81和0.77),與其他項目變量的相關都很低。F2與x4,x5,x6的相關都很高(分別是0.65,0.80和0.67);而F3與x7,x8,x9的相關都很高(分別是0.68,0.53和0.47)。這表明了F1很能夠代表x1,x2,x3;F2很能夠代表x4,x5,x6;F3很能夠代表x7,x8,x9。其實這也正是我們希望看見的結果。因為x1,x2,x3這3個測量項目本來就是在量度“關係”;x4,x5,x6這3個測量項目本來就是在量度“提升”;x7,x8,x9這3個測量項目本來就是在量度“紅利”。

上述這個分析的工具稱為“探索性因子分析(exploratoryfactoranalysis,EFA)”。

我們之所以稱它為“探索性”的因子分析,是因為所有的項目變量都會在所有的因子上有權數。這是不太適合我們的測量模型的。因為本來項目x1,x2,x3都是用來測量“關係”,而項目x4,x5,x6都是用來測量“晉升”。

理論上來說,x1,x2,x3應該隻在“關係”(F1)上有載荷,x4,x5,x6應該隻在“晉升”(F2)上有載荷。但是,在我們不清楚項目背後的因子結構時,就應該采用“探索性因子分析”了。相反,如果我們已經知道項目背後的因子結構(如所有的量表項目都是發表了的量表),就應該采用“驗證性因子分析”了。我們將在下一章討論“驗證性因子分析(confirmatoryfactoranalysis,CFA)”。

測量項目F1(關係)F2(提升)F3(紅利)分解共性h2x1休息時間,我會電話/上門問候主管0.60-0.060.020.36x2主管偶爾會邀請我到他家裏吃飯0.810.12-0.030.67x3凡節日/主管生日我會送禮物給他0.770.030.080.60x4如果有重要空缺,我會首先安排他0.010.65-0.040.42x5有機會的話,我會盡量提升他0.030.800.070.65x6在我下屬中,我會第一個提升他0.120.67-0.050.47x7我給他的獎金都蠻不錯的0.19-0.020.680.50x8他是我發獎金最多的人之一0.08-0.100.530.30x9我給他的獎金比其他人都多0.26-0.130.470.31平均方差解釋%19%17%11%47%上麵的結果是研究者很希望看見的。但是,有時候結果不一定這麼理想。當因子分析的結果像下表時,我們應該怎麼辦呢?測量項目F1F2F3分解共性h2x1休息時間,我會電話/上門問候主管0.600.350.020.48x2主管偶爾會邀請我到他家裏吃飯0.810.34-0.030.77x3凡節日/主管生日我會送禮物給他0.770.490.080.84x4如果有重要空缺,我會首先安排他0.500.650.440.87x5有機會的話,我會盡量提升他0.330.800.070.75x6在我下屬中,我會第一個提升他0.240.670.310.60x7我給他的獎金都蠻不錯的0.450.330.680.77x8他是我發獎金最多的人之一0.280.290.530.44x9我給他的獎金比其他人都多0.260.030.470.29平均方差解釋%26%24%14%一般情形下,探索性因子分析中的因子的“載荷”小於0.40的我們都把它們視為0,不作處理。但是上表中x3在F1與F2的“載荷”都大於0.40(分別是0.77與0.49)。同樣,x4在F1,F2與F3的“載荷”分別是0.50,0.65和0.44。而x7在F1與F3的“載荷”是0.45與0.68。一個變量同時在多於一個因子上“載荷”大於0.40的現象稱為“交叉載荷(crossloading)”。

“交叉載荷”在因子分析中不是一個好現象。這代表這3個測量項目到底在測量哪一個構念,並不是很清楚。也就是說,它們不是好的測量項目,或者這幾個構念其實在概念上可能有重疊。另外一個經常出現的現象是本來應該在同一個因子的項目,現在卻分裂成為兩個,甚至是3個因子。遇到不好的測量項目應該怎樣處理呢?由於“交叉載荷”和“因子分裂”有幾個不同的原因,也會有不同的對應方法。①抽樣誤差(samplingerror)。樣本太少時,會有很多奇怪的統計結果。這一類現象一般在再抽樣時,或是樣本增大了後就不見了。②有時候我們在研究中采用了別人已經發表出來的量表。如果是現存量表中有交叉載荷怎麼辦呢?有人會建議把交叉載荷的項目刪除。我們是絕對不讚成這樣的做法的。原因有二:第一,對於別人發表的量表,我們本來就不應該做探索性因子分析。因為項目背後的因子結構已經知道。第二,一些現存的量表一般都會經過多樣本、大樣本和嚴謹的信度、效度驗證。如果我們在自己的小樣本中偶爾發現偏差,在正常的情形下,隻要偏差不是非常嚴重,我們會偏於接受量表發展人的結果。當然,如果原來的量表發展沒有經過嚴謹的考查,那可另當別論。③有時候我們會采用外國人發展的量表。量表中會有一些完全不符合自己國情的項目。例如,問題可能是“你是共和黨還是民主黨的”又或是“作為下屬,當主管犯錯時,我會直接指出主管的錯誤”。

此等有明顯的文化差異的項目可能在探索性因子分析中有古怪的載荷。我們的建議是,如果有明顯的文化差異,適當的刪除是可以接受的,但是必須清楚地在研究的論文中寫出來。

10.3因子的數目

因子分析是用少於項目變量數目的因子來代表項目變量,以求減少變量的目的。但是因子越少,能解釋的項目變量的總方差就越少。相反,用的因子數目(numberoffactors)越多,能解釋的項目變量的總方差就越大。當因子數目等如變量數目時,變量的所有方差都可以被解釋了。但是,我們如何決定到底應該用幾個因子呢?一般有兩個標準。第一,如果是用主成分法的話,因子對應的特征值(eigenvalue)會隨著因子數目增多而逐漸遞減。當因子對應的特征值少於1的時候,我們一般就會停住。因此,“因子對應的特征值大於1”就是我們的第一個準則。這個規矩稱為KaiserGuttman標準。為什麼呢?因子的特征值大於1是什麼意思呢?KaiserGuttman標準的邏輯主成分法的特點,就是第一個抽取出來的因子是解釋所有變量(在上麵的例子就是從x1到x9)的方差的能力最大的。抽取了第一個因子後,餘下的方差就由第二個因子抽取(或者說盡量代表)。自然的,第二個因子也就是能夠解釋餘下的方差最大的一個線性組合。如果我們有n個變量,我們最多能抽取n個因子,因為n個因子就能解釋原來的變量的所有方差,再抽取其他的因子就違背了因子分析減少變量的本來目的了。在主成分法中,一個因子的特征值其實就是這個因子的方差。因此,n個特征值的和應該等於n個變量的所有方差。如果我們分析的是變量的“相關係數矩陣”,每個變量的方差都是1(大家記得相關係數矩陣,所有變量的方差都是1)。n個變量的方差的和就是n。平均來講,每一個因子的方差就應該是(1/n)。理論上來說,一個因子的方差越大越好。因為因子的抽取方法就是要盡量解釋變量的方差。因子方差越大,它能夠解釋變量方差的能力就越大。如果一個因子的特征值小於1,就是它的方差小於1。如果是用相關係數矩陣作分析的話,這個因子就隻是等於一個變量的方差。因子分析是為了減少變量。一個平均隻能解釋一個變量的方差的因子是沒效用的,我們不如用原來的變量好了,幹嘛還要抽因子呢?因此,我們可以形象地說,當特征值小於1時,就表明了這個因子“沒有盡到它該負的因子的責任”。

大家明白了上麵的討論後就會理解,特征值大於1的標準,隻有在用相關矩陣以主成分法抽取因子才合用。如果是用方差協方差矩陣抽取因子的話,那KaiserGuttman標準就應該是:1/變量的總方差。第二,我們也可以畫一幅因子數目與因子特征值的圖畫,看看當中有沒有突然的折變,如增加了一個因子後,特征值驟然下降。那這個轉折點就是我們應該停止的信號。這個方法稱為陡坡圖(Screeplot)。

由一個因子增加到兩個因子,特征值從4.7跌到2.8左右。如果再加上第三個因子,特征值就驟然下降至1.2左右。如果增加到第四個因子,特征值繼續下降到0.95。明顯的,從兩個因子到三個因子的特征值改變最大。所以陡坡圖給我們的指示與第一個指示(特征值大於1)是相同的,就是我們應該在抽完第三個因子後就停止。因為再多加一個因子,對解釋變量的總方差的幫助已經明顯開始減少了。以下是一個SPSS因子分析的程序的例子。FACTOR/VARIABLESx1tox35//我們有35個變量/MISSINGLISTWISE//有漏空的回答,刪掉整條數據/ANALYSISx1tox35//分析所有的35個變量/PRINTUNIVARIATEEXTRACTIONROTATION/PLOTEIGEN//打印陡坡圖/CRITERIAMINEIGEN(1)ITERATE(25)//提取因子標準,特征值>1/CRITERIAFACTORS(3)ITERATE(25)//提取因子標準,要提取3個因子//以上兩句CRITERIA隻可以選一句。/EXTRACTIONPC//使用主成分PrincipalComponent法抽取因子/CRITERIAITERATE(25)/ROTATIONVARIMAX//使用最大方差法旋轉因子(後麵解釋)/SAVEREG(ALL)//把得到的因子數儲存在數據庫,以備後用/METHOD=CORRELATION。

第一個因子會盡量解釋所有的方差與協方差,特征值是10.274,解釋了總方差協方差的29.36%。第二個因子的特征值是3.372,解釋了總方差協方差的9.63%。兩個因子加起來解釋了總方差協方差的38.98%。我們看見程序抽取了8個因子,一共解釋了總方差協方差的70.5%就停下來了。因為第9個因子的特征值已經是0.934(小於1)了。中間的3列描述了每一個因子在沒有旋轉以前所解釋總方差的百分比。最後3列描述了每一個因子在旋轉以後所解釋總方差的百分比。我們看見雖然個別因子在載荷旋轉前後的解釋能力不同,但是8個因子的總解釋能力是一樣的,都是70.50%。到底什麼是因子載荷旋轉呢?為什麼我們要因子載荷旋轉呢?下一節詳細解釋。10.4因子旋轉在一般的因子分析結果裏,都會談到“未旋轉的載荷(unrotatedfactorloadings)”與“旋轉了的載荷(rotatedfactorloadings)”的問題。

因子的旋轉(factorrotation)其實是一個矩陣的轉換。撇開數學的符號和公式,因子的旋轉可以看成是:把不同的因子軸首先鎖定(這稱為正交旋轉(orthogonalrotation))。意思是因子與因子間的夾角不變的情形下(一般的情形下因子是互相垂直的,所以就是把這些垂直的因子軸鎖住),然後把整組鎖住的因子反時針旋轉。旋轉因子的唯一的目的就是方便我們理解項目變量與因子的關係。上麵已經提過,旋轉因子軸會影響因子載荷,但是所有的因子一共解釋了數據的總百分比是沒有改變的。不會是原來3個因子解釋了數據的總方差協方差的59%,因為旋轉了因子軸這3個因子就多解釋了幾個百分比的(自然,每個因子所能解釋的百分比,在旋轉過程中是會改變的)。

雖然我們已經用主成分法抽了兩個因子出來,但是哪一個項目應該屬於哪一個因子(就是哪一個項目在哪一個因子的載荷為高)非常不明顯。但是,在不改變因子間的關係的前提下(也就是把因子的夾角鎖住的前提下),因子軸旋轉後,因子與項目的關係就豁然開朗了。因此,因子旋轉不影響因子解釋項目變量的能力(如總方差解釋的百分比),它隻是方便我們理解因子載荷,從而理解哪一個項目應該在相應的因子的比重。大家一看就會知道,旋轉後的因子軸到底應該轉到什麼地方,項目變量的因子載荷才可以稱為“容易”理解呢?當中好像是有一點主觀性。用來旋轉因子載荷的矩陣轉置也有不同的方法。正如主成分法是抽因子的最普遍方法一樣,因子旋轉也有最普遍的方法,就是“方差最大法(Varimaxrotation)”。

“方差最大法”的原則就是在旋轉時,在保存變量的分解共性h2不變的原則下,把因子載荷的方差弄到最大,也就是有少部分的因子載荷很大,而其他的載荷盡量小(接近零)。因子載荷的方差越大,就代表各個變量分別歸於不同的因子的情形就越清晰。例如,我們用主成分法對16個情商的自評項目作了探索性因子分析,得到了4個因子。ComponentMatrix是沒有旋轉前的因子載荷。因為主成分法抽的第一個因子,所用的標準就是盡量解釋所有項目變量的總方差。所以我們看見所有的16個項目變量都好像在因子一有一定的載荷。而因子二和因子四的載荷就好像有點混亂了。ComponentMatrix(a)Component1234eq010.704-0.024-0.041-0.491eq020.6800.193-0.030-0.572eq030.5850.2850.039-0.586eq040.3890.3270.071-0.458eq050.574-0.527-0.4280.157eq060.623-0.376-0.5110.074eq070.458-0.398-0.5330.172eq080.650-0.505-0.3790.125eq090.597-0.2820.4580.129eq100.512-0.3750.5250.152eq110.491-0.2840.6680.155eq120.456-0.4280.5370.145eq130.3840.653-0.1090.320eq140.5120.642-0.0830.413eq150.5280.717-0.0260.283eq160.6100.6170.0600.292ExtractionMethod:PrincipalComponentAnalysis.

a4componentsextracted.

但是,對因子進行旋轉後,因子的載荷分布就清楚異常了。項目1到項目4應該在因子四;項目5到項目8應該在因子二;項目9到項目12應該在因子三;項目13到項目16應該在因子一。

ExtractionMethod:PrincipalComponentAnalysis.

RotationMethod:VarimaxwithKaiserNormalization.

aRotationconvergedin5iterations.

RotatedComponentMatrix(a)Component1234eq010.0550.3230.2080.766eq020.1620.1780.1030.871eq030.1750.0340.0710.855eq040.180-0.0890.0130.658eq05-0.0230.8810.1900.045eq060.0720.8690.0750.172eq070.0320.8250.009-0.001eq080.0080.8730.2490.117eq090.1030.1870.7700.155eq100.0040.1490.8210.070eq110.055-0.0010.8850.081eq12-0.0650.1360.8220.034eq130.8200.004-0.0820.094eq140.9150.0790.0240.085eq150.909-0.0130.0170.217eq160.8720.0280.1630.232這個旋轉後的因子結構告訴我們,這16個項目用來測量情商的4個維度非常成功。各個項目都正確地扮演了它們測量情商的不同維度的功能。本章附錄因子權數的估計方法

在解釋因子分析的方法時,我們把上麵的問題簡化一下來說明。現在我們假設隻有6個測量項目,而6個測量項目都是測量同一個構念。我們的測量模型如下:

所有由變量組成的線性函數都稱為變量的因子(factor)。因此,所有由這6個變量組成的線性函數都稱為這6個測量項目變量的因子。

其中一個因子,F為F=w1x1+w2x2+w3x3+w4x4+w5x5+w6x6

式中,w1到w6是常數。反過來看,這個因子以不同程度代表著不同的變量。因為因子與變量是一一對應的關係,因子代表變量,也可以看成是變量代表因子。變量代表因子的能力,其實就是變量的方差有多少可以被因子解釋(這是回歸分析的概念)。下麵的方程表明,變量與因子的關係其實是一個回歸的關係。假設變量與因子都是標準化的,載荷λk其實就是xk與F1的相關係數(rxk.F1)。相關係數的平方就是一個變量可以解釋另外一個變量的百分比。所以λ2k其實就是變量xk能夠解釋F1的方差的百分比。下麵這個模型,其實也是我們在測量學中談到的“同質性測量模型”,因為可見的x其實是在代表一個不可見的F(可以看成是真實值),而代表的能力就是“載荷”這個權數。x1=λ1F+ε1

x2=λ2F+ε2

x3=λ3F+ε3

x4=λ4F+ε4

x5=λ5F+ε5

x6=λ6F+ε6在還沒有繼續以前,我要先提出“同質性測量模型”的一個特性,就是兩個測量項目的相關係數等於它們對應的因子載荷的乘積。這個結果的推導為rjk=Cov(xj,xk)

=Cov(λjF+εj)(λkF+εk)

=Cov(λjF,λkF)+Cov(λjF,εk)+Cov(λkF,εj)+Cov(εj,εk)

=Cov(λjF,λkF)

=λjλkCov(F,F)

=λjλk注:1.因為ε是隨機的,所有的ε與其他變數的共變量都是0。2.所有變量與自己的共變量都等於它的方差。3.因為我們假設所有的變量都是標準化的,所以方差都是1。首先,假設我們已經收集了數據。我們訪問了138個中層經理和他們的下屬,收集了這6個測量項目變量的資料(1分最低,7分最高)。數據如下:測量項目變量回答者x1x2x3…x61434…22123…53665…64414…3138345…4現在我們計算這6個測量項目的相關(方差/協方差)矩陣,表列如下:x1x2x3x4x5x6x11.00.550.430.320.280.36x20.551.00.500.250.310.32x30.430.501.00.390.250.33x40.320.250.391.00.430.49x50.280.310.250.431.00.43x60.360.320.330.490.431.0根據定義,所有由這6個變量組成的線性函數都稱為這6個變量的因子。因此,6個測量項目變量可以有無數個因子。但是在統計上來講,我們隻需要最多6個因子(也就是因子的數目等於變量的數目),就可以完全解釋這6個測量項目變量的總方差。注意:任何6個因子都可以完全解釋總方差協方差值,隻要第二因子是解釋第一因子的剩餘方差協方差值,第三因子解釋第一、第二因子的剩餘方差值,如此類推。也就是說,第7個因子對我們來說是沒有用處的。其實我們已經談過,因子分析的主要作用是減少變量。我們的目的是用最少數目的因子來代表這6個測量項目變量。因此,當因子的數目等於變量的數目時,用因子來代替變量已經沒有意思了。這裏介紹兩種估計因子載荷的方法:重心法和主成分法。重心法其實是一個比較舊的載荷估計方法。現在大部分情形都是使用主成分法。我們介紹重心法的唯一目的就是這個方法非常直觀,可以讓我們多了解載荷估計的過程。相對來說,主成分法就是一個純數學的方法,看起來不容易了解。(1)重心法(centroidmethod)以下重心法的例子引自Nunnally(fullcitation)。一切版權歸原作者所有。利用這138個數據點,我們求得這6個測量項目變量的相關矩陣是:x1x2x3x4x5x6Row行總和x11.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.94Col列總和2.942.932.902.882.712.9417.30上麵談過了,兩個測量項目的相關係數等於它們對應的因子載荷的乘積。因此,每一列的總和是Col=λi6k=1λk,每一行的總和是Row。行與列的總和稱為T,T=6i=1λi6k=1λk。在這個例子裏,T=17.30。然後,我們把每一行的總和除以整個矩陣的總和(T)的平方根。為什麼要這樣呢?下麵的推導告訴我們,因為這就是因子載荷,即ColT=krikikrik=kλiλkikλiλk=λikλkiλikλk