单组学的多变量分析|1.PCA和PLS-DA

简介: 单组学的多变量分析|1.PCA和PLS-DA

Part1PCA和PLS-DA


我们使用SRBCT数据集来说明PCA和sPLS-DA。


安装并加载mixOmics包

BiocManager::install('mixOmics')
library(mixOmics)

1示例数据集


示例数据是mixOmics包自带的经过标准化处理过的可以直接使用的数据,来自小圆蓝细胞肿瘤(SRBCT)。数据集包括63个样本的2308个基因的表达水平。样本分为四类:Burkitt淋巴瘤(BL) 8例,尤文氏肉瘤(EWS) 23例,成神经细胞瘤(NB) 12例,横纹肌肉瘤(RMS) 20例。


srbct数据集包含以下内容:


$gene:一个63行2308列的数据框。63个样本中2308个基因的表达水平。


$class:包含每个个体的类肿瘤的分类(共4个类)。


$gene.name:一个包含2308行和2列的数据框,包含关于基因的进一步信息。

data(srbct)
X = srbct$gene  #the gene expression data
dim(X)
X[1:6,1:10]
> dim(X)
[1]   63 2308
> X[1:6,1:10]
           g1     g2     g3     g4     g5     g6     g7     g8     g9    g10
EWS.T1 3.2025 0.0681 1.0460 0.1243 0.4941 3.1207 3.7106 1.8416 1.2607 2.9001
EWS.T2 1.6547 0.0710 1.0409 0.0520 0.2045 2.1609 2.4452 1.1473 0.7371 1.9989
EWS.T3 3.2779 0.1160 0.8926 0.1014 0.2818 1.9773 3.2590 1.4106 0.9548 2.0775
EWS.T4 1.0060 0.1906 0.4302 0.1035 0.2984 1.6804 5.8901 0.2958 0.7381 1.6610
EWS.T6 2.7098 0.2367 0.3693 0.2190 0.3711 1.7800 3.2376 0.6769 0.8546 0.6808
EWS.T7 2.0588 0.0823 0.9021 0.1288 0.3961 1.7199 2.1729 1.5609 0.6581 1.5038
summary(srbct$class)


> summary(srbct$class)
EWS  BL  NB RMS 
 23   8  12  20

2主成分分析(PCA)


对基因表达数据进行初步的PCA分析,可以首次探索数据变异的主要来源。PCA是一种无监督分析,没有提供关于肿瘤类别的信息。为了理解所解释的变化量,我们将主成分数目(ncomp = 10)设置为一个相当大的数字。在PCA中,centering(中心化)使所有基因具有相同的零平均值,利于关注样本之间的差异。Scaling(缩放)的目的是在分析中给所有基因相似的权重,因为高方差的基因会被认为在PCA中有影响,但不一定有生物学相关性。

pca.srbct = pca(X, ncomp = 10, center = TRUE, scale = TRUE)
# 输出每个主成分可解释方差(变异)
plot(pca.srbct)

image.png


上面的柱状图显示了两个成分足以解释来自数据的大部分或信息)。


在下面的样本图中,样本用前两个主成分表示,并根据肿瘤类型着色。这里我们观察到变异的主要来源可能不能用肿瘤类型来解释。注意,由于PCA是无监督的,为了可视化目的,我们只考虑PCA之后的样本类型信息。

plotIndiv(pca.srbct, group = srbct$class, ind.names = FALSE, 
          legend = TRUE, title = 'PCA on SRBCT')

image.png

3PLS-DA 分析


对于判别分析,我们设置因子Y来表示每个样本的类别隶属度。在PLS-DA过程中,将Y因子转化为一个虚拟矩阵。

Y = srbct$class 
summary(Y)        #结果分类
> summary(Y)      
EWS  BL  NB RMS 
 23   8  12  20

PLS-DA模型采用10个成分来评估最终模型所需的性能和成分数量(见下文)。


##样品图:将样本投影到前两个成分所形成的子空间中。

srbct.plsda <- plsda(X, Y, ncomp = 10) 
plotIndiv(srbct.plsda , comp = 1:2,
          group = srbct$class, ind.names = FALSE, 
          ellipse = TRUE, legend = TRUE, title = 'PLSDA on SRBCT')

image.png


image-20210520213532197

从样本图中可以看出,与无监督的PCA样本图相比,四种肿瘤类型明显分离。绘制每个类的置信椭圆以突出区分的强度(置信水平默认设置为95%,参数ellipse.level)。


