相关性分析是揭示变量间联系的基础,本文通过大型语言模型(llm),claude和deepseek进行相关性分析并绘制显著性星号标记的热图。
有趣的是,初步观察表明,这两种模型在解决此类问题时展现出鲜明的“个性”:DeepSeek似乎倾向于更深入的沟通与思考来引导用户,而Claude则以其直截了当、快速给出解决方案的风格著称,更节省时间。本文聚焦于“相关性分析与‘星号’标记热图绘制”这一具体场景,旨在对比评测Claude与DeepSeek在任务理解、代码生成、交互体验以及最终实现高效绘制目标上的表现差异,探讨不同AI风格对特定科研任务效率的实际影响。
期望成果展示
图1 图1
图1 使用AI辅助生成并调试的R代码绘制的相关性热图。颜色代表相关系数(例如,橙色表示正相关,紫色表示负相关),颜色的深浅表示相关性强度。单元格中的星号表示基于p值的统计显著性水平(例如, p p p
示例数据的准备
为了演示,我们需要一组适合进行相关性分析的数据。这里我们模拟两组变量(例如,一组代表微生物丰度,另一组代表环境因子;或者简单地使用R内置数据集如mtcars的部分变量)。关键是数据需要是数值型的,并且组织成数据框(data frame)或矩阵(matrix)的格式。
图2 微生物丰度表 图2 微生物丰度表
图3 环境因子表 图3 环境因子表
这份清晰、结构化的数据是后续分析的基础。
● 数据结构概念: 假设我们有两个矩阵 X (n x p) 和 Y (n x q),我们想分析 X 中p个变量与 Y 中q个变量之间的相关性。或者,我们有一个包含所有变量的数据框 df,想分析其中特定几列之间的相关性。
● 示例 (R代码):
# 创建模拟数据 set.seed(123) # 保证结果可重复 matrix1 <- matrix(rnorm(100), nrow = 10, ncol = 10) matrix2 <- matrix(rnorm(100), nrow = 10, ncol = 10) df <- data.frame(matrix1, matrix2)登录后复制
生成相关性分析与绘图代码
分别打开Claude、Deepseek上传范例数据。Claude点击“+”上传文件,Deepseek点击“回形针”上传文件。
图4 Claude 图4 Claude
图5 Deepseek 图5 Deepseek
接下来,我们向Claude、Deepseek分别提出我们的需求。关键在于清晰、具体地描述任务。
输入指令:
使用psych包对附件“OTU.csv”中的微生物丰度OTU和“envs.csv”文件中的环境因子进行pearson相关性分析,提取相关性系数矩阵和p值矩阵,并使用ComplexHeatmap包绘制聚类热图,X和Y轴分别为环境因子和OTU,确保热图的格子的宽和高都为0.7,格子的描边为白色,粗细为1.2,聚类树的高度为1.5cm,热图的配色方案为:#9370DB,white,#FF7F24,热图图例标题为“correlation”,文本的字体大小为7。
Claude经过5秒的思考,给出了分析绘图代码。deepseek经过274秒的深度思考,给出了分析绘图代码。
我们就得到了相关性分析及绘图代码。点击以上代码块右上角的“复制”按钮,将Claude、Deepseek生成的R代码分别复制粘贴到Rstudio的脚本编辑器中运行。
对于本次相关性分析及绘图要求,Claude理解到位,很顺利的运行成功。
图6 Claude生成代码 图6 Claude生成代码
Deepseek的代码运行出错,报错信息如下:
图7 Deepseek生成代码报错 图7 Deepseek生成代码报错
继续向Deepseek输入优化报错代码指令:
绘制热图时出错,请继续优化这部分代码,报错信息如下:错误于Heatmap(matrix = r_matrix, name = "Cor", col = col_fun, rect_gp = gpar(col = "white", : 参数没有用(row_height = unit(0.7, "cm"), column_width = unit(0.7, "cm"))
图8 代码修改优化 图8 代码修改优化
然后复制DeepSeek修改后的代码,粘贴到Rstudio的脚本编辑器中运行,如下图。
图9 Deepseek优化后代码 图9 Deepseek优化后代码
经过调试,Deepseek也能够准确绘制期望图形。
我们还可以在给出代码的基础上继续优化,比如根据P value矩阵,在热图上添加显著性“星号”标记等。
继续输入优化代码指令:
在以上热图绘制代码上继续优化:更改多级显著性标记(如: p : p : p
图10 Claude页面 图10 Claude页面
图11 Deepseek页面 图11 Deepseek页面
最终代码与结果确认
经过调试,Claude和Deepseek都得到了一套能够稳定运行并产生预期结果的R代码。Claude最终优化后的R代码 (示例):
# 加载所需的R包 library(psych) library(ComplexHeatmap) library(circlize) # 用于自定义热图颜色 <h1>读取数据</h1><p>otu_data <- read.csv("OTU.csv", row.names = 1) env_data <- read.csv("envs.csv", row.names = 1)</p><h1>计算相关性</h1><p>cor_matrix <- cor(otu_data, env_data, method = "pearson") p_matrix <- cor.test(otu_data, env_data, method = "pearson")$p.value</p><h1>创建颜色函数</h1><p>col_fun <- colorRamp2(c(-1, 0, 1), c("#9370DB", "white", "#FF7F24"))</p><h1>定义显著性标记</h1><p>sig_matrix <- matrix("", nrow = nrow(cor_matrix), ncol = ncol(cor_matrix)) sig_matrix[p_matrix < 0.001] <- "<em><strong>" sig_matrix[p_matrix < 0.01 & p_matrix >= 0.001] <- "</strong>" sig_matrix[p_matrix < 0.05 & p_matrix >= 0.01] <- "</em>"</p><h1>绘制热图</h1><p>ht <- Heatmap(cor_matrix, name = "correlation", col = col_fun, row_names_gp = gpar(fontsize = 7), column_names_gp = gpar(fontsize = 7), rect_gp = gpar(col = "white", lwd = 1.2), cell_fun = function(j, i, x, y, width, height, fill) { grid.text(sig_matrix[i, j], x, y, gp = gpar(fontsize = 7)) }, cluster_rows = TRUE, cluster_columns = TRUE, row_dend_width = unit(1.5, "cm"), column_dend_height = unit(1.5, "cm"), heatmap_legend_param = list(title = "correlation"))</p><h1>绘制热图</h1><p>draw(ht)登录后复制
Deepseek最终优化后的R代码 (示例):
# 加载必要的包 library(psych) library(ComplexHeatmap) library(circlize)</p><h1>读取数据</h1><p>otu <- read.csv("OTU.csv", row.names = 1) envs <- read.csv("envs.csv", row.names = 1)</p><h1>计算相关性</h1><p>cor_matrix <- cor(otu, envs, method = "pearson") p_matrix <- cor.test(otu, envs, method = "pearson")$p.value</p><h1>创建颜色函数</h1><p>col_fun <- colorRamp2(c(-1, 0, 1), c("#9370DB", "white", "#FF7F24"))</p><h1>定义显著性标记</h1><p>sig_matrix <- matrix("", nrow = nrow(cor_matrix), ncol = ncol(cor_matrix)) sig_matrix[p_matrix < 0.001] <- "<em><strong>" sig_matrix[p_matrix < 0.01 & p_matrix >= 0.001] <- "</strong>" sig_matrix[p_matrix < 0.05 & p_matrix >= 0.01] <- "</em>"</p><h1>绘制热图</h1><p>ht <- Heatmap(cor_matrix, name = "correlation", col = col_fun, row_names_gp = gpar(fontsize = 7), column_names_gp = gpar(fontsize = 7), rect_gp = gpar(col = "white", lwd = 1.2), cell_fun = function(j, i, x, y, width, height, fill) { grid.text(sig_matrix[i, j], x, y, gp = gpar(fontsize = 7)) }, cluster_rows = TRUE, cluster_columns = TRUE, row_dend_width = unit(1.5, "cm"), column_dend_height = unit(1.5, "cm"), heatmap_legend_param = list(title = "correlation"))</p><h1>绘制热图</h1><p>draw(ht)登录后复制
结果核查: 我们仔细检查生成的图,确认颜色、数值(如图显示)、星号标记都符合预期,并且与我们的统计学理解一致。
图12 Claude代码绘图 图12 Claude代码绘图
图13 Deepseek代码绘图 图13 Deepseek代码绘图
通过针对“相关性分析与‘星号’标记热图绘制”任务的对比实践,我们清晰地看到了Claude与DeepSeek在辅助科研编程时的显著特性差异。Claude以其“直达答案”的效率给人留下深刻印象,尤其适合目标明确、流程标准的任务,能迅速提供可用代码框架。相比之下,DeepSeek在需要细致调整或探索性较强的场景中,其“深度思考”与“沟通”能力则显现优势,通过引导式交互可能产生更优化或个性化的方案,尽管耗时可能更长。
因此,“高效”的定义在此变得具有相对性:是追求最短时间获得可行代码(Claude的潜在优势),还是追求在互动中加深理解并获得定制化方案(DeepSeek的潜在优势)?这取决于用户的具体目标与偏好。本次比较的核心启示在于,理解并选择与任务需求、个人工作风格相匹配的AI“助手”,是提升未来研究效率的关键。我们期待AI模型能在速度与深度、直接性与交互性之间找到更优的平衡点,成为科研人员更得力的智能伙伴。
以上就是Claude vs DeepSeek:相关性分析与“星号”标记热图的高效绘制的详细内容,更多请关注楠楠科技社其它相关文章!