前面给大家简单介绍了做PCA分析并绘图的R包factoextra ☞【R语言】factoextra生成发表级PCA主成分分析图(一) 主要讲了如何展示样本的主成分分析结果,即样本在新的空间中的分布情况,便于查看样本分群的结果。 今天我们来讲讲如何展示特征的分布,我们还是使用iris这套数据集 #加载这两个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$contrib library("corrplot") corrplot(var$contrib, is.corr=FALSE) fviz_contrib(iris.pca, choice = "var", axes = 1) 与var$contrib中的结果一致 fviz_contrib(iris.pca, choice = "var", axes = 1:2) #根据贡献度着色 fviz_pca_var(iris.pca, col.var="contrib", gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07") ) 这个颜色的深浅代表了每一个原始特征对PC1-2的综合贡献程度,跟上面的柱形图的结果一致 当然我们还可以从另一个角度来展示特征,即各个原始特征多大程度上能代表各个PC,这里我们叫做代表质量 #corrplot展示各变量对各主成分的代表质量 library("corrplot") # is.corr表示输入的矩阵不是相关系数矩阵 corrplot(var$cos2, is.corr=FALSE) Petel.Lenth最能代表PC1,而Sepal.Width最能代表PC2,也在一定程度上能代表PC1。 当然我们也可以考虑每一个原始特征对PC1和PC2的综合代表性 fviz_cos2(iris.pca, choice = "var", axes = 1:2) 可以看出Sepal.Width要比Petel.Lenth的代表性更好 接下来我们可以在展示特征分布的时候根据特征对PC的代表性来着色 #根据代表性着色 fviz_pca_var(iris.pca, col.var="cos2", gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07") ) 可以看出这个结果其实跟使用贡献度的结果大同小异 今天的分享就先到这里,下一期我们将跟大家分享,如何将样本和特征同时展示在以PC为坐标的图上。 参考资料: ☞【R语言】factoextra生成发表级PCA主成分分析图(一) 为了方便大家交流学习,共同进步,我特地创建了微信交流群 |
|