r语言dataellipse_R语言 PCA分析

article/2025/7/9 0:15:04

PCA数据分析

PCA结果分析及可视化首推factoextra包,能处理各种R函数计算PCA的结果,有:

stats::prcomp()

FactoMiner::PCA()

ade4::dudi.pca()

ExPosition::epPCA()

如果我们想判断PCA中需要多少个主成分比较好,那么可以从主成分的特征值来考虑(Kaiser-Harris准则建议保留特征值大于1的主成分);特征值表示主成分所保留的变异量(所解释的方差);如用get_eigenvalue函来提取特征值,结果中第一列是特征值,第二列是可解释变异的比例,第三列是累计可解释变异的比例

> eig.val

> eig.val

eigenvalue variance.percent cumulative.variance.percent

Dim.1 4.1242133 41.242133 41.24213

Dim.2 1.8385309 18.385309 59.62744

Dim.3 1.2391403 12.391403 72.01885

Dim.4 0.8194402 8.194402 80.21325

Dim.5 0.7015528 7.015528 87.22878

Dim.6 0.4228828 4.228828 91.45760

Dim.7 0.3025817 3.025817 94.48342

Dim.8 0.2744700 2.744700 97.22812

Dim.9 0.1552169 1.552169 98.78029

Dim.10 0.1219710 1.219710 100.00000

除了卡特征值大于1作为主成分个数的阈值外,还可以设置总变异的阈值(累计)作为判断指标

除了看表格来判断,还可从图形上直观的感受下

fviz_eig(res.pca, addlabels = TRUE, ylim = c(0, 50))

5a55dfbdf238ea3f0415102026db1239.pngfviz_eig_PCA_plot

如果我们想提取PCA结果中变量的信息,则可用get_pca_var()

var

比如我们用于展示变量与主成分之间的关系,以及变量之间的关联,可直接用head(var$coord)查看,或者图形展示

fviz_pca_var(res.pca, col.var = "black")

046992f82b8027c867ab1fcd691b82fd.pngpca_var_corrd

图形解释,见原文吧:

Positively correlated variables are grouped together.

Negatively correlated variables are positioned on opposite sides of the plot origin (opposed quadrants).

The distance between variables and the origin measures the quality of the variables on the factor map. Variables that are away from the origin are well represented on the factor map

除了上面的Correlation circle外,还有Quality of representation(对应var$cos2),用于展示每个变量在各个主成分中的代表性(高cos2值说明该变量在主成分中有good representation,对应在Correlation circle图上则是接近圆周边上;低cos2值说明该变量不能很好的代表该主成分,对应Correlation circle图的圆心位置);对于变量来说,所有主成分上cos2值的和等于1,所以变量在越少主成分下累计cos2值接近于1,则其在Correlation circle上处于圆周圈上

library("corrplot")

corrplot(var$cos2, is.corr=FALSE)

4a8448713fae083a74098173a8579ec5.pngpca_var_cos2

对于cos2值的原文总结:

The cos2 values are used to estimate the quality of the representation

The closer a variable is to the circle of correlations, the better its representation on the factor map (and the more important it is to interpret these components)

Variables that are closed to the center of the plot are less important for the first components.

针对上述的cos2值,还有一个与其相关的则是Contributions to the principal components,也就是cos2值在各个主成分中的比例。。

简单的说,如果一个变量在PC1和PC2的Contributions很高的话,则说明该变量可有效解释数据的变异,我们可以用图形展示各个变量在PC1和PC2上的Contributions

fviz_pca_var(res.pca, col.var = "contrib",

gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07")

)

16ef8cf71a221eaa6dccc5dbebf3f1f2.pngpca_var_contrib

以上均是对变量在PCA中的分析,下面则是观测值的分析

跟上述变量的分析一样,先用提取出individuals信息,会发现也有coord,cos2和contrib等信息

> ind

> ind

Principal Component Analysis Results for individuals

===================================================

Name Description

1 "$coord" "Coordinates for the individuals"

2 "$cos2" "Cos2 for the individuals"

3 "$contrib" "contributions of the individuals"

然后按照上面的模式来展示下individuals的点图,比如以cos2值来代表各个individuals点的圆圈大小

fviz_pca_ind(res.pca, pointsize = "cos2",

pointshape = 21, fill = "#E7B800",

repel = TRUE # Avoid text overlapping (slow if many points)

)

94f380a073387af5dfd53f1a95b9ba66.pngpca_ind_point

