欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

主成分分析的可视化展示

程序员文章站 2022-07-14 16:27:41
...

一、主成分分析简介

    在对于一件事物的研究过程中,为了准确的反映事物间的关系,往往需要收集多维指标,以保证尽可能全面地收集信息。然而多维指标往往会提高分析人员的分析难度,并且相似变量也造成了信息重叠,不利于准确提炼数据关系的本质。

    主成分分析法(PCA)就是一种常见的降维算法,它能够降低数据维度,减少高维数据分析难度。主成分分析法能够在实现降维的同时,能够尽量的保证信息损失。因此在很多分析工作中,可以通过提炼主成分的方式,仅依靠少数几个线性组合代替原先的数据集,既提高了数据分析效率,又避免了数据信息的过多损失。

二、R包介绍

    FactoMineR包是主要用于多元统计分析的R包,它能轻松实现主成分分析、因子分析、聚类分析等多元统计分析方法,并提供对分析结果做可视化的分析工具。factoextra包也是多元统计分析包的主要组件,他主要用于提取多元统计分析结果,并进行可视化探索。本文将基于FactoMineR包和factoextra包进行主成分分析。

FactoMineR包的主要函数:

  • PCA: 用于主成分分析的方法
  • HCPC:层次聚类分析法
  • MCA:多重对应分析
  • MFA:多因素分析
  • FAMD: 混合数据因子分析
  • CA : 对应分析

factoextra包的主要函数:

  • fviz_pca:可视化PCA分析
  • fviz_mca:可视化多重对应分析
  • fviz_hmfa_var:可视化多因素分析
  • eclust: 可视化聚类分析结果

三、数据简介

    使用Datasets包里的mtcars数据集作为主成分分析的测试数据。mtcars数据集记录了32种不同品牌的轿车的的11个属性,分别为:

  • mpg: 数值型,车辆油耗,单位是每加仑英里数
  • cyl: 数值型,气缸数
  • disp: 数值型,发动机排量
  • hp: 数值型,马力数
  • drat: 数值型,后桥速比
  • wt: 数值型,车身重量,单位为千磅
  • qsec: 数值型,四分之一英里加速时间
  • vs: 数值型,V/S
  • am: 数值型,0=自动挡,1=手动挡
  • gear: 数值型,前进档位数
  • carb: 数值型,化油器数量

四、主成分分析可视化

    本文采用FactoMineR包的PCA方法进行主成分分析,并以factoextra包进行分析及可视化。

library(FactoMineR)    
library(factoextra)
library(datasets)
res.pca <- PCA(mtcars, graph = FALSE,scale.unit=T)

    对于主成分分析,首先需要判断选择多少个主成分合适,一般可以选择特征值大于1的主成分。可以通过factoextra包的get_eigenvalue函数来输出特征值,具体见下图。

主成分分析的可视化展示
    eigenvalue为特征值,variance.percent为主成分的方差贡献率,cumulative.variance.percent为累积防擦好贡献率。除了通过特征值设定阈值外,还可以通过特征值的累积贡献率来选择主成分数量。

1.碎石图

    通过各主成分的方差贡献率,可以绘制如下这张碎石头图:
主成分分析的可视化展示
    从碎石图上看,前三个主成分的累积贡献率接近90%,因此可以考虑选择前三个主成分输出。

    除了特征值外,还可以通过get_pca_var函数来提取主成分分析结果中的其它变量。

var <- get_pca_var(res.pca)
2.变量相关图

    通过fviz_pca_var函数,可以展示变量与主成分间的相关关系。我们以cos2这个指标为例,cos2反映了各个主成分中各个变量的代表性,一个变量的所有主成分cos2值加起来等于1。对于主成分而言,某个变量的cos2越接近1,则说明变量对该主成分的代表性越高;cos2越接近0,则说明变量对该主成分的代表性越差。我们以第一、第二两类主成分为例:

fviz_pca_var(res.pca, col.var = "cos2",    
     gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07")
     )

主成分分析的可视化展示

    上面这张图为变量相关图,反映了变量与主成分之间的相关关系,图上的变量越接近圆周,则表示该变量对主成分的代表性越强;越接近圆心,则表示该变量对主成分的代表性越差。各变量到各个维度的距离则表现各变量对该主成分的代表性,即cos2。
从图上看,mpg、cyl、disp、wt对第一主成分具有较高的代表性,但是对于第二主成分则不具有显著的代表性。

2.变量贡献图

    fviz_contrib()则展示了各变量对主成分的贡献图,以第一、第二、主成分为例:
主成分分析的可视化展示
主成分分析的可视化展示

    红线表示各变量的平均贡献率。

2.主成分样本散点图

    对于给定的样本点,可以对样本点的主成分得分与主成分进行相关关系展示,以此来区分个样本点的区别与相似。
主成分分析的可视化展示

    如果按照汽车品牌的国家分类的话,还可以在途中对样本点进行分组:

主成分分析的可视化展示

    从图上可以看出来,不同类比的汽车被聚集在了一起。右上角Maserati Bora, Ferrari Dino and Ford Pantera L三类汽车被聚集在了一起,因为他们都是跑车系列;Mazda RX4和Mazda RX4 Wag聚集在了一起,因为他们都是Mazda系列;从品牌的国家分类看,美国系列的汽车均处于图片的右下角,具有明显的辨识度。


更多内容可关注《R友舍》微信公众号,后台回复标题名可获取详细代码

相关标签: R语言 可视化