分享

PLS-DA代替PCA试试降维效果?

 TS的美梦 2022-04-02

最近有小伙伴问道PLS-DA(Partial least squares Discriminant Analysis,偏最小二乘判别分析),一种组学分析中常用的多变量分析方法,具体的原理就不多说了,主要也怕数学的内容说错了误导人,我们就看看R怎么分析和可视化即可,详细的原理可翻阅《多元统计学》偏最小二乘判别分析部分学习。

其实,如果不做代谢组学或者看这方面的文章,一般学点组学分析的人还真不容易看到PLS-DA,因为常见组学(转录组、蛋白组),文章中一般使用PCA分析降维(转录组不求人系列(三):PCA分析及CNS级别作图),代谢组学使用较多。如果你的样品之间相关性不强,这时候主成分分析降维的效果其实不太好,就可以试试这种有监督的学习方法---PLS-DA来代替PCA。

首先我们构建一下数据(随便找的,没有意义),行名为基因,列名为样本。

我们做下PCA看看效果。

setwd("F:/生物信息学/PLS-DA")A <- read.csv("pl.csv",header = T,row.names = 1)data <- t(A)data.pca <- prcomp(data)library(factoextra)group=c(rep("MD",11),rep("MA",12))fviz_pca_ind(data.pca,             col.ind=group,             mean.point=F,             addEllipses = T,              legend.title="Groups",             palette = c("#CC3333", "#339999"))+   theme(panel.border = element_rect(fill=NA,color="black", size=1, linetype="solid"))

可以看到主成分是无法分开的。我们接下来试试PLS-DA分析看看效果。先使用mixOmics包做一下,可以进行分析和可视化,过程很简单。数据和分组同上面PCA。可以看到结果样本分组差异很明显,以后蛋白组或者转录组数据都可应用。

BiocManager::install("mixOmics")library(mixOmics)
pls_ana <- plsda(data, group, ncomp = 2)
plotIndiv(pls_ana, comp = c(1,2), group = group, ind.names = TRUE, ellipse = TRUE, legend = TRUE, style = 'ggplot2', pch =16, cex =5)

还可计算背景面积可视化预测区域。

background = background.predict(pls_ana, comp.predicted=2, dist = "max.dist") plotIndiv(pls_ana, comp = 1:2,          group = group, ind.names = T,          legend = TRUE,  background = background)

其他的R包ropls包也可进行PLS-DA分析。结果与mixOmics包一样,不过可视化更加方便,可视化结果更多。

BiocManager::install("ropls")library(ropls)pls-ana <- opls(x = data, y = group, orthoI = 0)pls-ana

还可以获取更多信息,例如查看查看差异比较大的表达基因。

par(mfrow = c(1, 2))plot(pls-ana, typeVc = 'x-score', parAsColFcVn = group)plot(pls-ana, typeVc = 'x-loading')

以上就是非常粗略的说了下PLS-DA的做法和可视化差异性了,其实PLS-DA还有很多内容,想了解的自行深入学习吧!

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多