Mat*_*ert 11 statistics r
当使用factalal执行因子分析时,通常的结果是一些加载表加上其他几个信息.有没有直接的方法来使用这些加载来创建因子的矩阵/数据框架?例如,稍后在回归分析中使用它们.
编辑:这样做的目的是获取后续建模的变量.我只知道因子分数 - 但欢迎提出/指出其他术语:)
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
Run Code Online (Sandbox Code Playgroud)
Jor*_*eys 22
您询问如何使用载荷来构建分数.您的解决方案虽然正确,但却没有这样做.它使用回归方法(或者也可以使用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
Run Code Online (Sandbox Code Playgroud)
这些显然是不同的价值观.
编辑:这与Thomson回归分数基于缩放变量的事实有关,并考虑相关矩阵.如果你手动计算得分,你会做:
> fac2 <- scale(m1) %*% solve(cor(m1)) %*% loadings(fa)
> all.equal(fa$scores,as.matrix(fac2))
[1] TRUE
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请参阅此评论
并告诉你为什么它很重要:如果你以"天真"的方式计算分数,你的分数实际上是相关的.这就是你想要摆脱的第一个地方:
> 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
Run Code Online (Sandbox Code Playgroud)