单组学的多变量分析| 2.稀疏偏最小二乘判别分析(sPLS-DA)

简介: 单组学的多变量分析| 2.稀疏偏最小二乘判别分析(sPLS-DA)

Part2稀疏偏最小二乘判别分析(sPLS-DA)


sPLS-DA(Sparse PLS discriminant analysis)是PLS-DA的一种特殊情况,同时包含变量选择和分类的过程。sPLS-DA允许变量选择,可以选择数据中最具预测性或判别性的特征,并帮助对样本进行分类。


PLS-DA模型建立在X中的所有基因上,其中许多可能无法提供信息来表征不同的类别。sPLS-DA分析的目的是识别出最能区分这两类的一小部分基因。


1sPLS-DA调参


可以使用函数tune.splsda()评估选择的参数,包括sPLS-DA维度数量(ncomp)以及要在X数据集中选择的变量数量(keepX)。根据PLS-DA性能评估的建议,将ncomp的最大值设置为6。我们选择重复10次的5倍交叉验证(fold = 5),并指定一个预测距离(最大距离)来预测所有CV运行中的类别隶属度。

# 预定义将在每个 comp 中测试的可能的 keepX 值,
list.keepX <- c(1:10,  seq(20, 300, 10))
tune.splsda.srbct <- tune.splsda(X, Y, ncomp = 6, validation = 'Mfold', folds = 5, 
                           progressBar = TRUE, dist = 'max.dist', measure = "BER",
                          test.keepX = list.keepX, nrepeat = 10, cpus = 2)
error <- tune.splsda.srbct$error.rate  #keepX 中每个 comp的错误率
ncomp <- tune.splsda.srbct$choice.ncomp$ncomp # 最佳的 comp 数量
ncomp
> ncomp
[1] 3
select.keepX <- tune.splsda.srbct$choice.keepX[1:ncomp]  # 每个 comp 中最佳的 keepX 值
select.keepX
> select.keepX
comp1 comp2 comp3 
    6   300    50

对于tune函数中指定的所有comp,以最后一个comp为条件的每个comp的分类错误率如下所示。

plot(tune.splsda.srbct, col = color.jet(6))



sPLS-DA中包含的成分越多,分类错误率越低(预测精度越低越好)。将使得每个维度达到最佳性能的最优变量数表示为菱形。3个维度足以使我们最终的sPLS-DA模型达到最佳性能。


2最终模型和样本表示


最终模型包括3个维度和前3个维度上的92830个选定变量

splsda.srbct <- splsda(X, Y, ncomp = ncomp, keepX = select.keepX)

在前三个维度上的样本图(见下图)显示,第一个维度很好地分离了BL肿瘤,而第二个维度将EWB与NB和RMS区分开来。

plotIndiv(splsda.srbct, comp = c(1,2),
          group = srbct$class, ind.names = FALSE, 
          ellipse = TRUE, legend = TRUE,
          title = 'sPLS-DA on SRBCT, comp 1 & 2')


第三个维度的加入则进一步区分了NB和RMS:

plotIndiv(splsda.srbct, comp = c(1,3),
          group = srbct$class, ind.names = FALSE, 
          ellipse = TRUE, legend = TRUE,
          title = 'sPLS-DA on SRBCT, comp 1 & 3')

image.png


利用函数auroc也可以得到一个AUC图,用于PLS-DA分析。


第一个AUROC仅包括2个维度:

auc.splsda = auroc(splsda.srbct, roc.comp = 2)



AUROC包括所有维度。ROC和AUC标准对于我们方法的性能评价并不是特别有见地,但可以作为统计分析的补充。

auc.splsda = auroc(splsda.srbct, roc.comp = ncomp)

image.png

3参考

  1. PLS-DA | mixOmics

4相关文章

相关文章
|
6月前
【视频】什么是非线性模型与R语言多项式回归、局部平滑样条、 广义相加GAM分析工资数据|数据分享(上)
【视频】什么是非线性模型与R语言多项式回归、局部平滑样条、 广义相加GAM分析工资数据|数据分享
|
6月前
|
算法 vr&ar Python
PYTHON用时变马尔可夫区制转换(MRS)自回归模型分析经济时间序列
PYTHON用时变马尔可夫区制转换(MRS)自回归模型分析经济时间序列
|
6月前
|
Python
Python随机波动性SV模型:贝叶斯推断马尔可夫链蒙特卡洛MCMC分析英镑/美元汇率时间序列数据|数据分享
Python随机波动性SV模型:贝叶斯推断马尔可夫链蒙特卡洛MCMC分析英镑/美元汇率时间序列数据|数据分享
|
6月前
【视频】什么是非线性模型与R语言多项式回归、局部平滑样条、 广义相加GAM分析工资数据|数据分享(下)
【视频】什么是非线性模型与R语言多项式回归、局部平滑样条、 广义相加GAM分析工资数据|数据分享
|
6月前
|
数据可视化
R语言非参数模型厘定保险费率:局部回归、广义相加模型GAM、样条回归
R语言非参数模型厘定保险费率:局部回归、广义相加模型GAM、样条回归
|
6月前
|
算法 vr&ar
时变马尔可夫区制转换MRS自回归模型分析经济时间序列
时变马尔可夫区制转换MRS自回归模型分析经济时间序列
|
6月前
|
存储 算法 前端开发
R语言中贝叶斯网络(BN)、动态贝叶斯网络、线性模型分析错颌畸形数据
R语言中贝叶斯网络(BN)、动态贝叶斯网络、线性模型分析错颌畸形数据
|
6月前
样条曲线分段线性回归模型piecewise regression估计个股beta值分析收益率数据
样条曲线分段线性回归模型piecewise regression估计个股beta值分析收益率数据
|
6月前
|
机器学习/深度学习 算法
R语言非参数方法:使用核回归平滑估计和K-NN(K近邻算法)分类预测心脏病数据
R语言非参数方法:使用核回归平滑估计和K-NN(K近邻算法)分类预测心脏病数据
|
机器学习/深度学习 存储 传感器
分类预测 | MATLAB实现PSO-BP多特征分类预测(粒子群优化BP神经网络分类预测,含混淆矩阵图、分类图)
分类预测 | MATLAB实现PSO-BP多特征分类预测(粒子群优化BP神经网络分类预测,含混淆矩阵图、分类图)