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

2023-12-10

Let x是一个样本数据框。

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

PCA 使用principal函数从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

使用旋转 te PCA 解决方案varimax标准产生现在命名的新组件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 to RC1数量从 4 减少到 1。RC 仍然根据 SS 的份额进行排序。由于旋转是正交的,我不明白这一点。 RC 名称的顺序传达了哪些有用的额外信息?或者如果旋转是正交的,我认为顺序是任意的是错误的吗?

Thanks!


标记, 逻辑是要认识到旋转的作用。这更多是出于教学原因。我试图展示原始组件与旋转组件的关系。举个例子,看看负载,而不仅仅是考虑的方差。

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。我只是想看看组件来自哪里。

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

Bill

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

psych::principal - 旋转(主要)组件的顺序和命名的解释 的相关文章

  • 使用 ggplot 添加到投影地图时 R 饼图扭曲

    我想使用 ggplot 将饼图绘制到投影地图上 然而 饼图可能由于投影而变得扭曲 有谁知道如何在不变形的情况下绘制饼图 示例代码如下 谢谢 lib c ggplot2 scatterpie lapply lib library charac
  • 配置 fix() 和 edit() 以从 R/RStudio 在 Notepad++ 中打开

    当我在 RStudio 或 RGUI 中执行此操作时 fix SomeFunction 或使用edit 我可以在记事本中看到该函数的代码 有什么方法可以更改此设置 以便代码预览在 Notepad 中打开 而不是在普通的旧记事本中打开 同样
  • 从受密码保护的站点读取信息

    我一直在 R 教程中使用 readLines 从网站上抓取信息 我现在希望从我自己的网站提取数据 特别是 awstats 数据 但是该域受密码保护 有没有一种方法可以通过用户名和密码传递我需要的特定 awstats 数据的 url url
  • 在防风草模型上使用 VIP 包计算重要性度量

    我正在尝试使用 vi firm 在防风草中制作的逻辑回归模型上计算特征重要性 对于正则表达式 我将使用 iris 数据集并尝试预测观察结果是否为 setosa iris1 lt iris gt mutate class case when
  • 正则表达式提取美国邮政编码,但不提取假代码

    使用 XML 包和 XPath 从网站上抓取地址 有时我只能得到一个嵌入了我想要的邮政编码的字符串 提取邮政编码很简单 但有时会显示其他五位数字的字符串 以下是 df 中问题的一些变体 zips lt data frame id seq 1
  • 如何在 R Markdown 中的内联 LateX 方程中输出 R 变量的值(即动态更新)

    我无法找到一种方法将 r 代码实现到 R markdown 中的内联 LateX 方程中 目标是如果变量 值 发生变化 则不必对它们的值进行硬编码 Given values lt c 1 4 2 5 7 9 avg lt sum value
  • R:(中缀)运算符的两个定义之间的冲突:如何指定包?

    在 R 中 每当两个包定义相同的函数时 很容易指定要使用哪个包pkg foo 但是 当冲突的功能是一个时 你该怎么办 infix运算符 即使用定义 举个例子 两者ggplot2 and crayon define 有没有一种方法可以让我默认
  • Shiny :针对所有错误显示一条消息

    我在 R 的 Shiny 中有一个应用程序 我想处理消息 以便用户看不到发生了什么错误 我知道通过 tags style type text css shiny output error visibility hidden shiny ou
  • 使用 R Markdown 文档作为函数源

    我正在研究 R Markdown 来记录我经常使用的功能 我会将它们放入 R Markdown 文件中以记录它们 然后如果我几个月后回来查看它 就能够阅读我在函数背后的想法 我的问题是 如果我开始一个新的 R 项目 是否可以获取 r mar
  • 来自大型数据帧的共现

    我有一个数据框 其中包含有关每个用户访问过哪些城市的信息 df visited lt data frame user c john john claire claire doe doe city c Antananarivo Barcelo
  • 如何创建 highcharter 事件函数以在 Shiny R 中创建“下拉函数”

    我正在建造一个shiny应用程序 我想要完成的事情之一是创建一个下拉菜单 我想将劳动力变量绘制为不同级别的年份变量的函数 请参阅下面的示例数据框 year level 2 level 3 labour 1 2013 10 101 1 2 2
  • 构造奎因(自我复制功能)

    有没有人构建过 quine 生成自己源文本的副本作为其完整输出的程序 http www nyx net gthompso quine htm http www nyx net gthompso quine htm 在 R 中 quine 标
  • R 获取子字符串和正则表达式?

    我有一组文件名字符串 我想提取 符号之后但文件扩展名之前的所有字符 例如 文件名之一是 HelloWorld you txt 我想返回字符串you 这是我的代码 hashPos grep name fixed TRUE dotPos len
  • 基本 dyplr 函数给出错误:“check_dots_used”

    试图找出为什么我会收到此错误 以前从未见过 谷歌没有帮助 check dots used action warn 中的错误 未使用参数 action warn 我在下面的非常基本的试验中收到错误 而且在 group by count 中也收
  • 在列标题和配对变量中嵌入数据的数据透视表

    假设我有这样的数据 不幸的是 变量值嵌入在列名称中 library tidyr library dplyr dat lt tribble group var1 var meta1 var2 var meta2 group1 5 2 cat
  • 如何使用 Facet R 添加线条[重复]

    这个问题在这里已经有答案了 所以我有一个多面图 我希望能够向其中添加随每个面而变化的线 这是代码 p lt ggplot mtcars aes x wt geom histogram bins 20 aes fill factor cyl
  • 按名称包含在单个对象中的多个列对 data.frame 进行排序?

    我想排序一个data frame由多列组成 理想情况下使用基础 R 无需任何外部包 尽管如果有必要 就这样吧 读过如何按列对数据框进行排序 https stackoverflow com questions 1296646 how to s
  • ggplot2 + 使用比例 X 的日期结构

    我真的需要帮助 因为我已经迷路了 我正在尝试创建一个折线图 显示几个团队一年来的表现 我将一年分为几个季度 2012 年 1 月 1 日 2012 年 4 月 1 日 2012 年 8 月 1 日 12 1 12 并将 csv 数据帧加载到
  • SparkR 和 Sparklyr 之间导入 parquet 文件所需的时间差异

    我正在使用 databricks 导入镶木地板文件SparkR and sparklyr data1 SparkR read df dbfs data202007 source parquet header TRUE inferSchema
  • 解压 R 数据框中的列表

    我有一个dataframe其中一个字段包含不同长度的列表 我想将该字段中列表的每个元素提取到其自己的字段中 以便我可以将结果收集到一个很长的字段中dataframe每个列表元素都有一个 id 这是一个例子dataframe dat lt s

随机推荐