跳轉到內容

R 程式設計/因素分析

來自華夏公益教科書,開放的書籍,開放的世界

因子分析 是一組用於降低資料維度的技術。目標是用更少的變數(即潛在因素)來描述資料集。因子分析是在20世紀初期由L.L. Thurstone等人開發的。對應分析最初是由 Jean-Paul Benzécri 在 60 年代和 70 年代開發的。因子分析主要應用於市場營銷、社會學和心理學領域。它也稱為資料探勘多元資料分析探索性資料分析

主要有三種方法。主成分分析處理連續變數。對應分析處理列聯表(兩個定性變數),而多重對應分析是對應分析的推廣,處理兩個以上定性變數。因子分析和主成分分析之間的主要區別在於,在FA中,只分析多個變數共有的方差,而在PCA中,分析所有方差。因子分析是一個難以正確使用的過程,在心理學文獻中經常被誤用。FA(和PCA)中主要問題之一是資料中要提取的因素數量。錯誤的因素數量會導致資料解釋和分析的困難。

有很多技術可以用來評估要提取多少個因素。兩個最實用的技術是平行分析和最小平均偏量準則。平行分析透過模擬與資料秩相同的矩陣並從模擬資料集中提取特徵值來工作。當模擬特徵值大於資料特徵值時,就表示已經提取了“正確”的因素數量。最小平均偏量準則採用不同的方法,但通常更準確。模擬研究已經證明這兩種方法是最準確的。這兩種方法都在psych包中,分別在fa.parallelVSS命令下。

因子分析中的另一個問題是選擇哪種旋轉(如果有的話)。本質上,旋轉會轉換得分,使其更容易解釋。旋轉主要分為兩類:正交和斜交。正交旋轉假設各因素不相關,而斜交旋轉允許各因素相關(但不強制要求)。一些人(例如 MacCallum 等人,1999)建議使用斜交旋轉,因為可以從斜交解中獲得正交解,反之則不行。

因子分析周圍的一個問題是,存在無限多個旋轉可以解釋相同量的方差,因此很難評估哪個模型是正確的。針對這些問題,由 Joreskeg 在 1970 年代開發了結構方程模型 (SEM),也稱為驗證性因子分析 (CFA)。SEM 的基本原理是,給定一個模型,它試圖重現資料中觀察到的協方差矩陣。模型重現資料的程度可以用作檢驗該模型真實性的依據。SEM 在 R 中的實現使用semlavaan包,以及 OpenMx 包(在 CRAN 上不可用)。

請參見以下包:FactoMineR (網站)、amapade4anacorvegan、'"psych"'

主成分分析 (PCA)

[編輯 | 編輯原始碼]

PCA 處理連續變數

  • prcomp()stats包中。
  • princomp()stats包中。
  • PCA()(FactoMineR)
  • 另請參見factanal()
  • 另請參見faprcomppsych包中
N <- 1000
factor1 <- rnorm(N)
factor2 <- rnorm(N) 
x1 <- rnorm(N) + factor1
x2 <- rnorm(N) + factor1
x3 <- rnorm(N) + factor2 
x4 <- rnorm(N) + factor2
mydat <- data.frame(x1,x2,x3,x4)
pca <- prcomp(mydat)
names(pca)
plot(pca) # plot the eigenvalues
biplot(pca) # A two dimensional plot

pca2 <- princomp(mydat)
biplot(pca2)

pca2 <- princomp(~ x1 + x2 + x3 + x4, data = mydat) # princomp with a formula syntax


對應分析 (CA)

[編輯 | 編輯原始碼]

對應分析是分析列聯表的工具。

  • corresp() MASS
  • Michael Greenacre 的ca包 (JSS 文章)
  • 對應分析及相關網路 (連結)
  • Quick-R 的頁面 (連結)
  • 使用 R 包anacor進行簡單和典型對應分析 (pdfJSS 文章)
  • multiv

多重對應分析 (MCA)

[編輯 | 編輯原始碼]

參考文獻

[編輯 | 編輯原始碼]


上一節:時間序列 索引 下一節:網路分析
華夏公益教科書