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

如何在拆分数据集上用ggplot绘制残差拟合图并合并为2×2网格

解决方案

1. 合并数据并添加set标识列

直接在map(broom::augment)之后调用bind_rows(.id = "set"),即可将原列表的名称(对应各子集的set编号)作为新列set的值添加到合并后的数据中:

library(datasets)
library(tidyverse)
library(broom)

# 数据整理
ans_long <- anscombe %>%
  pivot_longer(
    everything(),
    names_to = c(".value", "set"),
    names_pattern = "(.)(.)"
  )

# 拟合模型并合并结果,同时添加set标识列
augmented_data <- ans_long %>%
  split(.$set) %>%
  map(~ lm(y ~ x, data = .x)) %>%
  map(augment) %>%
  bind_rows(.id = "set")

合并后的augmented_data会包含所有子集的拟合结果,且通过set列区分不同分组。

2. 绘制2×2网格的残差-拟合值关系图

基于合并后的数据集,使用ggplot结合facet_wrap实现2×2布局的残差图:

ggplot(augmented_data, aes(x = .fitted, y = .resid)) +
  geom_point(size = 2) +
  geom_hline(yintercept = 0, linetype = "dashed", color = "red") +
  facet_wrap(~ set, nrow = 2, ncol = 2) +
  labs(x = "拟合值", y = "残差") +
  theme_bw()

关键说明

  • geom_hline添加残差为0的参考线,便于直观观察残差分布趋势
  • facet_wrap(~ set, nrow = 2, ncol = 2)强制指定2行2列的网格布局
  • theme_bw()使用简洁的黑白主题,提升图表可读性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 02:50:51