OPLS-DA在R语言中的实现
主成分分析(Principal Component Analysis,PCA)是一种无监督降维方法,能够有效对高维数据进行处理。但PCA对相关性较小的变量不敏感,而PLS-DA(Partial Least Squares-Discriminant Analysis,偏最小二乘判别分析)能够有效解决这个问题。而OPLS-DA(正交偏最小二乘判别分析)结合了正交信号和PLS-DA来筛选差异变量。

图片来自:https://www.r-bloggers.com/2013/07/orthogonal-partial-least-squares-opls-in-r/
安装和加载包
1 |
|
示例数据
1 |
|
这个数据集是不同年龄、性别和BMI的183个人的尿液中109种代谢物的浓度差异$^{[1]}$。下面的分析主要以性别为变量来研究不同性别人群尿液种代谢物的差异。下面的分析主要包含PCA、PLS-DA和OPLS-DA。
PCA分析
1 |
|

可以看到的是如果用PCA的话,不同性别的人群是混在一起的。
PLS-DA
1 |
|

和PCA相比,PLS-DA的效果相对较好。PLS-DA分析的目的是找到差异变量(本例中的109种代谢物的某几种)。因此,需要找到VIP值大于1的变量(代谢物):
1 |
|
下面这些物质就是差异代谢物(VIP值大于等于1):
1 |
|
将它们的VIP值得进行可视化(某些代谢物名称太长,进行转换表示):

OPLS-DA分析
1 |
|

可以看到的是OPLS-DA的效果比PLS-DA更好一些。
同样进行差异代谢物筛选:
1 |
|
下面的的是差异代谢物:
1 |
|

模型训练与预测
这些降维的方法都属于机器学习算法,那就可以对模型进行训练,并用这个模型去预测未知的数据。
模型训练很简单:
1 |
|
1 |
|
可以看到使用了92个样本进行训练。
先看看模型在训练集上的准确率:
1 |
|
1 |
|
看模型在训练集上的准确率是没有什么意义的,要是在训练集的表现都不好,那模型一定不好。那看看模型在未知数据上的预测准确率吧:
1 |
|
1 |
|
这个准确率已经很棒了。
差异代谢物其他筛选方法
除了用(O)PLS-DA中的VIP值对代谢物进行筛选,还可以用别的方法进行筛选,如log2FC
等。通常是绘制火山图。
1 |
|

可能是这个例子中的代谢物太少了,导致算完以后都没有差异代谢物了。
参考文献
[1] Thévenot E A, Roux A, Xu Y, et al. Analysis of the human adult urinary metabolome variations with age, body mass index, and gender by implementing a comprehensive workflow for univariate and OPLS statistical analyses[J]. Journal of proteome research, 2015, 14(8): 3322-3335.
交流请联系:
💌lixiang117423@gmail.com
💌lixiang117423@foxmail.com