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

如何用R的dplyr包绘制分组及全局回归曲线

问题描述

我有如下数据集(原文件包含4类生物):

organism    length   intersize
org1           201         38 
org1           334         4221    
org2           428         575  
org2           573         639  
org3           356         700
org3           2414        978 

我已创建dplyr对象,并绘制了length与intersize相关图表。现需计算并绘制按organism分组的回归曲线,同时添加全局回归直线,如何在R中实现?

解决方案

可以用ggplot2搭配dplyr来实现这个需求,具体操作如下:

1. 加载依赖包

先确保安装了所需的包,没有的话先安装:

install.packages(c("dplyr", "ggplot2"))

然后加载包:

library(dplyr)
library(ggplot2)

2. 数据准备(若未整理为tibble)

假设你的原始数据框是df,转换为dplyr的tibble格式:

df <- tibble(
  organism = c("org1", "org1", "org2", "org2", "org3", "org3"),
  length = c(201, 334, 428, 573, 356, 2414),
  intersize = c(38, 4221, 575, 639, 700, 978)
)

3. 绘制分组回归+全局回归直线

用ggplot的geom_smooth()分别实现分组和全局的拟合:

df %>%
  ggplot(aes(x = length, y = intersize, color = organism)) +
  # 绘制散点
  geom_point(size = 2) +
  # 分组线性回归曲线(se=FALSE关闭置信区间,可根据需求调整method为loess等非线性方法)
  geom_smooth(method = "lm", se = FALSE, linewidth = 1) +
  # 全局线性回归直线(取消分组颜色映射,用黑色虚线加粗区分)
  geom_smooth(aes(color = NULL), method = "lm", se = FALSE, 
              color = "black", linewidth = 1.2, linetype = "dashed") +
  # 添加图表标签
  labs(title = "Length与Intersize的回归分析",
       x = "Length",
       y = "Intersize",
       color = "生物类别") +
  # 优化主题样式
  theme_minimal()

额外:提取分组回归的统计结果

如果需要查看每个分组的回归系数、显著性等信息,可以用broom包来整理模型输出:

install.packages("broom")
library(broom)

df %>%
  group_by(organism) %>%
  do(tidy(lm(intersize ~ length, data = .)))

这段代码会输出每个生物类别的回归系数、标准误、t值和p值等统计数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 18:35:24