2022/4/6 10:06:55 阅读:380 发布者:chichi77
最近有小伙伴问道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还有很多内容,想了解的自行深入学习吧!
如有侵权,请联系本站删除!