R -- 用psych包做主成分分析

news2025/1/18 9:55:10

在这里插入图片描述

主成分分析

主成分分析是一种数据降维方式,他将大量相关变量转化为一组很少的不相关的变量,这些不相关的变量称为主成分。

人话版:给你发一个由18位数字组成的身份证号码,第1、2位数字表示所在省份的代码;第3、4位数字表示所在城市的代码;第5、6位数字表示所在区县的代码;第7-14位数字表示出生年、月、日;第15-17位数字为顺序码,表示同一区域内同年同月同日出生的顺序号,其中第17位数字表示性别,奇数表示男性,偶数表示女性;第18位数字是校检码,校检码可以是0-9的数字,有时也用x表示,X是罗马数字的10。
这一串数字最后就可以表示你是哪个省的哪个市哪个县,出生日期和性别。
本来关于你的很多信息(变量)抽象成了一串数字(主成分PC),就可以表示你的很多信息了。<==我觉得像是在打包,具体的降维过程和算法参见博客。

brief

在这里插入图片描述

实例

在这里插入图片描述
在这个数据集USJudgeRatings中,每一行为一个律师,每一列对应着这个律师某一方面的一些评价打分,可以用较少的变量代替上述的列变量吗?大约多少个合适?如何计算呢?

判断需要多少个主成分数目

  • 直接指定
  • 根据方差累积的阈值判断,也就是多少个PC之后对数据的方差解释贡献度较小 ⇐ 这个方法最常用
  • 根据相关性矩阵判断大概可以聚成几个类

下面使用手肘法和平行分析判断选取多少个PC

  • 手肘法–碎石图
    可以简单理解为Y轴是PC个数,X轴是累积方差解释度,陡峭拐点之前的哪些PC对数据的方差解释度最好,可以选取这些PC进行后续分析。
  • 平行分析
    模拟一个相同大小的K*K的随机数矩阵,计算他们的平均特征值,若真实数据的特征值大于模拟数据的平均特征值,对应的PC则可以保留下来。
library(psych)
fa.parallel(USJudgeRatings[,-1], fa="pc", n.iter=100,
+             show.legend=FALSE, main="Scree plot with parallel analysis")

在这里插入图片描述
蓝色线是碎石图,component number等于2的时候是拐点,所以PC=1或者2都可以
红色线是平行分析模拟出来的平均特征值分布曲线,只有component number等于1时,真实数据的特征值才大于模拟数据的特征值,综合来看可以让PC=1.

提取主成分

principal函数可以根据原始矩阵或者相关性系数矩阵做主成分分析,需要注意NA值以及太多的zero值的影响。
在这里插入图片描述
在这里插入图片描述

  • 上述的截图中包含了成分载荷,指观测的变量与主成分的相关系数,
    形如 PC1 = 0.92 * INTG + 0.91 * DMNR… ,该等式用于计算PC得分,其中0.92,0.91,0.97称为载荷。
  • 上面那个matrix PC1列是成分载荷,h2列表示成分公因子方差,即主成分对每个变量的方差解释度。u2表示成分唯一性,即方差无法被主成分解释的部分(1-h2)。
  • 上述变量中体能(PHYS) 80 %的方差都可以被第一主成分解释,相比而言也是第一主成分表示性最差的变量
  • SS loadings 行包含了与主成分相关连的特征值,指的是与特定主成分相关连的标准化后的方差值。
  • Proportion Var 表示的是每个主成分对整个数据集的解释度。

主成分旋转

旋转是让成分载荷矩阵变得更容易解释的数学方法,它们尽可能地对成分降噪。
目前有两种旋转方法,一是让成分保持不相关(正交旋转),二是让他们变得相关(斜交相关)。
最流行的是正交旋转中的方差最大旋转法,即让每一列的载荷只有很大的几个载荷,其他都是很小的载荷

因为需要正交旋转,上述的数据集只有一个PC不好演示,我们换一个数据集。
Harman23.cor 数据集中的cov数据槽是一个305名女孩的身体指标的相关性系数矩阵。
在这里插入图片描述

fa.parallel(Harman23.cor$cov, n.obs=302, fa="pc", n.iter=100,
            show.legend=FALSE, main="Scree plot with parallel analysis")

在这里插入图片描述

  • 不进行旋转
    在这里插入图片描述
    PC1 = 0.86 * height + 0.84 * arm.span …
    PC2 = -0.37 * height -0.44 * arm.span … + 0.58 * chest.girth + 0.42 * chest.width
    PC1 与 PC2 可以解释身高 heigh 88%的方差
    proportion var 列表示 PC1 可以解释数据集 58%的方差,PC2 可以解释数据集 22%的方差,累加一起81%

  • 进行旋转

