Claude vs DeepSeek:相关性分析与“星号”标记热图的高效绘制
相关性分析是揭示变量间联系的基础,本文通过大型语言模型(LLM),Claude和DeepSeek进行相关性分析并绘制显著性星号标记的热图。
有趣的是,初步观察表明,这两种模型在解决此类问题时展现出鲜明的“个性”:DeepSeek似乎倾向于更深入的沟通与思考来引导用户,而Claude则以其直截了当、快速给出解决方案的风格著称,更节省时间。本文聚焦于“相关性分析与‘星号’标记热图绘制”这一具体场景,旨在对比评测Claude与DeepSeek在任务理解、代码生成、交互体验以及最终实现高效绘制目标上的表现差异,探讨不同AI风格对特定科研任务效率的实际影响。
期望成果展示
图1
图1 使用AI辅助生成并调试的R代码绘制的相关性热图。颜色代表相关系数(例如,橙色表示正相关,紫色表示负相关),颜色的深浅表示相关性强度。单元格中的星号表示基于p值的统计显著性水平(例如,* p < 0.05, ** p < 0.01)。
示例数据的准备
为了演示,我们需要一组适合进行相关性分析的数据。这里我们模拟两组变量(例如,一组代表微生物丰度,另一组代表环境因子;或者简单地使用R内置数据集如mtcars
的部分变量)。关键是数据需要是数值型的,并且组织成数据框(data frame)或矩阵(matrix)的格式。
图2 微生物丰度表
图3 环境因子表
这份清晰、结构化的数据是后续分析的基础。
● 数据结构概念: 假设我们有两个矩阵 X
(n x p) 和 Y
(n x q),我们想分析 X
中p个变量与 Y
中q个变量之间的相关性。或者,我们有一个包含所有变量的数据框 df
,想分析其中特定几列之间的相关性。
● 示例 (R代码):
代码语言:javascript代码运行次数:0运行复制# 创建模拟数据
set.seed(123) # 保证结果可重复
matrix1 <- matrix(rnorm(100*5), nrow=100, ncol=5) # 100个样本, 5个变量
colnames(matrix1) <- paste0("VarX", 1:5)
matrix2 <- matrix(rnorm(100*8), nrow=100, ncol=8) # 100个样本, 8个变量
colnames(matrix2) <- paste0("VarY", 1:8)
# 或者使用内置数据集
# library(dplyr)
# data_subset <- select(mtcars, mpg, cyl, disp, hp, wt, qsec)
生成相关性分析与绘图代码
分别打开Claude、Deepseek上传范例数据。Claude点击“+”上传文件,Deepseek点击“回形针”上传文件。
图4 Claude
图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生成代码
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 代码修改优化
然后复制DeepSeek修改后的代码,粘贴到Rstudio的脚本编辑器中运行,如下图。
图9 Deepseek优化后代码
经过调试,Deepseek也能够准确绘制期望图形。
我们还可以在给出代码的基础上继续优化,比如根据P value矩阵,在热图上添加显著性“星号”标记等。
继续输入优化代码指令:
在以上热图绘制代码上继续优化:更改多级显著性标记(如*: p<0.05, **: p<0.01),标签颜色改为黑色。
图10 Claude页面
图11 Deepseek页面
最终代码与结果确认
经过调试,Claude和Deepseek都得到了一套能够稳定运行并产生预期结果的R代码。
Claude最终优化后的R代码 (示例):
代码语言:javascript代码运行次数:0运行复制# 加载所需的R包
library(psych)
library(ComplexHeatmap)
library(circlize) # 用于自定义热图颜色
# 读取数据
otu_data <- read.csv("OTU.csv", row.names = 1, check.names = FALSE)
env_data <- read.csv("envs.csv", row.names = 1, check.names = FALSE)
# 转置OTU数据使样本在行,OTU在列
otu_data <- t(otu_data)
# 确保两个数据框中的样本顺序一致
# 假设两个文件中的样本ID相同
common_samples <- intersect(rownames(otu_data), rownames(env_data))
otu_data <- otu_data[common_samples, ]
env_data <- env_data[common_samples, ]
# 使用psych包进行相关性分析
cor_result <- corr.test(env_data, otu_data, method = "pearson", adjust = "fdr")
# 提取相关性系数矩阵和p值矩阵
cor_matrix <- cor_result$r# 相关性系数矩阵
p_matrix <- cor_result$p # p值矩阵
# 设置热图颜色
col_fun <- colorRamp2(c(-1, 0, 1), c("#9370DB", "white", "#FF7F24"))
# 创建热图
heatmap <- Heatmap(
cor_matrix,
name = "correlation",
col = col_fun,
rect_gp = gpar(col = "white", lwd = 1.2), # 单元格描边为白色,粗细为1.2
cluster_rows = TRUE, # 对行进行聚类
cluster_columns = TRUE, # 对列进行聚类
show_row_names = TRUE,
show_column_names = TRUE,
row_names_gp = gpar(fontsize = 7), # 行名文本大小为7
column_names_gp = gpar(fontsize = 7), # 列名文本大小为7
width = ncol(cor_matrix) * unit(0.7, "cm"), # 设置单元格宽度为0.7cm
height = nrow(cor_matrix) * unit(0.7, "cm"), # 设置单元格高度为0.7cm
row_dend_width = unit(1.5, "cm"), # 行聚类树高度为1.5cm
column_dend_height = unit(1.5, "cm"), # 列聚类树高度为1.5cm
heatmap_legend_param = list(title_gp = gpar(fontsize = 7),
labels_gp = gpar(fontsize = 7)),
cell_fun = function(j, i, x, y, width, height, fill) {
# 根据p值添加显著性标记
p_value <- p_matrix[i, j]
if (p_value < 0.01) {
grid.text("**", x, y, gp = gpar(fontsize = 10, col = "black"))
} elseif (p_value < 0.05) {
grid.text("*", x, y, gp = gpar(fontsize = 10, col = "black"))
}
}
)
heatmap
# 绘制热图
pdf("OTU_ENV_Correlation_Heatmap.pdf", width = 10, height = 8)
draw(heatmap)
dev.off()
Deepseek最终优化后的R代码 (示例):
代码语言:javascript代码运行次数:0运行复制# 加载必要的包
library(psych)
library(ComplexHeatmap)
library(circlize)
# 读取数据
otu <- read.csv("OTU.csv", row.names = 1)
envs <- read.csv("envs.csv", row.names = 1)
# 转置OTU数据(样本为行,OTU为列)
otu_t <- t(otu)
# 按样本名称排序以对齐数据
otu_t <- otu_t[order(rownames(otu_t)), ]
envs <- envs[order(rownames(envs)), ]
# 验证样本顺序一致
stopifnot(all(rownames(otu_t) == rownames(envs)))
# 计算Pearson相关系数及p值
cor_result <- corr.test(otu_t, envs, method = "pearson")
cor_matrix <- cor_result$r
p_matrix <- cor_result$p
# 转置矩阵,使行=环境因子,列=OTU
cor_matrix_transposed <- t(cor_matrix)
p_matrix_transposed <- t(p_matrix) # 同步转置p值矩阵
# 设置颜色映射
col_fun <- colorRamp2(c(-1, 0, 1), c("#9370DB", "white", "#FF7F24"))
# 定义显著性标记函数
add_sig_symbol <- function(j, i, x, y, width, height, fill) {
p_value <- p_matrix_transposed[i, j]
if (p_value < 0.01) {
grid.text("**", x, y, gp = gpar(fontsize = 10, col = "black")) # 黑色双星号
} elseif (p_value < 0.05) {
grid.text("*", x, y, gp = gpar(fontsize = 10, col = "black")) # 黑色单星号
}
}
# 绘制热图
ht <- Heatmap(
matrix = cor_matrix_transposed,
name = "correlation",
col = col_fun,
rect_gp = gpar(col = "white", lwd = 1.2),
width = unit(ncol(cor_matrix_transposed) * 0.7, "cm"),
height = unit(nrow(cor_matrix_transposed) * 0.7, "cm"),
row_dend_width = unit(1.5, "cm"),
column_dend_height = unit(1.5, "cm"),
row_names_gp = gpar(fontsize = 7),
column_names_gp = gpar(fontsize = 7),
heatmap_legend_param = list(
title_gp = gpar(fontsize = 7),
labels_gp = gpar(fontsize = 7)
),
cell_fun = add_sig_symbol # 添加显著性标记
)
# 显示图形
draw(ht)
pdf("Correlation_Heatmap.pdf", width = 10, height = 8)
draw(ht)
dev.off()
结果核查: 我们仔细检查生成的图,确认颜色、数值(如图显示)、星号标记都符合预期,并且与我们的统计学理解一致。
图12 Claude代码绘图
图13 Deepseek代码绘图
通过针对“相关性分析与‘星号’标记热图绘制”任务的对比实践,我们清晰地看到了Claude与DeepSeek在辅助科研编程时的显著特性差异。Claude以其“直达答案”的效率给人留下深刻印象,尤其适合目标明确、流程标准的任务,能迅速提供可用代码框架。相比之下,DeepSeek在需要细致调整或探索性较强的场景中,其“深度思考”与“沟通”能力则显现优势,通过引导式交互可能产生更优化或个性化的方案,尽管耗时可能更长。
因此,“高效”的定义在此变得具有相对性:是追求最短时间获得可行代码(Claude的潜在优势),还是追求在互动中加深理解并获得定制化方案(DeepSeek的潜在优势)?这取决于用户的具体目标与偏好。本次比较的核心启示在于,理解并选择与任务需求、个人工作风格相匹配的AI“助手”,是提升未来研究效率的关键。我们期待AI模型能在速度与深度、直接性与交互性之间找到更优的平衡点,成为科研人员更得力的智能伙伴。
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。原始发表:2025-04-25,如有侵权请联系 cloudcommunity@tencent 删除优化DeepSeek变量数据调试