最近有小伙伴问道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还有很多内容,想了解的自行深入学习吧!
|