在这里插入图片描述

  • PC 变成了RC 表示以旋转
  • 累计方差解释度没变,但是每个成分对数据集的方差解释度发生细微改变
  • 前四个变量在RC1中相关性/贡献度比较大,在RC2中贡献度较小,和未旋转的结果很类似,尤其你看h2那一列数据,旋转和未旋转是一样的。那旋转的好处是什么呢?降噪 – 变量的贡献度分化了,大的变大,小的变小,一眼看出来差别了。

获取主成分得分

输入是原始数据

在这里插入图片描述

输入是相关性矩阵

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/435139.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深度学习笔记之残差网络(ResNet)

深度学习笔记之残差网络[ResNet] 引言引子&#xff1a;深度神经网络的性能问题核心问题&#xff1a;深层神经网络训练难残差网络的执行过程残差网络结构为什么能够解决核心问题残差网络的其他优秀性质 引言 本节将介绍残差网络( Residual Network,ResNet \text{Residual Netwo…

C#中用程序代码修改了datagridview中的数据,保存时只对光标当前行有保存解决办法

C#中DataGridView绑定了DataTable后&#xff0c;通过代码修改DataGridView中的数据&#xff0c;总有一行&#xff08;被修改过并被用户选中的行集合中索引为0的行&#xff09;不能被UpDate回数据库的问题和解决办法 长江黄鹤 2017-06-26 | 300阅读 | 1转藏 转藏全屏朗读分…

【JavaScript】初入前端,记录JavaScript学习过程

文章目录 一、下面将是你在本教程中学到的主要内容1. JavaScript直接写入HTML输出流2. JavaScript对事件的反应3. JavaScript&#xff1a;改变 HTML 内容4. JavaScript 改变HTML图像5. 改变HTML样式6. JavaScript 验证输入 二、JavaScript 语法学习1. JavaScript的位置2. 浏览器…

如何在硬盘上恢复已经删除的照片?

可以从硬盘恢复删除的照片吗&#xff1f; 旅行后&#xff0c;许多人倾向于将照片保存到另一个储存设备作为副本或备份。例如&#xff0c;将它们存储在外部硬盘上或将图片传输到电脑。但是在整理照片的时候&#xff0c;很可能不小心把照片删掉了&#xff0c;尤其是使用外接硬…

成都爱尔樊映川:视网膜上视觉最敏锐部位,出问题怎么办

视网膜后极部有一直径约 2mm 的浅漏斗状小凹陷区&#xff0c;该区含有丰富的叶黄素呈现椭圆形黄色&#xff0c;称为“黄斑”&#xff0c;是视网膜上视觉最敏锐的部位。 它主要与精细视觉及色觉等视功能有关。正常情况下&#xff0c;外界物体光线进入眼内&#xff0c;投影在黄斑…

【项目开发】二开系统,费了好大劲,才整好,规划业务逻辑太重要了

作为程序员一天不写代码&#xff0c;不会咋样&#xff0c;第二天会比较生疏&#xff0c;所以小编也不能闲着&#xff0c; 3天的时间吧&#xff0c;搞了个羽毛球场地预约系统&#xff0c;看着场地预约页面比较简单&#xff0c; 小编下班回家&#xff0c;搞了2个晚上&#xff0c…

开发常用的 Linux 命令2(文件的查看、搜索和权限)

开发常用的 Linux 命令2&#xff08;文件的查看、搜索和权限&#xff09; 作为开发者&#xff0c;Linux是我们必须掌握的操作系统之一。因此&#xff0c;在编写代码和部署应用程序时&#xff0c;熟练使用Linux命令非常重要。这些常用命令不得不会&#xff0c;掌握这些命令&…

【MySQL】增删改查基本操作

目录 上篇在这里喔~ 增删改查1 1.条件查询WHERE 1.查询语文成绩大于60的同学 2.查询语文成绩等于NULL的同学 3.查询语文成绩在60-90之间的同学 4.查询英语成绩等于30&#xff0c;77&#xff0c;90的所有同学 5.查询小锦鲤的语文成绩是否为空 6.查询姓孙的同学的所有信息 …

shiro漏洞复现及其攻击流量分析

前言 最近面试时经常被问到&#xff0c;每次说的都不太完美&#xff0c;现在再来复现一边。 shiro介绍 Apache Shiro是一个开源安全框架&#xff0c;提供身份验证、授权、密码学和会话管理。 CVE-2016-4437 利用vulhub搭建的靶场。 在Apache Shiro < 1.2.4版本中存在反…

Servlet 之超详解【2023年最新版】

编译软件&#xff1a;IntelliJ IDEA 2019.2.4 x64 操作系统&#xff1a;win10 x64 位 家庭版 服务器软件&#xff1a;apache-tomcat-8.5.27 目录 一. 什么是Servlet&#xff1f;二. 如何编写第一个servlet程序&#xff1f;三. Servlet的生命周期四. Servlet的技术体系五. web项…

Flutter Animation 动画

前言 &#xff1a; 在Flutter 中&#xff0c;做动画离不开这么一个类&#xff0c;那就是 Animation 这个类如往常一样&#xff0c;也是一个抽象类。 abstract class Animation<T> extends Listenable implements ValueListenable<T> 整个animation.dart 文件只有…

Windows和IDEA安装Scala

一、Windows安装Scala 前提&#xff1a;Windows已经安装好JDK1.8 第一步&#xff0c;下载对应的 Scala 安装文件 scala-2.12.11.zip (尚硅谷资料里有。直接获取&#xff09; 第二步&#xff0c;解压scala-2.12.11.zip 注意自己解压的目录&#xff0c;我这里解压到D盘java文…

3、ThingsBoard使用jar包单机部署

1、概述 前面一节我讲了如何初始化数据库表结构以及默认的数据。这一节我将讲解如何使用jar包部署。 2、部署 2.1、修改thingsboard.yml配置 上一节我已经讲解了thingsboard.yml中的基础配置,基础的组件配置如何redis、kafka、Cassandra、pg等大家都知道,关键的地方是在于…

Zimbra 远程代码执行漏洞(CVE-2019-9670)漏洞分析

Zimbra 远程代码执行漏洞(CVE-2019-9670)漏洞分析 漏洞简介 Zimbra是著名的开源系统&#xff0c;提供了一套开源协同办公套件包括WebMail&#xff0c;日历&#xff0c;通信录&#xff0c;Web文档管理和创作。一体化地提供了邮件收发、文件共享、协同办公、即时聊天等一系列解决…

主 存储器

主存储器 概述 实际上在主存储器运作时&#xff0c;根据MAR中的地址访问某个存储单元时&#xff0c;还需经过地址译码、驱动等电路才能找到所需的访问单元。读出时需经过读出放大器&#xff0c;才能将被选中单元的存储字送到MDR。写入时&#xff0c;MDR中的数据也必须经过写入…

课程简介:.Net Core从零学习搭建权限管理系统

课程简介目录 &#x1f680;前言一、课程背景二、课程目的三、系统功能四、系统技术架构五、课程特点六、课程适合人员七、课程规划的章节八、最后 &#x1f680;前言 本文是《.Net Core从零学习搭建权限管理系统》教程专栏的导航站&#xff08;点击链接&#xff0c;跳转到专栏…

【运动规划算法】路径规划中常用的插值方法

文章目录 简介一、线性插值二、三次样条插值三、B样条插值四、贝塞尔曲线插值总结 简介 常见用于处理路径平滑的插值算法主要包括线性插值、三次样条插值、B样条插值和贝塞尔曲线插值等&#xff0c;下面分别介绍它们的优缺点和使用场景。 一、线性插值 线性插值是最简单的插值…

【主流Chat模型的申请入口和方法】

主流Chat模型的申请入口和方法 一、申请New Bing二、申请内测文心一言三、申请内测Claude四、谷歌家的Bard五、Adobe Firefly六、GitHub Copilot chat七、通义千问八、360智脑 一、申请New Bing 注册一个 outlook 邮箱&#xff0c;很简单&#xff0c;2分钟就可搞定&#xff5e…

操作系统(2.7)--进程

目录 一、进程的引入 1.进程的两个基本属性 2.程序并发执行所需付出的时空开销 3.线程---作为调度和分派的基本单位 二、线程(轻型进程)与进程(重型进程)的比较 1&#xff09;调度的基本单位 2&#xff09;并发性 3&#xff09;拥有资源 4&#xff09;独立性 5&#…

离线数仓的数仓分层

数据仓库分层的作用 数据结构化更清晰&#xff1a; 对于不同层级的数据&#xff0c;他们作用域不相同&#xff0c;每一个数据分层都有它的作用域&#xff0c;这样我们在使用表的时候能更方便地定位和理解。 数据血缘追踪&#xff1a; 提供给外界使用的是一张业务表&#xf…