如果有分组信息,则可以将同一组的individuals圈在一起,如:

fviz_pca_ind(iris.pca,

geom.ind = "point", # show points only (nbut not "text")

col.ind = iris$Species, # color by groups

palette = c("#00AFBB", "#E7B800", "#FC4E07"),

addEllipses = TRUE, # Concentration ellipses

legend.title = "Groups"

)

df56a11e738ad2cff17ac130f31ec6f2.pngpca_ind_group

上述图形可改进用于展示置信椭圆和不规则图形等

最后可以将vars和individuals同时在一张biplot图中展示(一般biplot图只用于展示变量较少的情况)

fviz_pca_biplot(iris.pca,

col.ind = iris$Species, palette = "jco",

addEllipses = TRUE, label = "var",

col.var = "black", repel = TRUE,

legend.title = "Species")

37d5b855f59e64cc50b21dd65ae7d35d.pngpca_biplot


http://chatgpt.dhexx.cn/article/WxIoVNuB.shtml

相关文章

样本数据PCA分析

PCA分析及画图 library(ggpubr) library(ggplot2) library(ggthemes) data1<-read.table(./100klist.txt,header 1)[,1:4] head(data1)BCD_rep1 BCD_rep2 CK_rep1 CK_rep2 1 0.1987 0.2036 0.1807 0.2062 2 0.2133 0.2169 0.2040 0.2140 3 0.1943 0.1965 …

转录组-PCA分析

PCA分析步骤&#xff1a; 第一步&#xff0c;对所有样本进行中心化 第二步&#xff0c;求特征协方差矩阵 第三步&#xff0c;求协方差矩阵的特征值和特征向量 第四步&#xff0c;将特征值按照从大到小的顺序排序&#xff0c;选择其中最大的k个&#xff0c;然后将其对应的k个特征…

PCA分析及CNS级别作图

从这节开始&#xff0c;就逐渐涉及转录组的基本可视化了&#xff0c;我们的可视化要做到CNS级别的图&#xff0c;争取做好分析&#xff0c;一步到位&#xff0c;让您有真正的收获&#xff01; PCA&#xff08;主成分分析&#xff09;&#xff0c;具体的原理就不说了&#xff0…

R语言PCA分析

常用R包&#xff1a;princomp&#xff0c;prcomp及rda R中输入数据类型有两类&#xff0c;R mode和Q mode。一般来说数据每一列为一个变量&#xff08;variable&#xff09;&#xff0c;每一行为一个数据&#xff08;observation&#xff09;。其中R mode的数据行数大于列数&a…

CSS3 媒体查询

1. 什么是媒体查询 CSS3媒体查询&#xff08;Media Query&#xff09;语法的特性&#xff1a; ①使用 media 查询&#xff0c;可以针对不同的媒体类型定义不同的样式&#xff1b; ②media 可以针对不同的屏幕尺寸设置不同的样式&#xff1b; ③当你重置浏览器大小的过程中&am…

mysql以逗号分隔的字段作为查询条件怎么查——find_in_set()函数

文章目录 写在前面作为查询条件 多条件查询用于mybatis 聚合查询count总数查询distinct的列表find_in_set()函数走索引吗 写在前面 使用mysql时&#xff0c;有可能一个字段代表一个集合&#xff0c;如果将这个集合单独抽成一张表又不值当的&#xff0c;这个时候我们存储时&a…

PageHelper实现分页查询

文章目录 前言一、PageHelper实现分页查询二、PageHelper的基本使用1. 先编写持久层2.编写业务逻辑层3..编写控制层4.使用JsonPage返回结果 总结 前言 分页查询的优点 所谓分页,就是查询结果数据较多时,采用按页显示的方法,而不是一次性全部显示 分页的优点: 服务器:一次性…

降低数据库压力的方法

1.合理增加索引 表索引可以加快对表中数据的检索速度&#xff0c;但是会降低表中数据的更新速度&#xff0c;所以增加表的索引一定控制在合理范围内&#xff0c;过多的索引不但不会降低数据库的压力&#xff0c;反而可能增大数据库的压力&#xff0c;表索引的建立一般要从具体业…

MyBatis—利用MyBatis查询(查询所有,查询一行,条件查询)

文章目录 1、查询所有2、查询详情&#xff08;通过特定属性查询&#xff09;3、多条件查询&#xff08;1&#xff09;接口参数列表三种表达方式&#xff08;2&#xff09;多条件查询&#xff08;3&#xff09;动态Sql&#xff08;4&#xff09;多条件动态查询&#xff08;5&…

