簡體   English   中英

R中的“手動”因素分析

[英]“Manual” Factor Analysis in R

我試圖遵循Tabachnick和Fidell撰寫的“使用多元統計”中的因素分析一章。

數據和我的步驟如下:

# data
dat.ski <- data.frame(skiers = paste0("S", c(1:5), sep=""), cost = c(32, 61, 59, 36, 62), lift=c(64, 37, 40, 62, 46) , depth = c(65, 62, 45, 34, 43), powder = c(67, 65, 43, 35, 40))

# correlation matrix
cor.ski <- cor(dplyr::select(dat.ski, -skiers)) 

# eigenvalues and eigenvectors
eig.ski <- eigen(cor.ski)

相關矩陣和特征值(2.02、1.94、0.04和0.00)與書中的相對應。 我具有的前兩個特征向量是(.352,-0.251,-0.626,-0.647)和(.514,-。664,.322,.280)。

但是,該書隨后繼續說,僅保留了前兩個特征值,並且“重新進行因子分析”會導致以下兩個特征值*:2.00、1.91和特征向量(-2,83、0.177、0.568, 0.675)和(0.651,-0.685,0.252,0.207)。 我無法計算出這些特征向量...如果運行psych::fa(cor.ski, nfactors=2, fm="pa") ,則SS加載對應於新的特征值*。

非常感謝您提供有關如何根據文本返回特征向量的幫助。

謝謝。

我通過記住R是一種可見的語言來解決這個問題! 通過查看psych::fac的定義,我看到作者實際上已經進行了7次因子分析迭代,而不是mereley“獲取了前兩個特征向量並重新運行FA”; 我最終還了解了如何進行因子分析,並將其與后續文本結合在一起,簡而言之是:

從相關矩陣(r)開始並假設使用了k個因子

  • 獲取相關矩陣r的特征值(L)和特征向量(V)
  • 計算C = sum(diag(R))
  • 計算載荷,A = V [,1:k] * Sqrt {L [1:k]}(文本的等式13.6)
  • 設置R * = AA'(文本的13.5,R = AA')
  • 設置C * = sum(diag(R *))
  • 更新diag(R)= diag(R *)
  • 重復上述步驟,直到達到最大迭代次數,或直到e = abs(CC *)小於某個閾值

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM