2013-05-16 42 views
2

我使用factanal()對R中幾個變量進行因子分析。我想確定每個案例的因子分數,但是我希望因子分數是非標準化的,以及輸入變量的原始度量。當我運行因子分析並獲得因子得分時,他們似乎是標準化的,而不是輸入變量的原始度量。我如何獲得與輸入變量具有相同度量的非標準化因子分數?理想情況下,這意味着類似的平均值,sd和範圍。如果這是不可能的,我將如何重新調整標準化因子分數來獲得這個指標?從因子分析中獲得非標準化因子分數

這裏是一個小例子:

library(psych) 

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) 

m1FactorScores <- factanal(~v1+v2+v3+v4+v5+v6, factors = 1, scores = "Bartlett")$scores 

describe(m1) #means~2.3, sds~1.5 
describe(m1FactorScores) #mean=0, sd=1 
+0

我不是100%確定的,但可以試試''psych'包中的'fa'。 – Thomas

回答

2

因子分析縮放觀察到的變量,以單位方差,產生得分,同時也是N(0,1)。

但是,記住非標準化值=標準化值* s.d. +意思是,你應該能夠重新調整標準化因子得分:

m1UnstandardizedFactorScores<-rowMeans(m1)+apply(m1,1,sd)*m1FactorScores 

請讓我知道這是否有幫助!

Ron

+0

非常感謝您的幫助。這正是我所期待的! – dadrivr