Redis实现分页和多条件模糊查询方案

导言 Redis是一个高效的内存数据库&#xff0c;它支持包括String、List、Set、SortedSet和Hash等数据类型的存储&#xff0c;在Redis中通常根据数据的key查询其value值&#xff0c;Redis没有模糊条件查询&#xff0c;在面对一些需要分页、排序以及条件查询的场景时(如评论&…

python操作es条件查询定制body

参考连接&#xff1a; python操作elasticsearch - 无量python - 博客园 1、切片查询 from elasticsearch import Elasticsearch# 建立连接 es Elasticsearch( hosts{192.168.0.120, 192.168.0.153}, # 地址timeout3600 # 超时时间 )# body指定查询条件 body {from: 0, #…

Oracle clob怎么存储超过4000长度的数据,你了解吗

目录 方式一、使用存储过程&#xff1a; 方式二、使用to_clob函数 方式三、mybatis中的方法 附&#xff1a; oracle将把varchar2字段&#xff08;长度4000&#xff09;改为clob类型 参考资料&#xff1a; 题记&#xff1a;我们知道Oracle存储的字段长度是有限制&#xff0…

oracle中clob和blob,Oracle中的BLOB和CLOB

非洲小白脸 阅读(364) 评论(0) 编辑 收藏 所属分类: oracle Oracle中的BLOB和CLOB 一、区别和定义 LONG: 可变长的字符串数据,最长2G,LONG具有VARCHAR2列的特性,可以存储长文本一个表中最多一个LONG列 LONG RAW: 可变长二进制数据,最长2G CLOB: 字符大对象Clob 用来存储单…

mysql clob blob_Oracle中 CLOB, BLOB和NLOB

SQL 类型 CLOB 在 Java TM 编程语言中的映射关系。SQL CLOB 是内置类型&#xff0c;它将 Character Large Object 存储为数据库表的某一行中的一个列。默认情况下&#xff0c;驱动程序使用 SQL locator(CLOB) 实现 Clob 对象&#xff0c;这意味着 CLOB 对象包含一个指向 SQL CL…

java clob 操作_Java Clob 操作

java操作数据库clob字段的简单例子&#xff1a; package com.test.db.clob; import java.io.BufferedReader; import java.io.IOException; import java.io.Writer; import java.sql.Clob; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Prepar…

ORACLE中CLOB介绍及使用

一、Oracle中的varchar2类型 我们在Oracle数据库存储的字符数据一般是用VARCHAR2。VARCHAR2既分PL/SQL Data Types中的变量类型&#xff0c;也分Oracle Database中的字段类型&#xff0c;不同场景的最大长度不同。 在Oracle Database中&#xff0c;VARCHAR2 字段类型&#xf…

clob类型(数据库clob类型)

如何获取clob类型的字节长度 blob和clob最大是多少&#xff1f;还是没有最大限制&#xff1f;它们的最大上限就是4G&#xff0c;Clob可以存储单字节字符数据&#xff0c;Blob可以存储无结构的二进制数据 Oracle中Clob类型如何处理&#xff1f; string id Guid。NewGuid()。ToS…

CRC校验方法的实现

1&#xff0c;确定收发双方所使用的校验位数(由收发双方自定义) 如1个字节的为CRC-8校验&#xff0c;2字节为CRC-16校验&#xff0c;4字节为CRC-32校验。 2&#xff0c;确定除数(生成多项式) 根据校验字节数&#xff0c;确定某个除数G(x)&#xff0c;这个除数一般以二进制形式…

【Verilog】CRC校验码生成器原理及verilog实现

目录 一、CRC的基本原理 二、CRC生成步骤 2.1举个栗子 三、Verilog实现 四、参考资料 4.1 CRC在线计算器 一、CRC的基本原理 CRC &#xff1a;Cyclic Redundancy Check循环冗余校验码 将被处理的报文比特序列当做一个二进制多项式A(x)的系数&#xff0c;任意一个由二进制…

CRC校验原理及其使用

目录 何为CRC 为什么需要校验 为什么是CRC CRC的缺点 目录 何为CRC 为什么需要校验 为什么是CRC CRC的缺点 如何进行CRC校验 校验标准式是什么玩意&#xff1f; 常见的CRC校验 CRC校验计算过程 CRC校验代码参考 代码解读 生成CRC8校验表的代码 CRC检验网站 如何…