r - psych::principal - 对旋转(主要)组件的顺序和命名的解释

标签 r pca

x是一个示例数据框。

set.seed(0)
x <- replicate(4, rnorm(10))

使用 principal 的 PCA来自 psych 的函数包将产生:
> 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

我的问题 : 为什么现在下单了RC4RC1数字从 4 减少到 1。RC 仍然根据它们在 SS 中的份额进行排序。由于旋转是正交的,我不明白这一点。 RC 名称的顺序传达了哪些有用的额外信息?或者,如果旋转是正交的,我将顺序视为任意顺序是错误的吗?

谢谢!

最佳答案

标记,
逻辑是识别旋转的作用。这更多是出于教学原因。我试图展示原始组件与旋转组件的关系。以您的示例为例,请查看负载,而不仅仅是考虑的差异。

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 以反射(reflect)它们被旋转),但是由于 PC4 在旋转到 RC4 时吸收了更多的方差,因此所计算的方差已经发生变化。 (这对于 PC3 和 PC4 也是如此,但不是很清楚。)

我想做的是代表你旋转时发生的事情。 PC1 被旋转到更简单的结构,并成为 RC1。

然后,因为很多人喜欢按照方差的顺序来考虑他们的分量,所以我按特征值排序(考虑平方和)。

我相信其他程序所做的是旋转和重新标记,以便组件始终称为 C1 ... Cn。我只是想看看组件来自哪里。

如果您认为它有用,我可以(最终)将此讨论添加到 principal 和 fa 的文档中。

账单

关于r - psych::principal - 对旋转(主要)组件的顺序和命名的解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16896959/

相关文章:

r - 调整 Shiny 仪表板中仪表板标题的高度

python - AWS Sagemaker - PCA 模型未部署

machine-learning - 主成分分析,有多少个成分?

r - R 中是否有用于将列(数据框或表的)自动转换为其原始向量类型的功能

r - 在 R 中粘贴字符串最有效的方法是什么?

python - sklearn 的 PCA 实现是否保留输入顺序?

c++ - 对 double 类型的二维 vector 进行 PCA 计算

scikit-learn - 可以 Dask -ify 增量 PCA 或随机梯度下降或其他 scikit 学习部分拟合算法

r - 按组预测拟合逻辑模型的值

r - 润滑减法仅返回一个数值