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

ggplot中单侧t检验设置未生效,仍显示双侧结果的问题

问题原因与解决方案
  • 核心问题:stat_compare_means本身不直接接收alternative参数,这个参数是底层t.test函数的参数,必须通过method.args以列表形式传递给检验函数,直接作为顶层参数传入不会生效。
  • 额外注意:你代码中的fillColors和outlineColors未定义,需要补充颜色向量才能正常运行。

修改后的完整代码

library("ggplot2")      
library("dplyr")        
library("ggpubr")
library("tibble")

lesionData <- tribble(
  ~Tag, ~Group, ~Size, ~`Iba-1_signal_AVERAGE_INSIDE`, ~`Outside lesion`, ~`Iba-1_signal_TOTAL_INSIDE`, ~`Diet Duration`, ~Diet,
  669,  "ND_4wk",  14625.69, 31.02, 2.25,  471058.35, "4wk", "ND",
  667,  "ND_4wk",  6415.18,  35.22, 2.00,  444263.61, "4wk", "ND",
  664,  "ND_4wk",  2268.30,  32.76, 1.00,  146966.63, "4wk", "ND",
  665,  "ND_4wk",  4787.75,  33.22, 2.50,  318116.98, "4wk", "ND",
  668,  "ND_4wk",  10888.93, 34.72, 2.33,  499898.94, "4wk", "ND",
  662,  "ND_4wk",  9975.43,  29.12, 2.33,  390456.94, "4wk", "ND",
  663,  "ND_4wk",  6220.05,  29.78, 2.50,  280898.60, "4wk", "ND",
  670,  "ND_4wk",  12556.35, 34.76, 2.50,  929012.96, "4wk", "ND",
  773,  "WD_4wk",  16572.26, 30.42, 3.50,  1079815.52, "4wk", "WD",
  772,  "WD_4wk",  18703.73, 34.65, 2.00,  876939.8028, "4wk", "WD",
  718,  "WD_4wk",  15356.27, 27.37, 2.33,  560484.3131, "4wk", "WD",
  719,  "WD_4wk",  19512.66, 39.16, 1.50,  1739762.946, "4wk", "WD",
  672,  "WD_4wk",  23200.62, 33.29, 4.33,  1098322.795, "4wk", "WD",
  407,  "WD_4wk",  9100.30,  29.93, 2.50,  411408.0204, "4wk", "WD",
  717,  "WD_4wk",  7116.79,  39.24, 2.00,  388895.1669, "4wk", "WD",
  671,  "WD_4wk",  9588.02,  43.47, 2.67,  545080.2545, "4wk", "WD",
  398,  "MED_4wk", 1037.99, 23.45, 2.00,  97363.46,   "4wk", "MED",
  293,  "MED_4wk", 12098.67, 28.11, 3.33,  451370.56,  "4wk", "MED",
  771,  "MED_4wk", 3671.89,  26.85, 0.00,  186313.68,  "4wk", "MED",
  295,  "MED_4wk", 569.90,   31.71, 1.00,  72274.08,   "4wk", "MED",
  575,  "MED_4wk", 3016.31,  26.06, 1.00,  163485.36,  "4wk", "MED",
  299,  "MED_4wk", 6915.73,  28.70, 3.67,  180444.29,  "4wk", "MED",
  772,  "MED_4wk", 8006.26,  31.75, 1.00,  342484.84,  "4wk", "MED",
  574,  "MED_4wk", 3689.12,  29.21, 2.33,  144763.88,  "4wk", "MED"
)

# Define group comparisons for t-tests
comparisons <- list(
  c("ND_4wk", "WD_4wk"), c("ND_4wk", "MED_4wk"), c("WD_4wk", "MED_4wk"))

# 补充缺失的颜色向量
fillColors <- c("#619CFF", "#F8766D", "#00BA38")
outlineColors <- c("#003B73", "#7C260B", "#005728")

# Create plot
week_filtered <- filter(lesionData, `Diet Duration` == "4wk")
plot <- ggplot(week_filtered, aes(x = Group, y = Size, fill = Group, color = Group)) +
  stat_summary(fun = mean, geom = "bar", size = 1, show.legend = FALSE, width = 0.5) +
  # 关键修改:将alternative参数放入method.args传递给t.test
  stat_compare_means(comparisons = comparisons, method = "t.test", step_increase = 0.5, 
                     label = "p.format", method.args = list(alternative = "less")) +
  theme_minimal() +
  scale_fill_manual(values = fillColors) +
  scale_color_manual(values = outlineColors)

print(plot)    

补充说明

  • 如果需要针对不同组比较设置不同的单侧检验方向(如部分用less,部分用greater),可以自定义检验函数,再通过method参数指定该函数,但常规同方向单侧检验用上述方法即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 11:37:02