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

如何在ggplot2中获取回归图梯度值及分性别趋势线相关系数?

解决ggplot2回归图梯度值与分组趋势线系数的问题

嗨,我来帮你搞定这两个问题~

1. 从ggplot2回归图中获取梯度值

ggplot里的geom_smooth(method = lm)本质是对每个分组数据单独拟合线性回归,梯度值就是回归直线的斜率。有两种常用方法可以获取:

方法一:手动对分组数据拟合模型(推荐,更直观)

直接按性别分组,分别拟合线性模型,然后提取斜率:

# 加载dplyr和purrr(未安装的话先运行install.packages(c("dplyr", "purrr")))
library(dplyr)
library(purrr)

# 按Sex分组拟合模型,提取斜率和相关系数
group_stats <- SD_MFC_DATA_LENGTHv6 %>%
  group_by(Sex) %>%
  nest() %>%
  mutate(
    # 对每组数据拟合BMD~Age的线性模型
    lm_model = map(data, ~lm(BMD ~ Age, data = .x)),
    # 提取Age的斜率(梯度值)
    slope = map_dbl(lm_model, ~coef(.x)[["Age"]]),
    # 提取R²(相关系数的平方)
    r_squared = map_dbl(lm_model, ~summary(.x)$r.squared),
    # 计算Pearson相关系数(和趋势线的相关系数一致)
    correlation = map_dbl(data, ~cor(.x$Age, .x$BMD, method = "pearson"))
  ) %>%
  select(Sex, slope, correlation, r_squared)

# 查看结果
print(group_stats)

方法二:从ggplot对象中提取拟合模型

如果你已经画好了图,可以直接从ggplot的构建数据里提取模型:

# 先保存你的ggplot对象
p <- ggplot(SD_MFC_DATA_LENGTHv6, aes(x = Age, y = BMD, group = Sex, color = Sex, shape = Sex)) + 
  geom_point() + 
  geom_smooth(method = lm, aes(fill = Sex))

# 提取平滑层的数据并拟合模型
smooth_data <- ggplot_build(p)$data[[2]]
group_slopes <- smooth_data %>%
  group_by(group) %>%
  summarise(
    slope = coef(lm(y ~ x, data = cur_data()))[["x"]],
    .groups = "drop"
  )

# 这里的group对应Sex的分组(可以对照p$data里的Sex编码来匹配)
print(group_slopes)

2. 分别获取男女两组的趋势线相关系数

趋势线的相关系数其实就是Age和BMD在各组内的Pearson相关系数,上面的代码里已经包含了计算。另外,如果你想从你原来的多元交互模型(包含Sex*Age等交互项)中推导,也可以这样做:

# 直接计算分组的Pearson相关系数
cor_results <- SD_MFC_DATA_LENGTHv6 %>%
  group_by(Sex) %>%
  summarise(
    correlation = cor(Age, BMD, method = "pearson"),
    .groups = "drop"
  )

# 输出结果
print(cor_results)

⚠️ 注意:如果你想让ggplot的趋势线匹配你原来的多元模型(包含Sex + Age + PercentDepth及交互项),需要在geom_smooth里指定完整公式,比如:

ggplot(SD_MFC_DATA_LENGTHv6, aes(x = Age, y = BMD, group = Sex, color = Sex, shape = Sex)) + 
  geom_point() + 
  geom_smooth(method = lm, formula = y ~ x + PercentDepth + Sex:x + Sex:PercentDepth + x:PercentDepth, aes(fill = Sex))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 13:07:27