You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

已完成Spearman相关性分析,如何绘制匹配Spearman's rho的散点图?

绘制带Spearman rho匹配拟合线的散点图

Spearman相关系数基于变量的秩次计算,因此对应的拟合线需通过变量秩的线性回归得到,而非原始变量的线性回归。以下提供两种R语言实现方案:

方案一:Base R 原生绘图

# 1. 绘制原始变量散点图
plot(db$Var_2, db$Var_4, 
     main = "Var_2 与 Var_4 散点图(带Spearman秩拟合线)",
     xlab = "Var_2", ylab = "Var_4",
     pch = 16, col = "#2c3e50")

# 2. 基于变量秩拟合线性模型
rank_model <- lm(rank(db$Var_4) ~ rank(db$Var_2))

# 3. 生成拟合线的坐标序列
x_seq <- seq(min(db$Var_2), max(db$Var_2), length.out = 100)
# 将秩的预测值转换回原始Var_4的分位数值
y_pred <- quantile(db$Var_4, predict(rank_model, newdata = data.frame(`rank(db$Var_2)` = rank(x_seq))))

# 4. 添加拟合线与rho值标注
lines(x_seq, y_pred, col = "#e74c3c", lwd = 2)
text(x = max(db$Var_2)*0.7, y = max(db$Var_4)*0.9,
     labels = paste("Spearman's rho =", round(-0.01818182, 4)),
     col = "#e74c3c", font = 2)

方案二:ggplot2 绘图(更美观易定制)

先加载ggplot2包:

library(ggplot2)

执行绘图代码:

ggplot(db, aes(x = Var_2, y = Var_4)) +
  geom_point(color = "#2c3e50", size = 3) +
  # 添加基于秩的线性拟合线(se = FALSE 关闭置信区间)
  geom_smooth(method = "lm", formula = y ~ rank(x), 
              color = "#e74c3c", se = FALSE, linewidth = 1.2) +
  # 标注Spearman rho值
  annotate("text", x = quantile(db$Var_2, 0.7), y = quantile(db$Var_4, 0.9),
           label = paste("Spearman's rho =", round(-0.01818182, 4)),
           color = "#e74c3c", fontface = "bold") +
  labs(title = "Var_2 与 Var_4 散点图(带Spearman秩拟合线)",
       x = "Var_2", y = "Var_4") +
  theme_minimal()

关键说明

  • Spearman rho等价于变量秩的Pearson相关系数,因此拟合线必须基于秩次回归,才能匹配已计算的rho值。
  • 若直接对原始变量做线性回归,得到的是对应Pearson相关的拟合线,与Spearman rho无关。

内容的提问来源于stack exchange,提问作者ArTu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 09:43:13