2013-05-16 45 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