2010-11-10 44 views
11

使用factanal進行因子分析時,通常的結果是一些加載表格加上其他一些信息。有沒有直接的方法來使用這些加載來創建矩陣/數據框架的因素?例如稍後在迴歸分析中使用它們。如何從factanal中創建因子?

編輯:這個的目的是爲後續建模獲取變量。我只知道因素得分 - 但建議/其他術語的指針是受歡迎的:)

EDIT2:Joris Meys答案基本上是我所要求的答案。儘管它將我的問題轉移到可能更適合statsoverflow的方向,但我現在仍將保留此處,因爲正確的一組人正在討論解決方案:

迴歸的好處是什麼基於分數?產品(ML)的結果與這些因素高度相關...老實說,我不知道爲什麼我的情況差別很大?

fa$scores # the correct solution 
fac <- m1 %*% loadings(fa) # the answer on your question 
diag(cor(fac,fa$scores)) 
#returns: 
Factor1 Factor2 Factor3 
0.8309343 0.8272019 0.8070837 

回答

21

你問過如何使用裝載來構造分數。你的解決方案雖然正確,但沒有這樣做。它使用的是迴歸方法(或者也可以使用Bartlett的方法),並且這使用了分數不相關的約束,以0爲中心並且方差爲1.因此這些因素與通過使用F = ML,其中F是因子矩陣,M是原始矩陣,L是加載矩陣。

從幫助文件的實例演示:

v1 <- c(1,1,1,1,1,1,1,1,1,1,3,3,3,3,3,4,5,6) 
v2 <- c(1,2,1,1,1,1,2,1,2,1,3,4,3,3,3,4,6,5) 
v3 <- c(3,3,3,3,3,1,1,1,1,1,1,1,1,1,1,5,4,6) 
v4 <- c(3,3,4,3,3,1,1,2,1,1,1,1,2,1,1,5,6,4) 
v5 <- c(1,1,1,1,1,3,3,3,3,3,1,1,1,1,1,6,4,5) 
v6 <- c(1,1,1,2,1,3,3,3,4,3,1,1,1,2,1,6,5,4) 
m1 <- cbind(v1,v2,v3,v4,v5,v6) 

fa <- factanal(m1, factors=3,scores="regression") 

fa$scores # the correct solution 

fac <- m1 %*% loadings(fa) # the answer on your question 

這顯然是不同的值。

編輯:這與Thomson迴歸分數基於比例變量並將相關矩陣考慮在內的事實有關。如果你會計算手的得分,你會怎麼做:

> fac2 <- scale(m1) %*% solve(cor(m1)) %*% loadings(fa) 
> all.equal(fa$scores,as.matrix(fac2)) 
[1] TRUE 

欲瞭解更多信息,請參閱this review

,並說明爲什麼它是重要的:如果你計算分數的「天真」的方式,你的分數實際上是相關的。這就是你想擺脫的第一個地方:

> round(cor(fac),2) 
     Factor1 Factor2 Factor3 
Factor1 1.00 0.79 0.81 
Factor2 0.79 1.00 0.82 
Factor3 0.81 0.82 1.00 

> round(cor(fac2),2) 
     Factor1 Factor2 Factor3 
Factor1  1  0  0 
Factor2  0  1  0 
Factor3  0  0  1 
+0

是的,這就是我所要求的。標準化迴歸創造的這些分數的唯一好處是什麼?計算ML矩陣可以提供高度相關的變量(請參閱我的問題的編輯)。 – 2010-11-10 23:36:39

+3

@ ran2:不,這些分數有一些更多的數學背後,這是在factanal的幫助文件中的稀疏解釋。更詳細的概述可以在這篇論文中找到:http://www.psy.ed.ac.uk/people/iand/Bartholomew%20%282009%29%20Br%20J%20Math%20Stat%20Psychol%20factor%20scores %20Thomson%20Spearman%20Bartlett.pdf – 2010-11-11 03:04:00

+2

acc。 Thx的教訓,男人! – 2010-11-11 08:41:43

3

我還沒有人工檢查,但here's的方式做到這一點:

fa <- factanal(mydf,3,rotation="varimax",scores="regression") 
fa$scores 

HTH別人。建議,更正,改進歡迎!

+5

使用promax旋轉違反了不相關分數的假設。儘管解釋簡單,數據的結構卻發生了深刻的變化。必須非常非常小心地使用非正交旋轉。 – 2010-11-10 15:38:32

+0

Thx!非常寶貴的投入。我只是把它混淆起來,我只是在努力,解釋並沒有因此而變得更好。我只是檢查了我的解釋的魯棒性,並貼錯了一行。 – 2010-11-10 16:20:38

2

你不想要loadings組件嗎?

loadings(fa) 

?loadings?factanal檢查,這是你想要的負載。我發現所用的術語有時候很混亂,有什麼裝載量,分數,......

+0

確實令人困惑。但是你的建議相當於fa $的加載,這就像一個因素的「相關性」。我想要的是每個觀察基礎上的因素。 – 2010-11-10 15:16:45

+0

我的意思是'mydf%*%loading(fa)'是我以爲你想要的......而且我看到Joris在他的回答中提出了這樣的事情。 – 2010-11-10 15:40:37

+0

對不起加文 - 有時我只是需要一點額外的幫助。我確實看到了你的一見鍾情。 Thx Joris和你的評論它很清楚,這是我的問題的答案:) – 2010-11-10 23:47:54