統計多變量方法中的主成分分析 (PCA, Principal Component Analysis) 與因子(因素)分析 (FA, Factor Analysis) 常被混淆,一方面是不知兩者有何差別,另方面是混為一談,用主成分的想法進行因子分析,或用因子分析的想法從事主成分分析。

主成分分析的想法其實可以說是對多變數做變換,這裡考慮的是線性變換,從幾何上來看就是找出這些變數聯合分布的主要方向。例如隨機向量 X 服從聯合常態分布,或稱多變量常態分布,則其聯合密度的「等高面」就是一個個橢球,雙變量則是一個個橢圓構成一系列等高面,所謂「第一主成分」就是這些橢球(橢圓)的共同最長軸。統計上的做法是找出「變異數最大化」的方向。具體地說,設原始隨機向量為 X,考慮 X 的一個線性函數 a'X,則

Var(a'X) = a'Σa,

其中 Σ = Cov(X) 是 X 的共變異矩陣 (variance-covariance matrix) ,a' 是 a 視為矩陣的轉置 (transpose),也就是行向量 a 轉置為列向量 a'。

為了 Var(a'X) 的最大化有意義,對係數向量 a 需要一個限制,一般是限制 ||a|| = 1,以幾何的說法是 a 的長度為 1,也就是說 a 是單位向量;以統計的說法只不過是限制系數(向量)的平方和為 1。矩陣代數方法給我們提供了這問題的解:a 是對應 Σ 之最大特徵值 (eigenvalue) 的特徵向量 (eigenvector)。

如果我們考慮一個將 Σ 對角線化的正交矩陣 (orthogonal matrix) P,令

Y = P'X, Cov(Y) = P'ΣP = diag(λ1,...,λm) = Λ

則前述第一主成分即是新隨機向量中對應 max(λi) 的元素。P 是由 Σ 的特徵向量所構成的,ΣP = PΛ, P 的第 i 行對應特徵值 λi。因此,P 各行的適當排列可使得

λ1 ≧ λ2 ≧ … ≧ λm

設 S 是一 k×m 矩陣,其內容 S = [ I  0 ] 前一部分是 k 階單位矩陣,則 Q' = SP' 即是 P' 的前 k 列,對應 P 的前 k 行,Λ 的前 k 個主對角線元素,即 Σ 之最大前 k 個特徵值。主成分分析其實就是取 Z = Q'X 來代替原本的 X,由 m 維度資料降維至 k 維度資料,而

tr(Cov(Z)) = tr(Q'ΣQ) = tr(SP'ΣPS') = tr(SΛS') 

符號 tr(.) 是計算矩陣主對角線元素的和, tr(SΛS') 就是 Λ 之前 k 個主對角線元素的和,主成分分析中要求佔 Λ 之所有主對角線元素和達一定比例(例如 80% 以上)。由於

tr(Cov(Y)) = tr(P'ΣP) = tr(ΣPP') = tr(Cov(X))

也就是說 k 個主成分可以解釋原來 m 個變量(隨機變數)總變異數的設定比例以上。這就是主成分分析的想法,以變數變換的方法,得到數個相互零相關的主成分,取代原來繁多的變量。

因子分析,這裡指的是探索式因子分析 (exploratory factor analysis),不同於主成分分析,它有一個基本的假設模型:

諸多變量背後有為數較少的共同因子 (common factor),可觀測變量是由共同因子和變量本身特有的特殊因子 (specific factor)合成。以數學式表現,即

X = AF + E, 

式中 X 為可觀測變量(行向量),F 為共同因子,A 為因子負荷矩陣,E 為對應 X 之特殊因子,與 F 相互獨立。

獨特因子含隨機誤差,既是「獨特」,表示 E 的各元素間應相互獨立,其共變異矩陣是對角線矩陣。共同因子 F 各成員基本上假設相互獨立或零相關,把它們想像成座標軸,就是相互垂直的。因子模型是不可辨識的 (non-identifiable);取 F 之一正交變換 (orthogonal transformation) F* = QF, 則

X = (AQ')F* + E

而 F 和 F* 卻是兩組不同的共同因子。也就是說:因子分析所假設的、潛在的、隱藏的共同因子,在數理上無法明確定義,甚至無法明確設定。因此,在實際資料分析時,所擷取的共同因子其實都不明確。在這種情形下,欲比較兩群體或多群體的共同因子差異幾許,其實是很為難的,就像在線性模型中對不可估函數做統計推論並無意義。

從因子模型,可以將 X 的共變異矩陣分解為

Σ = Cov(X) = A(Cov(F))A' + Cov(E)

在因子分析中,通常採用標準化變量,即 Σ 為相關矩陣 (correlation matrix),並且 Cov(F) = I, Cov(E) 是對角線矩陣。也就是說

Σ = AA' + S, 其中 Σ = Corr(X), S = diag{S1^2,...,Sm^2)

前列 Si^2 稱獨特性或唯一性 (uniqueness), 1-Si^2 是 AA' 的主對角線元素,是 Xi 中與 F 有關部分的總變異數,代表共同因子對 Xi 的總合作用,稱共同性或共通性 (communality)。因子分析首先就是要設定共同性,也相當於設定唯一性。由於 E 可視為特殊因子也可視為誤差,因子個數(等於 A 的行數)事先也不知道,因此有不同方法設定共通性。又所謂「抽出因子」的方法也有許多種,包括主成分法、最大概似法等。再者,基於因子的不唯一性,為獲得較易賦予意義的因子,抽出認為適當的因子後要做「因子轉軸 (factor rotation)」, 這又有好幾種方法,甚至打破「共同因子間無相關」的假設而採斜交轉軸 (oblique rotation)。計算最後要對找到的共同因子「命名」, 以適當名稱表示各因子軸的意義。

如果在主成分分析中不以共變異矩陣而是以相關矩陣為計算基礎,並將主成分 Z = Q'X 反轉為 X* = QZ 或 X = QZ + E;如果因子分析在共通性估計預設 1 並採用主成分法配合「變異解釋比例」做為因子抽取的停止規則,則在轉軸進行前兩者程序上沒有差別。設 Λ = BlkDiag(Λ1, Λ2) 是前述 Λ 矩陣按抽出因素個數做分割的結果,Δ = Λ1^(1/2), Ω = Δ^(-1)。則

F(因子得點) = ΩQ'X = ΩZ

X = AF + E ,  其中 A(因子負荷矩陣) = QΔ

注意 AF = QΔF = QΔΩQ'X = QQ'X, 故 E = X - AF = X-QQ'X, 在主成分計算中這只是殘差,並沒有因子模型中特殊因子之間零相關的限制,即使在樣本資料,E 之共變異矩陣能否完全歸之樣本誤差及因估計模型參數)產生的相關(如 Xi-Xbar 或線性模型殘差之間的相關一般)?

從理論上來看,設 P = [Q  R] 分成兩部分,前 k 行對應前 k 大特徵值,後 m-k 行對應較小,被認為可以忽略的特徵值。而

Y = P'X = [(Q'X)' (R'X)']' = [Z'  (R'X)']',  ( Z = Q'X )
故  X = PY = QQ'X + RR'X = QZ + RR'X

由於 P'ΣP = Λ 所以 Σ = PΛP',

Cov(QQ'X,RR'X) = QQ'ΣRR' 
    = QQ'[Q R]Λ[Q R]'RR' 
    = [Q 0]Λ[0 R]' = 0

Σ = Cov(X) = Cov(QZ) + Cov(RR'X)
   = Q(Λ1)Q' + RR'[Q R]Λ[Q R]'RR'
   = Q(Λ1)Q' + R(Λ2)R'

 第一部分是因子模型中 AF = QZ 的共變異矩陣,第二部分就是 E = X - QZ 的共變異矩陣。如果 R = [R1,...,Rp] 則

Cov(X-QZ) = ΣλiRiRi'

一般而言特徵向量 Ri 與其轉置相乘不會是對角線矩陣,所以如此得出的 E 並不符合因子模型所揭示的獨特因子的特性,而視為隨機誤差也不符合各變數之誤差項相互獨立或至少零相關的要求。

假設原來 m 變量 X 是符合因子模型的,X = AF + E,Σ = AA' + S。若 S 已知,Σ* = AA' 是 rank = k 的矩陣(A 為 m×k 且滿行秩的矩陣。又假設 P = [Q  R],Q 各行是對應 Σ* = PΛP' 的正特徵值,R 各行則對應特徵值 0。由前面,A = QΔ, 所以

AA' = QΔΔQ' = Q(Λ1)Q' = PΛP' = Σ*

也就是說:如果因子模型確實成立,共通性或獨特性已知,因子被完整抽取,則主成分法確實能重製 (reproduce) 原來的相關矩陣;在樣本資料,這意謂可得到因子模型合理的估計。但是,首先精確甚或適當設定 S 這件事本身就很有疑問,更別說實務上可能把 S 當做不存在而直接以 Σ 計算特徵值、特徵向量,也就是以主成分分析開始,以因子分析結尾(做轉軸)。疏於對 S 的準確設定,對 Σ* 之特徵根特徵值之計算或估計當然有差;更且,實際在用主成分法抽取因素時,一個常用的準則是不取 λi < 1 者,而不像上面假設之「正值全取」。在樣本資料,由於抽樣誤差,正的樣本特徵值當然不意謂真正 Σ* 的對應特徵值為正,但也不見得小於 1 的樣本特徵值就表示真正的特徵值夠小。或許從 Σ = AA' + S 分解式及 S 的特性來說,因子分析要做的是直接從 Σ 得到 A 使 AA' 與 Σ 在主對角線外一致,而留下 S = Σ - AA' 接近對角線矩陣;而不是先估計 S 而後以 Σ* = Σ - S 計算 A。

回到主成分分析,主成分 Z = Q'X 是由原來的多變量 X 做線性組合變成主成分,有必要賦予新名字嗎?有必要轉軸嗎?在因子分析,主角是因子,變量(向量)X 只是個測量工具,從 X 擷取的共同因子 F 才是主角。而主成分分析其實主角是變量 X,擷取之主成分 Z 雖說是新變量,其實只是用於濃縮 X 資訊的工具,等於一種工具變數。如果我們失去了原始 X,用 Z 取代 X 就總變異數而言將相當「接近」(80%, 85% 或 90%)。那麼對 Z 這些工具變數有必要賦名嗎?也許某些應用的答案是 Yes,甚至為了賦名而把 Z 再做一個正交或非正交變換。需注意的是:在主成分分析中,Z 原本是按其變異數大小排序的,而且各變數間相互零相關,但如直接對 Z 做正線性變換,則原本的順序沒有了,即使做正交變換結果最終變數相互也不再是零相關了,那麼「主成分」意義何在?個人認為:這是把主成分分析當因子分析。但如果你想要的是因子分析,何不直接做因子分析?如果對於難明其意的主成分耿耿於懷,可考慮用 X* = QZ 化為原變數尺度,像主成分迴歸一般。

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 等死的老賊 的頭像
    等死的老賊

    劉應興的部落格

    等死的老賊 發表在 痞客邦 留言(0) 人氣()