前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【R语言】factoextra生成发表级PCA主成分分析图(二)

【R语言】factoextra生成发表级PCA主成分分析图(二)

作者头像
生信交流平台
发布2022-09-21 18:39:51
6450
发布2022-09-21 18:39:51
举报

前面给大家简单介绍了做PCA分析并绘图的R包factoextra

【R语言】factoextra生成发表级PCA主成分分析图(一)

主要讲了如何展示样本的主成分分析结果,即样本在新的空间中的分布情况,便于查看样本分群的结果。

今天我们来讲讲如何展示特征的分布,我们还是使用iris这套数据集

代码语言:javascript
复制
#加载这两个R包
library(FactoMineR)
library(factoextra)
#做PCA分析,第五列为物种,非数值属性需要去除
iris.pca <- PCA(iris[,-5], graph = T)
#获取样本的主成分分析结果
var <- get_pca_var(iris.pca)
#查看特征分布
fviz_pca_var(iris.pca)

这张图展示的是原始特征在新空间中的分布情况,这四个特征的坐标存放在var$coord中

我们以Sepal.Length这个特征为例,在Dim1和Dim2的二维空间中的横坐标是0.89,纵坐标是0.36,如上图所示。

在前面一期的内容里我们也介绍了如何查看每一个原始特征对每一个PC的贡献程度

代码语言:javascript
复制
#查看每一个特征对每一个主成分的贡献程度
var$contrib

‍我们可以用相关性图来展示贡献程度

代码语言:javascript
复制
library("corrplot")
corrplot(var$contrib, is.corr=FALSE)

我们可以看到Sepal.Width这个特征对Dim.2的贡献最大。

柱形图来展示,原始四个特征对PC1的贡献程度

代码语言:javascript
复制
fviz_contrib(iris.pca, choice = "var", axes = 1)

与var$contrib中的结果一致

当然我们可以展示每一个原始特征对PC1和PC2的综合贡献程度

代码语言:javascript
复制
fviz_contrib(iris.pca, choice = "var", axes = 1:2)

可以看出结果有所变化,因为Sepal.Width这个特征对Dim.2的贡献实在太大了

接下来我们可以在展示特征分布的时候根据特征对PC的贡献程度来着色

代码语言:javascript
复制
#根据贡献度着色
fviz_pca_var(iris.pca,  
             col.var="contrib",
             gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07")
)

这个颜色的深浅代表了每一个原始特征对PC1-2的综合贡献程度,跟上面的柱形图的结果一致

当然我们还可以从另一个角度来展示特征,即各个原始特征多大程度上能代表各个PC,这里我们叫做代表质量

代码语言:javascript
复制
#corrplot展示各变量对各主成分的代表质量
library("corrplot")
# is.corr表示输入的矩阵不是相关系数矩阵
corrplot(var$cos2, is.corr=FALSE)

Petel.Lenth最能代表PC1,而Sepal.Width最能代表PC2,也在一定程度上能代表PC1。

当然我们也可以考虑每一个原始特征对PC1和PC2的综合代表性

代码语言:javascript
复制
fviz_cos2(iris.pca, choice = "var", axes = 1:2)

可以看出Sepal.Width要比Petel.Lenth的代表性更好

接下来我们可以在展示特征分布的时候根据特征对PC的代表性来着色

代码语言:javascript
复制
#根据代表性着色
fviz_pca_var(iris.pca,  
             col.var="cos2",
             gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07")
)

可以看出这个结果其实跟使用贡献度的结果大同小异

今天的分享就先到这里,下一期我们将跟大家分享,如何将样本和特征同时展示在以PC为坐标的图上。

参考资料:

R做PCA主成分分析

【R语言】factoextra生成发表级PCA主成分分析图(一)

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-12-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信交流平台 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档