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

如何在RStudio中用geom_point散点图添加各组均值点并判断组间差异

解决方案

1. 数据重塑(推荐优化步骤)

你的原始数据是宽格式,不利于统一处理分组逻辑,先转成 tidy 长格式,后续绘图和统计都会更高效:

library(tidyr)
library(dplyr)

# 假设df包含Period_1_AB, Period_2_AB, Period_1_BA, Period_2_BA列
df_tidy <- df %>%
  pivot_longer(
    cols = everything(),
    names_to = c("Period", "Group"),
    names_sep = "_",
    values_to = "Value"
  ) %>%
  pivot_wider(
    names_from = Period,
    values_from = Value
  ) %>%
  na.omit() # 清理缺失值

2. 绘制带均值点的散点图

用重塑后的数据统一绘制两组散点,并添加每组的均值点(用醒目样式区分):

library(ggplot2)

ggplot(df_tidy, aes(x = Period_1, y = Period_2, shape = Group)) +
  geom_point(size = 2) + # 用shape区分AB/BA组,和你原设置一致
  geom_abline(slope = 1, intercept = 0, linetype = "dashed") + # 参考线
  # 添加每组均值点
  stat_summary(
    fun = mean,
    geom = "point",
    size = 4,
    color = "red",
    shape = 16
  ) +
  scale_shape_manual(values = c("AB" = 0, "BA" = 2)) + # 匹配你原有的点形状
  theme_bw() # 替换默认主题,比theme_update()更实用

如果不想修改数据格式,也可以直接在原有代码上硬编码添加均值点(代码冗余,不推荐):

ggplot(df , aes(x = Period_1_AB , y = Period_2_AB )) +
  geom_point(pch = 0) +
  geom_point(aes(x = Period_1_BA , y = Period_2_BA), pch = 2) +
  geom_abline() +
  # AB组均值点
  geom_point(
    x = mean(df$Period_1_AB, na.rm = TRUE),
    y = mean(df$Period_2_AB, na.rm = TRUE),
    pch = 16, size = 4, color = "red"
  ) +
  # BA组均值点
  geom_point(
    x = mean(df$Period_1_BA, na.rm = TRUE),
    y = mean(df$Period_2_BA, na.rm = TRUE),
    pch = 16, size = 4, color = "blue"
  ) +
  theme_bw()

3. 组间差异检验

判断两组差异的核心是比较每组的时间变化量(Period2 - Period1),根据实验设计选择对应检验方法:

# 计算两组变化值
df_diff <- df %>%
  mutate(
    AB_diff = Period_2_AB - Period_1_AB,
    BA_diff = Period_2_BA - Period_1_BA
  ) %>%
  select(AB_diff, BA_diff) %>%
  pivot_longer(everything(), names_to = "Group", values_to = "Diff") %>%
  na.omit()

# 先做正态性检验,判断用参数/非参数检验
shapiro.test(df_diff$Diff)

# 若数据正态(p>0.05),独立样本用t检验:
t.test(Diff ~ Group, data = df_diff)
# 若为同一受试者的交叉设计,用配对t检验:
t.test(df$AB_diff, df$BA_diff, paired = TRUE)

# 若数据非正态,用Wilcoxon秩和检验:
wilcox.test(Diff ~ Group, data = df_diff)

内容的提问来源于stack exchange,提问作者Jacob deril raj

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 07:12:48