主讲老师第二十四课:PCA分析
在正式的差异基因分析之前,还可以进行一项分析内容,即通过主成分分析 PCA,以观察整体水平两个分组变量之间的差异。简单介绍一下,主成分分析法是很常用的一种数据降维方法,该方法可以减少数据的维数,并保持对方差贡献最大的特征,相当于保留低阶主成分,忽略高阶主成分。
大家下载一下演示数据(PCAanalysis.zip),首先,我们来看下之前下载的 STAD 数据的PCA 分析,通过 load() 函数来导入 TCGA-STAD 的 count 数据。
先来观察一下这份数据中包含的内容,可以看到,其中包含了 count 数据(exp),FPKM数据(exp_fpkm),TPM 数据(tpms),以及对应的分组信息(group_list)。下面,我们分别来看下如
何进行主成分分析以及可视化展示。
1.读取R包
在主成分分析过程中,我们往往使用 FactoMineR 包的 PCA() 函数或者使用基础包的 prcomp() 函数进行数据降维处理,然后使用 factoextra 包的 fviz_pca_ind() 函数对结果进行可视化,在此,我们先讲解一下 FactoMineR 包的 PCA() 函数的使用方法。
2.PCA 分析
在分析前,我们需要对基因进行一个筛选动作
计算每个基因的 count 数之和,筛选总和大于 32 的基因,进行后续分析,这样,可以保证,至少把一部分在大部分组织中均不表达的基因进行剔除分析前,需要对表达矩阵进行转置处理,以满足数据的输入要求,到此,表达输入文件就基本准备好了。而分组信息则设置为正常组和肿瘤组,接着,进行 PCA 分析。
使用 FactoMineR 包的 PCA() 函数对数据进行数据降维处理,随后,把得到的 pca 分析结果进行绘图。
可以看到,在 STAD 患者中,Normal 和 Tumor 组织之间存在一定的差异,但无十分显著的差异性,考虑到有时候二维图形结果会有一定的缺陷,接下来我们来介绍一下如何绘制PCA3D 图形,同时我们来讲解一下数据的下载与准备过程。
3.PCA3D 图形的绘制
首先清除当前环境下所有变量。
3.1 R 包和数据准备
3.1.1 R 包安装与数据下载
在此,我们使用 rgl 包来进行后续 3D PCA 图形的绘制,为了便于数据的下载与清洗,同时加载TCGAbiolinks 包和 tidyverse 包。
3.1.2 表达数据下载
对于数据的准备,包括表达数据和分组数据,我们首先来看下表达数据的下载根据标准流程,设置肿瘤类型,并使用使用 GDCquery() 函数来查询下载信息,这里来看看 FPKM 数据的下载。
随后,使用 GDCdownload() 函数来下载数据,此时,下载的数据,会默认在当前工作目录创建GDCdata 文件夹,并存放在里面。
使 用 GDCprepare() 函 数 批 量 读 取 数 据 , 并 把 读 取 的 数 据 保 存 为 .rda 文 件(TCGA-STADgdc.Rdata),便于下次直接加载。
3.1.3 临床数据的下载
接着,我们进一步下载相关的临床数据,用于后续的分组设置。
同样使用 TCGAbiolinks 包的 GDCdownload() 函数进行临床数据的下载。
进一步,使用 GDCprepare_clinic() 函数整合临床数据,并保存为 .rda 文件。
3.2 数据整理
接下来,我们需要对下载得到的临床数据和表达数据进行整理与清洗。
3.2.1 临床数据整理
提取表达数据中样品编号与病理分期信息,在此,我们将通过病理分期,将 Stage_I 和Stage_II 的患者分为一组,Stage_III 和 Stage_IV 的患者分为第二组
为了便于后续的分析使用,我们对其列名重新命名
使用 filter() 函数对缺失值进行筛选并去除,通过 table() 函数来统计不同分期时样品的数量。
根据分期情况,对其命名进行重新定义,并使用 duplicated()函数与取反!联用,去除重复的样品I 期 59 例,II 期 130 例,III 期 183 例,IV 期 44 例。
3.2.2 表达数据的整理
3.2.2.1 加载基因注释文件
读取前期整理好的基因长度表格文件,并提取其中的编码基因 protein_coding 信息,最终得到了 19627个编码基因信息。
3.2.2.2 提取 mRNA 表达
载入前面下载得到的 STAD 患者表达数据,并使用 TCGAanalyze_Preprocessing() 函数提取 FPKM 表达值使用 intersect() 函数提取表达矩阵基因与编码基因之间的交集基因名称,最终得到了19585 个基因信息根据共同基因信息,分别对注释文件和表达文件进行取子集操作,使得两者的基因排序相同。
最后,为了后续操作方便,对表达矩阵的列名进行处理
3.2.3 分组整理
得到表达矩阵以后,接下来进行分组的设置首先,根据肿瘤的命名结果,对两个分组样品名字进行完善,通过 cli$Stage %in% c("I", "II") 进行判断,并进行取子集,得到相应分组的名字,后使用 paste0() 函数在其后面加上“-01A”,补齐名称。
由于样品的临床信息名字和实际测序样品并不一定是一一对应的,因此使用 intersect() 函数获取临床信息和样品的交集,作为最后入组的样品信息。
结果显示:分组 group1 共 164 例样品,group2 共 186 例样品。
根据入组信息,对表达矩阵进行子集处理,结果显示,最终一共纳入 350 例样品。
3.3 PCA 分析
同样,对于输入的表达矩阵需要使用 t()函数进行转置,在此,我们使用 prcomp()函数来进行 PCA 分析。
3.4 可视化展示
随后,根据 PCA 分析结果,对其进行可视化展示,绘制 PCA 3D 图形
3.4.1 定义颜色
根据分组信息,对颜色进行定义,在此,分别定义为黄色 yellow 和红色 red。
3.4.2 3d PCA 图
由于是绘制 3D 图形,需要三个维度的变量,提取前个主成分进行绘制对于参数 type ,p 表示点,s 表示球形,l 表示线,h 表示线段接着,将标签添加到图中,注意 col 参数需要与图中保持一致,对于得到的结果,可以自己手动进行调整,得到一个满意的结果。
不过,目前的缺陷是,图形只能保存为 png 格式的图,学会了 PCA 分析后,下面我们来看下重点内
容,差异基因分析。