职贝云数AI新零售门户
标题:
运用DeepSeek停止PCA、PLS-DA和OPLS-DA分析
[打印本页]
作者:
BLpt8N
时间:
3 小时前
标题:
运用DeepSeek停止PCA、PLS-DA和OPLS-DA分析
Omicsmaster
点击蓝字 关注我们
深度定制 让研讨打破预期
关于如何运用DeepSeek停止PCA的教程之前曾经分享过,比如如何运用DeepSeek+Rstudio停止主成分分析(PCA)?、如何停止主成分分析并绘制PCA组合图?等。
接上去,继续为大家引见如何运用DeepSeek停止另外两种相似的“有监督”多元统计方法,PLS-DA和OPLS-DA。
(, 下载次数: 0)
上传
点击文件名下载附件
(, 下载次数: 0)
上传
点击文件名下载附件
1. 数据预备
(, 下载次数: 0)
上传
点击文件名下载附件
数据的整理方法很简单,如下图。数据来自ropls包,为183名成人尿液样本对应的109种代谢物标准化后的丰度数据。
(, 下载次数: 0)
上传
点击文件名下载附件
第2个需求预备的文件为分组信息文件(用于绘图时添加分组配色),表格的第1列为样本名,表格的第2列为分组称号,如下图,这里有2个分组。留意,确保样本名与上一个表格分歧。
(, 下载次数: 0)
上传
点击文件名下载附件
此外,建议选择保存成逗号或制表符分隔的文本文件,这样就无需再安装额外读入数据的R包啦!
2. 数据分析
首先,打开DeepSeek上传范例数据。将示例数据文件直接复制粘贴到对话框中即可上传文件,当然也可点击“曲别针”图标上传附件。然后,根据本人的需求,尝试输入分析绘图指令。
(, 下载次数: 0)
上传
点击文件名下载附件
初始分析绘图指令参考:
附件“sacurine.csv”文件为标准化后的代谢组丰度数据,第1列为样本称号,而“sample_info.csv”文件为样本对应的分组信息;依次运用R包ropls分别停止PCA、PLS-DA和OPLS-DA分析,并运用ggplot2绘制添加置信椭圆的分组得分图;置信椭圆的填充颜色与描边颜色相反,但透明度为0.3,分组配色方案为:#60bc55,#52bdb9;主题运用theme_bw,去掉panel.grid,在原点处添加程度和垂直的灰色虚线;要求代码依次单独展现3种ggplot2绘图结果,避免用到自定义函数和函数嵌套
经过13秒的深度思索,DeepSeek很快给出了分析绘图代码,如下图。
(, 下载次数: 0)
上传
点击文件名下载附件
(, 下载次数: 0)
上传
点击文件名下载附件
点击代码块右上角的“复制”按钮,将DeepSeek生成的代码复制粘贴到Rstudio的脚本编辑器中停止测试,如下图,留意在读入数据前,将示例数据文件所在文件夹设置为“工作目录”。
(, 下载次数: 0)
上传
点击文件名下载附件
然后在Rstudio中点Run按钮逐行测试代码,我们可以发行到PCA部分没有报错,可正常出图。
(, 下载次数: 0)
上传
点击文件名下载附件
异样,运转PLS-DA分析也没成绩,可正常绘制PLS-DA得分图,如下图。但是,在执行OPLS-DA分析后,提取OPLS-DA得分时还是出错了!
(, 下载次数: 0)
上传
点击文件名下载附件
3. 优化代码
提交报错信息,要求DeepSeek重新优化代码,如下图。
(, 下载次数: 0)
上传
点击文件名下载附件
经过22秒的深度思索,我们得到了优化后分析绘图代码。在Rstudio新建R脚本,复制第2版代码继续停止测试,如下图,DeepSeek根据我们的要求,很快给出了想要的绘图结果!
(, 下载次数: 0)
上传
点击文件名下载附件
最终导出的图片效果如下:
(, 下载次数: 0)
上传
点击文件名下载附件
最终版调整后的代码如下:
# 加载必要的包
library(ropls)
library(ggplot2)
library(dplyr)
# 读取数据
sacurine_data <- read.csv("sacurine.csv", header = TRUE, row.names = 1)
sample_info <- read.csv("sample_info.csv", header = TRUE)
# 确保样本顺序分歧
common_samples <- intersect(rownames(sacurine_data), sample_info$Urine_samples)
sacurine_data <- sacurine_data[common_samples, ]
sample_info <- sample_info[sample_info$Urine_samples %in% common_samples, ]
sample_info <- sample_info[match(common_samples, sample_info$Urine_samples), ]
# 1. PCA分析
pca_result <- opls(sacurine_data, scaleC = "standard")
# 提取PCA得分
pca_scores <- as.data.frame(pca_result@scoreMN[, 1:2])
colnames(pca_scores) <- c("PC1", "PC2")
pca_scores$Urine_samples <- rownames(sacurine_data)
pca_scores <- merge(pca_scores, sample_info, by = "Urine_samples")
# 绘制PCA得分图
pca_plot <- ggplot(pca_scores, aes(x = PC1, y = PC2, color = gender)) +
geom_point(size = 2,alpha = 0.8) +
stat_ellipse(aes(fill = gender), geom = "polygon", alpha = 0.3, level = 0.95) +
scale_color_manual(values = c("M" = "#60bc55", "F" = "#52bdb9")) +
scale_fill_manual(values = c("M" = "#60bc55", "F" = "#52bdb9")) +
geom_hline(yintercept = 0, linetype = "dashed", color = "gray") +
geom_vline(xintercept = 0, linetype = "dashed", color = "gray") +
labs(title = "PCA Score Plot",
x = paste0("PC1 (", round(pca_result@modelDF$R2X[1] * 100, 1), "%)"),
y = paste0("PC2 (", round(pca_result@modelDF$R2X[2] * 100, 1), "%)")) +
theme_bw() +
theme(panel.grid = element_blank(),
legend.position = "right")
print(pca_plot)
# 2. PLS-DA分析
# 将性别转换为数值变量
gender_numeric <- as.numeric(factor(sample_info$gender)) - 1
plsda_result <- opls(sacurine_data, gender_numeric, scaleC = "standard", predI = 2)
# 提取PLS-DA得分
plsda_scores <- as.data.frame(plsda_result@scoreMN[, 1:2])
colnames(plsda_scores) <- c("PC1", "PC2")
plsda_scores$Urine_samples <- rownames(sacurine_data)
plsda_scores <- merge(plsda_scores, sample_info, by = "Urine_samples")
# 绘制PLS-DA得分图
plsda_plot <- ggplot(plsda_scores, aes(x = PC1, y = PC2, color = gender)) +
geom_point(size = 2,alpha = 0.8) +
stat_ellipse(aes(fill = gender), geom = "polygon", alpha = 0.3, level = 0.95) +
scale_color_manual(values = c("M" = "#60bc55", "F" = "#52bdb9")) +
scale_fill_manual(values = c("M" = "#60bc55", "F" = "#52bdb9")) +
geom_hline(yintercept = 0, linetype = "dashed", color = "gray") +
geom_vline(xintercept = 0, linetype = "dashed", color = "gray") +
labs(title = "PLS-DA Score Plot",
x = paste0("Component 1 (", round(plsda_result@modelDF$R2X[1] * 100, 1), "%)"),
y = paste0("Component 2 (", round(plsda_result@modelDF$R2X[2] * 100, 1), "%)")) +
theme_bw() +
theme(panel.grid = element_blank(),
legend.position = "right")
print(plsda_plot)
# 3. OPLS-DA分析
oplsda_result <- opls(sacurine_data, sample_info$gender,
predI = 1, orthoI = NA,
scaleC = "standard",
fig.pdfC = "none", info.txtC = "none")
# 提取OPLS-DA得分
# 预测得分
p_scores <- as.data.frame(oplsda_result@scoreMN)
# 正交得分
o_scores <- as.data.frame(oplsda_result@orthoScoreMN)
# 假如正交得分存在,则运用第一列;否则,创建一个零向量
if (ncol(o_scores) > 0) {
oplsda_scores <- data.frame(
PC1 = p_scores[, 1],
PC2 = o_scores[, 1]
)
} else {
oplsda_scores <- data.frame(
PC1 = p_scores[, 1],
PC2 = rep(0, nrow(p_scores))
)
}
colnames(oplsda_scores) <- c("PC1", "PC2")
oplsda_scores$Urine_samples <- rownames(sacurine_data)
oplsda_scores <- merge(oplsda_scores, sample_info, by = "Urine_samples")
# 绘制OPLS-DA得分图
oplsda_plot <- ggplot(oplsda_scores, aes(x = PC1, y = PC2, color = gender)) +
geom_point(size = 2,alpha = 0.7) +
stat_ellipse(aes(fill = gender), geom = "polygon", alpha = 0.3, level = 0.95) +
scale_color_manual(values = c("M" = "#60bc55", "F" = "#52bdb9")) +
scale_fill_manual(values = c("M" = "#60bc55", "F" = "#52bdb9")) +
geom_hline(yintercept = 0, linetype = "dashed", color = "gray") +
geom_vline(xintercept = 0, linetype = "dashed", color = "gray") +
labs(title = "OPLS-DA Score Plot",
x = "Predictive Component (t_pred)",
y = "Orthogonal Component (t_ortho)") +
theme_bw() +
theme(panel.grid = element_blank(),
legend.position = "right")
print(oplsda_plot)
可见,运用DeepSeek停止PCA、PLS-DA和OPLS-DA分析还是非常给力的!好啦,本次的DeepSeek实操教程就分享到这里啦!
(, 下载次数: 0)
上传
点击文件名下载附件
奥智团队一直坚守 “让每一分科研投入都物超所值” 的核心服务理念,从项目初期需求沟通到实验执行、数据分析,再到最终文章撰写与投稿,全程提供不妨碍对接。针对不同范畴、不同阶段的科研探求,奥智生物提供完善的定制化组学科研服务体系,涵盖单细胞组学、空间组学、转录组学、微生物组学、蛋白代谢组学等研讨方向。欢迎有项目意向的教师联络我们,奥智生物将为您提供深度定制化的处理方案。
长按辨认下方二维码咨询:
(, 下载次数: 0)
上传
点击文件名下载附件
*未经答应,不得以任何方式复制或抄袭本篇文章之部分或全部内容。版权一切,侵权必究。
Omicsmaster
让每一分科研投入
都物超所值
#生信分析#科研绘图#DeepSeek#R言语
欢迎光临 职贝云数AI新零售门户 (https://www.taojin168.com/cloud/)
Powered by Discuz! X3.5