opls-da代谢组学 图形详解 Q2Y R2Y

文章指出,仅凭OPLS-DA模型的得分图不能断定两组间有显著差异,需结合R2Y和Q2Y得分以及置换检验结果。模型的可靠性和预测性是关键,过拟合可能导致错误结论。OPLS-DA模型的评估应基于内部和外部验证,确保结果的科学性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

代谢组学是对生物体某一特定组分所包含的所有代谢物进行定性及定量分析,并研究该代谢组在外界干预或疾病生理条件下动态变化规律的一门学科。代谢组学是一门交叉性极强的学科,我们经常讲,代谢组学是用物理学原理的设备,检测化学原理的化合物,然后通过计算统计学,分析生物学机理,最终阐述医学等各种现象,真的是相当的复杂。

亮哥从事代谢组学检测分析工作十几年,从不懂到懂一点,也是有非常漫长的过程。然而最近看一些文章,听一些报告,和客户朋友聊一些天,发现大家对代谢组学研究依然有很多误区。故而总结这十大误区供大家讨论及参考:

误区十:OPLS-DA模型能将两组分开即表示两组之间有差异?

很多人做代谢组学数据分析,当拿到OPLS-DA模型结果时,一看两组之间分的很开(见下图),瞬间就兴奋了,这结果杠杠的。

图1. 两组之间OPLS-DA模型得分图

然而对结果的错误理解,往往是投稿被拒噩梦的源头。

当我们拿到一个分的很开的OPLS-DA模型时,切莫匆忙得出“两组之间有明显差异”的结论。因为这个模型极有可能是一个过拟合的模型。

那么如何才能判断一个OPLS-DA模型的好坏以及如何判断OPLS-DA模型是否过拟合呢?

首先我们要了解一下OPLS-DA模型的一个基本原理。

OPLS-DA(正交矫正偏最小二乘法判别分析)模型是一个有监督的机器学习方法,最早是2002年由Trygg和Wold在PLS算法基础上建立了OPLS得来。

OPLS-DA作为一个有监督的模型,意味着模型使用了两组分类信息作为分类的Y变量,也就是说模型事先知道哪些样品是哪组的,然后开始建模,其第一主成分(也叫预测主成分)呈现的是两组之间的差异信息。其第二主成分呈现的是同组内的差异信息,故而我们看到的图大概率都是能分得很好的。

而模型的两个得分值,R2Y代表了模型的可解释性,也就是说模型中有百分之多少的信息能解释我们事先知道的分类变量Y,R2Y约接近1,说明能解释两组分类的信息越多,也就是我们说的两组之间的差异越大。同时模型自己做了一个自我交叉验证(Cross Validation),也就是我们平常说的七折交叉验证、十折交叉验证、留一法交叉验证等。通过交叉验证模型计算出一个Q2Y,以此来判断模型的可预测性。Q2Y越接近1,说明模型的可预测性越强,也就是我们说的模型越可靠。

如图1模型,其R2Y=0.909,Q2Y=0.672,说明模型的可解释很强,可预测性尚可。根据经验,Q2Y最好不要低于0.4。

为了进一步验证模型的可靠性,除了采用交叉验证这种内部验证的形式之外,我们还可以采用置换检验(permutation test)这种外部验证的方式。

图2. Permutation test(非图1的检验图)

置换检验的图到底该怎么看呢?

我们来看一下官方教程的解释:

总结一下就是两点:

1. 原始的R2Y和Q2Y(最右边的两个点)总是大于左边那些置换后对应的值(左边那些散点)。

2. 看截距,根据经验判断,优秀的模型R2Y的截距不超,0.3-0.4,Q2Y的截距不超过0.05(通常为负值)

在很多的实际的项目中,尤其是临床样品的检测项目,能满足两条斜线的斜率为正,且Q2Y的截距不超过0.05就很好了。所以可以看出图2的置换检验结果also good,但不是很理想,有一定的过拟合,要警惕结果的假阳性。

总结一下,OPLS-DA模型不能只看得分图能不能分开,而是要看R2Y和Q2Y的得分值以及外部检验的结果是否通过。可以说,写文章时如果只秀能分开的得分图,不展示得分值和检验结果,那是赤裸裸的耍流氓。

opl 

### 实现OPLS-DA的R包介绍 为了在R语言中实现OPLS-DA,`ropls`是一个非常受欢迎的选择[^2]。此软件包不仅支持PCA、PLS-DA还特别针对OPLS-DA提供了强大的功能集。 安装并加载`ropls`包可以通过下面的命令完成: ```r install.packages("ropls") library(ropls) ``` ### 数据准备 通常情况下,在执行OPLS-DA之前,需要先准备好数据矩阵以及对应的样本标签向量。假设有一个名为`data_matrix`的数据框包含了所有的特征(列)对于不同样品(行)。另外还需要一个因子类型的对象`sample_labels`来表示各个样品所属类别。 ### 构建OPLS-DA模型 构建OPLS-DA模型可以使用如下代码片段所示的方式来进行: ```r opls_model <- opls(data_matrix, sample_labels, predI = 1, orthoI = NA) # 打印模型摘要信息 print(opls_model) ``` 这里参数`predI=1`指定了预测成分的数量为1;而`orthoI=NA`则让算法自动决定最佳数量的正交成分。 ### 结果解释与可视化 创建得分图(score plot)可以帮助理解各之间的分离情况: ```r plotScores(opls_model, parBkgCex = .8, parSampleCex = 1.5, parXlabS = "t[1]", parYlabS = "to[1]") ``` 此外还可以通过VIP(Variable Importance in Projection)值评估哪些变量对分类贡献最大,并绘制相应的柱状图: ```r vip_values <- vipVn(opls_model) barplot(vip_values, names.arg = colnames(data_matrix), las = 2, main="Variables VIP values", ylab="VIP value", cex.names=.7, cex.axis=.9) abline(h=1, lty=2,col='red') ``` 以上就是利用R语言中的`ropls`库进行OPLS-DA分析的一个简单教程[^4]。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

生信小博士

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值