PLS-DA(Partial Least Squares Discriminant Analysis),即偏最小二乘法判别分析,是多变量数据分析技术中的判别分析法,经常用来处理分类和判别问题。通过对主成分适当的旋转,PLS-DA可以有效的对组间观察值进行区分,并且能够找到导致组间区别的影响变量。PLS-DA采用了经典的偏最小二乘回归模型,其响应变量是一组反应统计单元间类别关系的分类信息,是一种有监督的判别分析方法。因无监督的分析方法(PCA)对所有样本不加以区分,即每个样本对模型有着同样的贡献,因此,当样本的组间差异较大,而组内差异较小时,无监督分析方法可以明显区分组间差异;而当样本的组间差异不明晰,而组内差异较大时,无监督分析方法难以发现和区分组间差异。另外,如果组间的差异较小,各组的样本量相差较大,样本量大的那组将会主导模型。有监督的分析(PLS-DA)能够很好的解决无监督分析中遇到的这些问题。
BiocManager::install('ropls')
library(ropls) data(sacurine)
#监督分组以性别为例,orthoI = 0 时执行 PLS-DA sacurine.plsda <- opls(x = sacurine$dataMatrix, y = sacurine$sampleMetadata[, 'gender'], orthoI = 0) sacurine.plsda
names(attributes(sacurine.plsda)) #查看包含信息 head(sacurine.plsda@scoreMN) #例如,样本在 PLS-DA 轴上的位置 head(sacurine.plsda@loadingMN) #例如,代谢物在 PLS-DA 轴上的位置
par(mfrow = c(1, 2)) plot(sacurine.plsda, typeVc = 'x-score', parAsColFcVn = sacurine$sampleMetadata[, 'gender']) plot(sacurine.plsda, typeVc = 'x-loading')
library(ggplot2) plot1 = sacurine.plsda@scoreMN[,1:2] plot1 = data.frame(plot1) # 解释率 x_lab <- sacurine.plsda@modelDF[1, "R2X"] * 100 y_lab <- sacurine.plsda@modelDF[2, "R2X"] * 100 head(plot1) p = ggplot(plot1, aes(p1, p2, color = sacurine$sampleMetadata[, 'gender'], shape = sacurine$sampleMetadata[, 'gender']))+ # 选择X轴Y轴并映射颜色和形状 geom_point(size = 3)+ # 画散点图并设置大小 geom_hline(yintercept = 0,linetype="dashed") + # 添加横线 geom_vline(xintercept = 0,linetype="dashed") + # 添加竖线 scale_color_discrete()+ # 设置颜色,此处为Integrative Genomics Viewer配色 theme_bw() + # 加上边框 stat_ellipse(level = 0.95)+ # 添加置信椭圆 # 自动提取主成分解释度进行绘图 labs(x = paste('Component1(', x_lab,'%)', sep = ''), y = paste('Component2(', y_lab,'%)', sep = '')) + theme(legend.position = c(0.85,0.85)) # 设置图例位置,此处为相对位置 p
vipVn <- getVipVn(sacurine.plsda) vipVn_select <- vipVn[vipVn > 1] #这里也通过 VIP>1 筛选下 head(vipVn_select) vipVn_select <- cbind(sacurine$variableMetadata[names(vipVn_select), ], vipVn_select) names(vipVn_select)[4] <- 'VIP' vipVn_select <- vipVn_select[order(vipVn_select$VIP, decreasing = TRUE), ] head(vipVn_select) #带注释的代谢物,VIP>1 筛选后,并按 VIP 降序排序 plot(vipVn_select)
/TJPROJ5/META_ASS/16s/mengyanliang/work/Process_optimization/2022_Q3/PLS-DA_ropls/Ropls.R