在覆盖样本图之前,可以通过计算背景面来可视化预测区域。

# with background
background = background.predict(srbct.plsda, comp.predicted=2, dist = "max.dist") 
#optional: xlim = c(-40,40), ylim = c(-30,30))
plotIndiv(srbct.plsda, comp = 1:2,
          group = srbct$class, ind.names = FALSE, title = "Maximum distance",
          legend = TRUE,  background = background)


image.png


4性能


PLS-DA模型的分类性能通过重复10次的5折交叉验证来评估。重复次数对于确保分类错误率的良好估计是必要的(因为cv -fold是以随机方式确定的)。从性能结果中我们可以决定选择最终的PLS模型的成分数量。

set.seed(2543) # 设置种子,便于重复
perf.plsda.srbct <- perf(srbct.plsda, validation = "Mfold", folds = 5, 
                         progressBar = FALSE, auc = TRUE, nrepeat = 10)
# perf.plsda.srbct$error.rate  错误率
plot(perf.plsda.srbct, col = color.mixo(5:7), sd = TRUE, legend.position = "horizontal")

image.png


从性能图中,可以看出总体错误率和平衡错误率(BER)相似,从1个成分急剧下降到3个成分。6个成分后错误率趋于稳定。ncomp = 6时,BER和最大距离足以实现良好的性能(0.06错误率)。

auc.plsda = auroc(srbct.plsda, roc.comp = 6)

image.png


5参考


sPLSDA: SRBCT | mixOmics


6相关文章


主成分分析(PCA)及其可视化的基础指南


相关文章
|
数据挖掘 数据格式
跟着Cell学作图 | 6.时间序列分析(Mfuzz包)
这篇2020年发表在cell上关于新冠的组学文章里面有大量的生信内容。今天带大家复现其中的一个Supplemental Figure:时间序列分析图。
1595 0
跟着Cell学作图 | 6.时间序列分析(Mfuzz包)
|
8月前
|
人工智能 算法 安全
如何构建Tb级DDoS攻击防御体系实现业务零中断?
本文基于NIST与MITRE框架,详解构建Tb级DDoS防御体系的六大核心技术模块,涵盖分布式清洗、智能调度、全栈高可用架构等,助力企业实现业务零中断。
623 0
|
机器学习/深度学习 人工智能 分布式计算
使用PAI+LLaMA Factory 微调 Qwen2-VL 模型,搭建文旅领域知识问答机器人
本次教程介绍了如何使用 PAI ×LLaMA Factory 框架,基于全参方法微调 Qwen2-VL 模型,使其能够进行文旅领域知识问答,同时通过人工测试验证了微调的效果。
使用PAI+LLaMA Factory 微调 Qwen2-VL 模型,搭建文旅领域知识问答机器人
|
监控 API 索引
Elasticsearch集群使用 _cluster/health API
Elasticsearch集群使用 _cluster/health API
735 2
有哪些CAD软件支持(国产操作系统)麒麟操作系统
CAD梦想画图是由成都梦想凯德科技自主研发的轻量级CAD软件,专为国产操作系统如麒麟、统信设计。支持AutoCAD所有版本的dwg二维图纸,具备精准显示、测量、标注、绘图修改、文字查找及批注等功能,操作流畅,无需安装字体。用户可通过应用商店轻松安装,适合新手和专业人士使用。
|
SQL 算法 关系型数据库
Sharding-Proxy代理Mysql服务
Apache shardingSphere Sharding-proxy落地实战
534 86
|
Web App开发 存储 JavaScript
写一个Chrome浏览器插件(manifest v3)
写一个Chrome浏览器插件(manifest v3)
750 0
|
NoSQL 关系型数据库 应用服务中间件
Linux服务器软件安装教程及项目部署【建议收藏】
Linux服务器软件安装教程及项目部署【建议收藏】
|
消息中间件 Java RocketMQ
Springboot 集成 Rocketmq 消费者|学习笔记
快速学习 Springboot 集成 Rocketmq 消费者
2108 1
Springboot 集成 Rocketmq 消费者|学习笔记
|
前端开发 JavaScript API
React使用Electron开发桌面端
React是一个流行的JavaScript库,用于构建Web应用程序。结合Electron框架,可以轻松地将React应用程序打包为桌面应用程序。以下是使用React和Electron开发桌面应用程序的步骤:
React使用Electron开发桌面端