用R語言做數據分析——主成分和因子分析概論

機器學習 R語言 科技 數據分析和挖掘 數據分析和挖掘 2017-08-01

用R語言做數據分析——主成分和因子分析概論

信息過度複雜是多變量數據最大的挑戰之一。若數據集有100個變量,如何瞭解其中所有的交互關係呢?即是隻有20個變量,當試圖理解各個變量與其他變量的關係時,也需要考慮190對相互關係。主成分分析和探索性因子分析是兩種用來探索和簡化多變量複雜關係的常用方法,它們之間有聯繫也有區別。

主成分分析(PCA)是一種數據降維技巧,它能將大量相關變量轉化為一組很少的不相關變量,這些無關變量稱為主成分。例如,使用PCA可將10個相關(很可能冗餘)的環境變量轉化為5個無關的成分變量,並且儘可能地保留原始數據集的信息。

相對而言,探索性因子分析(EFA)是一系列用來發現一組變量的潛在結構的方法。它通過尋找一組更小的、潛在的或隱藏的結構來解釋已觀測到的、顯式的變量間的關係。例如、Harman74.cor包含了24個心理測驗的相互關係,受試對象為145個七年級或八年級的學生。假如使用EFA來探索該數據,結果表明276個測驗間的相互關係可用四個學生能力的潛在因子(語言能力、反應速度、推理能力和記憶能力)來進行解釋。

PCA與EFA模型間的區別如下圖所示,主成分(PC1和PC2)是觀測變量(X1和X5)的線性組合。形成線性組合的權重都是通過最大化各主成分所解釋的方差來獲得,同時還要保證各主成分之間不相關。

用R語言做數據分析——主成分和因子分析概論

相反、因子(F1和F2)被當做是觀測變量的結構基礎或“原因”,而不是它們的線性組合。代表觀測變量方差的誤差(e1到e5)無法用因子來解釋。圖中的圓圈表示因子和誤差無法直接觀測,但是可通過變量間的相互關係推導得到。在本例中,因子間帶曲線的箭頭表示它們之間有相關性。在EFA模型中,相關因子是常見的,但並不是必需的。

無論是PCA還是EFA,都需要大樣本來支撐穩定的結果,但多大樣本量才足夠,這也是一個複雜的問題。目前,數據分析師常使用經驗分則:“因子分析需要5~10倍變量數的樣本數。”研究表明,所需樣本量依賴於因子數目、與各因子相關聯的變量數,以及因子對變量方差的解釋程度。

R語言的基礎安裝包提供了PCA和EFA函數,分別為princomp()和factanal()。而psych包中提供了比基礎函數更為豐富的有用的相關函數,下圖列出了psych包中相關度最高的函數:

用R語言做數據分析——主成分和因子分析概論

PCA和EFA常見的操作步驟如下:

  1. 數據預處理。PCA和EFA都根據觀測變量間的相關性來推導結果。用戶可以輸入原始數據矩陣或者相關係數矩陣到principal()和fa()函數中。輸入初始數據,相關係數矩陣將會被自動計算,在計算之前請確保數據中沒有缺失值。

  2. 選擇因子模型。判斷是PCA(數據降維)還是EFA(發現潛在結構)更符合研究目標。如果選擇EFA方法,還需要選擇一種估計估計因子模型的方法(如最大似然估計)。

  3. 判斷要選擇的主成分/因子數目。

  4. 選擇主成分/因子。

  5. 旋轉主成分呢/因子。

  6. 解釋結果。

  7. 計算主成分或因子得分。

用R語言做數據分析——主成分和因子分析概論

相關推薦

推薦中...