让x
成为样本数据框。
set.seed(0)
x <- replicate(4, rnorm(10))
使用principal
包中的psych
函数的PCA将产生:
> principal(x, nf=4, rotate="none")
...
PC1 PC2 PC3 PC4
SS loadings 1.91 1.09 0.68 0.31
Proportion Var 0.48 0.27 0.17 0.08
Cumulative Var 0.48 0.75 0.92 1.00
Proportion Explained 0.48 0.27 0.17 0.08
Cumulative Proportion 0.48 0.75 0.92 1.00
使用varimax
标准旋转te PCA解决方案会生成现在名为RCi
的新组件,以指示PC已经旋转(因此,它们不再是PC)。
> principal(x, nf=4, rotate="varimax")
...
RC4 RC3 RC2 RC1
SS loadings 1.03 1.02 1.00 0.95
Proportion Var 0.26 0.26 0.25 0.24
Cumulative Var 0.26 0.51 0.76 1.00
Proportion Explained 0.26 0.26 0.25 0.24
Cumulative Proportion 0.26 0.51 0.76 1.00
我的问题:为什么订单现在RC4
到RC1
,数字从4减少到1.仍然按照SS的份额排序。由于旋转正交,我不明白这一点。 RC名称的顺序传达了哪些有用的额外信息?或者如果旋转是正交的,我认为顺序是任意的是错误的吗?
谢谢!
答案 0 :(得分:4)
标记, 逻辑是识别旋转的作用。这更多是出于教学原因而不是其他任何原因。我试图显示原始组件与旋转组件的关系。举个例子,看看负荷,而不仅仅是所考虑的差异。
unrotated:
PC1 PC2 PC3 PC4 h2 u2
1 -0.77 -0.40 0.39 0.32 1 -6.7e-16
2 0.71 -0.28 0.63 -0.17 1 6.7e-16
3 -0.10 0.93 0.35 0.09 1 6.7e-16
4 0.90 -0.02 -0.13 0.42 1 2.2e-16
Rotated:
RC4 RC3 RC2 RC1 h2 u2
1 0.95 -0.10 -0.08 -0.29 1 -6.7e-16
2 -0.10 0.97 -0.06 0.22 1 6.7e-16
3 -0.07 -0.06 0.99 -0.05 1 6.7e-16
4 -0.34 0.27 -0.07 0.90 1 2.2e-16
特别是,看看变量3和4.在未旋转的解决方案中,它们分别定义了PC2和PC1。现在看看旋转的解决方案。这两个仍然标记PC2和PC1(标记为RC2和RC1以反映它们被旋转),但是当旋转到RC4时,PC4的变化已经改变,现在吸收更多的方差。 (对于PC3和PC4也是如此,但不是很清楚。)
我要做的是表示旋转时会发生什么。 PC1旋转到更简单的结构,变成RC1。
然后,因为许多人喜欢按方差的顺序排列他们的组件,我按特征值排序(求和的平方和)。
我相信其他程序所做的是旋转和重新标记,以便组件始终被称为C1 ... Cn。我只是想知道组件的来源。
如果您认为它有用,我可以(最终)将此讨论添加到委托人和fa的文档中。
比尔
答案 1 :(得分:3)
这是部分答案。我查看了principal
函数后面的代码,可以清楚地看到重新排序的位置:
if (nfactors > 1) {
ev.rotated <- diag(t(loadings) %*% loadings)
ev.order <- order(ev.rotated, decreasing = TRUE)
loadings <- loadings[, ev.order]
}
因此,上面的代码是订单更改的原因,但不太明确的是什么目的。我没有足够的旋转经验来辨别包装作者的意图。