Obtaining unstandardized factor scores from factor analysis

会有一股神秘感。 提交于 2019-12-02 05:13:52

问题


I'm conducting a factor analysis of several variables in R using factanal(). I want to determine each case's factor score, but I want the factor scores to be unstandardized and on the original metric of the input variables. When I run the factor analysis and obtain the factor scores, they appear to be standardized and not on the original metric of the input variables. How can I obtain unstandardized factor scores that have the same metric as the input variables? Ideally, this would mean a similar mean, sd, and range. If this is not possible, how would I rescale the standardized factor scores to have this metric?

Here's a small example:

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

回答1:


Factor analysis scales the observed variables to unit variance, yielding scores that are also N(0,1).

However, remembering that unstandardized values = standardized values * s.d. + mean, you should be able to rescale the standardized factor scores with:

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

Please let me know if this helps!

Ron



来源:https://stackoverflow.com/questions/16588452/obtaining-unstandardized-factor-scores-from-factor-analysis

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!