在数据分析中,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. 模型评价
模型的好坏可以通过R2Y
和Q2
两个指标进行评价:
- 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)
散点图 相关性热图 柱状图 盒须图 小提琴图 R画地图 ggplot2 雷达图 圆形柱状图
文氏图 显著性差异 条形图 R配色 热图显著性标记 箱线图 XGBoost建模 3D散点图
科研代码 | 生产力工具
Pycharm Rstudio Dataspell VScode 四大数据分析软件 Copilot R语言教材 基础统计学 R语言入门 SPSS Python编辑器全比较 大名鼎鼎的文献管理软件
科研代码 | 世间万物
Peer pressure 走出舒适区 小老板保命守则 缺的是数据科学家 卷王之王 开放获取