我正在使用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 :(得分:2)
因子分析将观察到的变量缩放为单位方差,得出的分数也是N(0,1)。
但是,记住非标准化值=标准化值* s.d. +意思是,您应该能够使用以下标准重新调整标准化因子得分:
m1UnstandardizedFactorScores<-rowMeans(m1)+apply(m1,1,sd)*m1FactorScores
请告诉我这是否有帮助!
罗恩