[R语言可视化-精美图形绘制系列]--主成分分析(PCA)

本期内容为[R语言可视化-精美图形绘制系列]--主成分分析(PCA)

主成分分析:PCA(Principal Component Analysis)是一种常用的数据分析方法。PCA通过线性变换将原始数据变换为一组各维度线性无关的表示,可用于提取数据的主要特征分量,常用于高维数据的降维。


一、降维概述

1.1 数组和序列(Series)的维度

对于数组和序列(Series)来说,维度就是shape()函数返回的结果,shape()函数中返回了几个数字,就是几维(也有人看array()开头或者结尾连续中括号的数量)。

不分行列的数组叫一维数组,此时shape返回单一的维度上的数据个数。有行列之分的数组叫二维数组,也称为表。一张表最多有二个维度,复数的表构成了更高维度的表。当一个数组中存在2张3行4列的表时,shape返回的是更高维度的行和列。当数组中存在2组2张3行4列的表时,数据就是4维,shape返回(2,2,3,4)。

数组中的每一张表,都可以是一个特征矩阵或一个DataFrame,这些结构永远只有一张表,所以一定有行列,其中行是样本,列是特征。针对每一张表,维度指的是样本的数量或特征的数量,一般无特别说明,指的都是特征的数量。除了索引之外,一个特征是一维,两个特征是二维,n个特征是n维。

1.2 图像中的维度

对图像来说,维度就是图像中特征向量的数量。特征向量可以理解为是坐标轴,一个特征向量定义一条直线,是一维;两个相互垂直的特征向量定义一个平面,即一个直角坐标系,就是二维;三个相互垂直的特征向量定义一个空间,即一个立体直角坐标系,就是三维;三个以上的特征向量相互垂直,定义人眼无法看见,也无法想象的高维空间。

1.3 降维解释

降维:算法中的“降维”,指的是降低特征矩阵中特征的数量。降维的目的是为了让算法运算更快,效果更好,但其实还有另一种需求:数据可视化。图像和特征矩阵的维度是可以相互对应的,即一个特征对应一个特征向量,对应一条坐标轴。所以,三维及以下的特征矩阵,是可以被可视化的,这可以帮助我们很快地理解数据的分布,而三维以上特征矩阵的则不能被可视化,数据的性质也就比较难理解。

--

一、标准化

为了让每一个维度对分析的结果造成同样的影响,我们需要对连续的初始变量的范围作标准化。

具体一点说就是因为我们后续的结果对数据的方差十分敏感,取值范围较大的维度会比相对较小的维度造成更大的影响(例如一个在1-100之间变化的维度对结果的影响,比一个0-1的更大),会导致一个偏差较大的结果,所以,将数据转化到相似的范围可以预防这个问题。

数据标准化的方法如下

image

二、计算协方差矩阵

这一步是为了理解数据集中的变量是如何从平均值变化过来的,同时可以查看不同的特征之间又有什么关系,此时我们要计算协方差矩阵。

协方差矩阵是一个PP的对称矩阵(P是维度的数量)它涵盖了数据集中所有元组对初始值的协方差,例如一个拥有三个变量x,y,z和三个维度的数据集,协方差矩阵将是一个33的矩阵(协方差的计算方法及含义见上文):

image

--

资料来源:

干货 :一文读懂主成分分析_数据分析v的博客-CSDN博客

主成分分析(PCA)二哥不像程序员的博客-CSDN博客主成分分析


代码部分:

1. 导入数据

## inputdata PCA data 
Sample01   Sample02    Sample03  Sample04
mRNA.Solyc00g500329.1.1 -0.2707275  0.4083721 -0.11663103 -0.521047
mRNA.Solyc00g500296.1.1 -0.2707218  0.4827739 -0.05794281 -0.521047
mRNA.Solyc01g005160.4.1 -1.2118387 -0.6153115  1.19154446 -1.224433
mRNA.Solyc01g005760.3.1  0.1866860  0.3774126  0.27799407  1.073132
                           Sample05
mRNA.Solyc00g500329.1.1 -0.29660887
mRNA.Solyc00g500296.1.1 -0.26940989
mRNA.Solyc01g005160.4.1 -0.02515638
mRNA.Solyc01g005760.3.1  0.87927082

## 
Samp  conditions
Sample01  CK
Sample02  CK
Sample03  CK
Sample04  Group01
Sample05  Group01
Sample06  Group01
Sample07  Group02
Sample08  Group02
Sample09  Group02
Sample10  Group03
Sample11  Group03
Sample12  Group03
Sample13  Group04
Sample14  Group04
Sample15  Group04
   CK   Treat_01    Treat_02   Treat_03   Treat_04
gene01 -0.84977517  1.4181238 -0.54757208 -0.1937784 -0.2953731
gene02  0.47702001  1.2419958  0.30147166  0.3991298  1.8328058
gene03 -0.25585638 -0.8757098  0.01523679  0.3542401 -0.2953731
gene04 -0.76343921 -0.1194277 -0.15231595  0.8108953 -0.2953731
gene05  0.01850849 -0.8757098 -1.42282342  1.0168803  3.6391267
gene06 -0.84977517  1.6553410 -0.96212175  3.2958347 -0.2953731
  1. 过滤参数
data <- data[apply(data, 1, var)!=0,]
  1. 计算绝对偏差
mads <- apply(data, 1, mad)
data <- data[rev(order(mads)),]
  1. PCA分析,scale标准化
pca <- prcomp(data_t[,1:variableL], scale=TRUE)
head(pca)
  1. 结果展示
fviz_eig(pca, addlabels = TRUE)
## PAC样品聚类信息展示
fviz_pca_ind(pca, repel=F)
## 根据样品分组上色
fviz_pca_ind(pca, col.ind=data_t$conditions, mean.point=F, addEllipses = T, legend.title="Groups")
  1. 根据分组上色并绘制95%置信区间

    --
    往期文章(总汇)
    01-[R语言可视化-精美图形绘制系列]--精美火山图
    02-R语言可视化-精美图形绘制系列--柱状图
    03-R语言可视化-精美图形绘制系列--功能富集分析
    04-R语言可视化-精美图形绘制系列—多组GO富集可视化
    05-[R语言可视化-精美图形绘制系列--堆积图]
    06-[R语言可视化-精美图形绘制系列--组间相关性分析]
    07-[R语言可视化-精美图形绘制系列]--Mental分析
    08-[R语言可视化-精美图形绘制系列--复杂热图+两图渐变连线]-【转载】
    09-[R语言可视化-精美图形绘制系列--桑基图(Sankey)]
    10-[R语言可视化-精美图形绘制系列--柱状图误差线标记]
    11-跟着NC学作图 | 柱状图与相关性图
    12-[R语言可视化-精美图形绘制系列--GO、KEGG富集通路关联图]
    13-[跟着“基迪奥生物学”作图]--截断图
    14-[R语言可视化-精美图形绘制系列]--显著性箱线图
    14-2[R语言可视化]--箱线图不同的画法及参数设置 | 学习笔记
    15-[R语言可视化-精美图形绘制系列]--组内相关性分析
    --
    小杜的生信筆記 ,主要发表或收录生物信息学的教程,以及基于R的分析和可视化(包括数据分析,图形绘制等);分享感兴趣的文献和学习资料!

你可能感兴趣的:([R语言可视化-精美图形绘制系列]--主成分分析(PCA))