在R中使用factanal()函数会产生因子相关性:
> set.seed(500)
> tmp = cbind(rnorm(200,2,1.5),rnorm(200,2,1.5),rnorm(200,2,1.5),rnorm(200,2,1.5),rnorm(200,2,1.5),rnorm(200,2,1.5))
> print(factanal(tmp, 3, rotation="promax"))
Call:
factanal(x = tmp, factors = 3, rotation = "promax")
Uniquenesses:
[1] 0.796 0.889 0.966 0.935 0.740 0.005
Loadings:
Factor1 Factor2 Factor3
[1,] 0.441
[2,] 0.311 -0.114
[3,] 0.139
[4,] 0.258
[5,] 0.495
[6,] 0.999
Factor1 Factor2 Factor3
SS loadings 1.010 0.353 0.300
Proportion Var 0.168 0.059 0.050
Cumulative Var 0.168 0.227 0.277
Factor Correlations:
Factor1 Factor2 Factor3
Factor1 1.000 -0.128 0.117
Factor2 -0.128 1.000 0.118
Factor3 0.117 0.118 1.000
The degrees of freedom for the model is 0 and the fit was 8e-04
经过一番挖掘,我发现以下代码产生了因子相关性:
tmat <- solve(tmp$rotmat)
R <- tmat %*% t(tmat)
有人可以向我解释一下使用旋转矩阵的Solve()函数如何产生因子相关性得分吗?为何与直接相关的因子得分相比,这会导致不同的因子相关?