审稿人:你的文章很好,用OPLSDA就对了

文摘   2024-10-02 08:30   爱尔兰  

在数据分析中,OPLS-DA(正交偏最小二乘判别分析)是一种强大的多变量分析工具,常用于从高维数据中提取分类信息,特别是在代谢组学、基因组学等领域。今天的更新将带你一步步使用R语言进行OPLS-DA分析,详细介绍理论知识,并通过R自带数据集进行实战演示。


一、OPLS-DA理论简介

PLS-DA(偏最小二乘判别分析) 是一种线性回归模型,它将高维自变量(X矩阵)映射到低维空间,以最大化解释响应变量(Y矩阵)。PLS-DA的优势在于它能处理自变量与响应变量间的多重共线性问题。

OPLS-DA 是 PLS-DA 的扩展版本,区别在于它通过分离与响应变量无关的噪声信息,将自变量X中的正交成分(无关信息)与预测成分(与Y相关的信息)分开。这使得OPLS-DA模型的可解释性更强,并能够更直观地揭示数据中的主要趋势和结构。


二、R语言中进行OPLS-DA分析

接下来我们将使用R语言中的ropls包,对iris数据集进行OPLS-DA分析。iris数据集包含四个自变量(萼片和花瓣的长度和宽度)和分类标签(Species,即鸢尾花的种类)。我们将简化分类任务为二分类问题——将setosa与其他种类进行区分。

1. 安装与加载必要R包
# 如果尚未安装,请安装ropls包

# 加载ropls包
library(ropls)
2. 数据准备

首先,我们对iris数据集进行处理,将Species简化为二分类(setosa 和 其他)。

# 加载数据集
data(iris)

# 仅保留setosa与非-setosa类别,简化为二分类
iris_binary <- iris
iris_binary$Species <- ifelse(iris$Species == "setosa", "setosa", "other")

# 准备自变量X和因变量Y
X_matrix <- as.matrix(iris_binary[, 1:4]) # 前四列为自变量
Y_vector <- iris_binary$Species # 第五列为因变量
3. 构建OPLS-DA模型

我们可以使用opls函数来构建一个包含1个预测成分和1个正交成分的OPLS-DA模型。

# 构建OPLS-DA模型
model <- opls(X_matrix, Y_vector, predI = 1, orthoI = 1)
## OPLS-DA
## 150 samples x 4 variables and 1 response
## standard scaling of predictors and response(s)
## R2X(cum) R2Y(cum) Q2(cum) RMSEE pre ort pR2Y pQ2
## Total 0.957 0.896 0.895 0.153 1 1 0.05 0.05

4. 模型可视化

构建模型后,可以绘制评分图(score plot)来查看不同类别在潜在变量空间中的分布。

# 绘制评分图
plot(model, typeVc = "x-score")

该图显示了不同分类标签在投影到低维空间时的分布,方便我们直观地观察类别间的分离情况。

5. 模型评价

模型的好坏可以通过R2YQ2两个指标进行评价: 

R2Y 表示模型对Y的解释力; 

Q2 表示模型的预测能力。

# 提取R2Y和Q2的值
R2Y <- model@summaryDF["R2Y(cum)", 1]
Q2 <- model@summaryDF["Q2(cum)", 1]

# 输出R2Y和Q2
cat("R2Y (解释力):", R2Y, "\n")
## R2Y (解释力): NA
cat("Q2 (预测能力):", Q2, "\n")
## Q2 (预测能力): NA
6. 交叉验证

为了进一步验证模型的稳健性,我们可以进行交叉验证。这里我们使用7折交叉验证来检验模型的稳健性。

# 7折交叉验证
cv_model <- opls(X_matrix, Y_vector, crossvalI = 7)
## PLS-DA
## 150 samples x 4 variables and 1 response
## standard scaling of predictors and response(s)
## R2X(cum) R2Y(cum) Q2(cum) RMSEE pre ort pR2Y pQ2
## Total 0.957 0.896 0.894 0.153 2 0 0.05 0.05

7. 置换检验

为了检查模型是否存在过拟合问题,可以通过置换检验来评估模型。通过随机置换Y变量,我们可以查看模型的Q2值是否显著高于置换检验得到的Q2值。

# 100次置换检验
perm_model <- opls(X_matrix, Y_vector, permI = 100)
## PLS-DA
## 150 samples x 4 variables and 1 response
## standard scaling of predictors and response(s)
## R2X(cum) R2Y(cum) Q2(cum) RMSEE pre ort pR2Y pQ2
## Total 0.957 0.896 0.894 0.153 2 0 0.01 0.01


三、总结

通过以上步骤,我们使用ropls包对鸢尾花数据集进行了OPLS-DA分析,完成了从数据准备、模型构建到模型评价的完整流程。希望能帮助你在自己的科研工作中更好地应用该方法。


(推荐阅读)

科研代码 | 机器学习

ANOVA 描述性统计分析   主成分分析PCA 判别分析 PLSDA LDA KNN 

异常值 贝叶斯统计 调用数据集 模型评价之准确率 Scikit-learn 数据预处理 API 

无监督机器学习 SVM 监督式机器学习  特征选择 ANN SQL 数据转换  特征选择  冗余分析  数据导入   限制性立方样条时间序列分析 数据预处理  随机森林(RF)  

正态分布检测 傅里叶变换 重塑(Reshape)

科研代码 | 数据可视化

散点图  相关性热    柱状图    盒须图 小提琴图 R画地图 ggplot2 雷达 圆形柱状图 

文氏图 显著性差异 条形图 R配色 热图显著性标记 箱线图  XGBoost建模  3D散点图 

图片合并  桑葚图  坐标轴文字排序          

科研代码 | 生产力工具

Pycharm    Rstudio   Dataspell  VScode 四大数据分析软  Copilot R语言教材  基础统计学  R语言入门  SPSS Python编辑器全比较   大名鼎鼎的文献管理软件

科研代码 | 世间万物

Peer pressure  走出舒适区  小老板保命守则 缺的是数据科学家 卷王之王 开放获取   

创新性  不能“卷”的海外博士  英语不好 放弃统计显著性  

谁在用盗版软件 读博心态别崩

感谢关注!

科研代码
专注R和Python的数据分析。
 最新文章