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

ggstatsplot中ggwithinstats无法生成组间比较的p值及括号求助

问题解决:ggwithinstats无法显示组间比较p值及括号
  • 核心问题:你的数据并非配对/重复测量设计,但误用了针对配对数据的ggwithinstats函数。当前数据中每个id仅对应一次Evaluation(baseline和followup各40个独立样本),函数默认不会生成组间比较的括号与p值——它的设计目标是分析同一对象的前后两次测量数据。

方案1:修正为配对数据(若实验实际为配对设计)

如果你的研究是同一批患者在基线和随访时均完成评估,需重构数据让每个id对应两次评估记录:

generate_EDSS <- function(n) {
  vals <- seq(from = 0, to = 10, by = 0.5)
  sample(vals, size = n, replace = TRUE)
}
# 重构配对数据集:40个id,每个id包含baseline和followup两次评估
df <- tibble(
  id = rep(paste0("id", 1:40), times = 2), 
  neda = factor(sample(c("No", "Yes"), size = 80, replace = TRUE)),
  Evaluation = rep(c("baseline", "followup"), each = 40),
  EDSS = generate_EDSS(80)
)

ggwithinstats(
  data = df,
  x    = Evaluation, 
  y    = EDSS, 
  type = "nonparametric",
  pairwise.display = "all",
  p.adjust.method = "bonferroni",
  xlab = "Time of Evaluation",
  digits = 3,
  package = "ggsci",
  palette = "nrc_npg",
  violin.args = list(width = 0),
  pairwise.annotation = "p.value"  # 强制显示配对比较的p值与括号
)

方案2:改用独立样本分析函数(若两组为独立对象)

如果baseline和followup是两组不同的研究对象,直接替换为针对独立样本的ggbetweenstats函数:

# 使用你原有的数据集即可
ggbetweenstats(
  data = df,
  x    = Evaluation, 
  y    = EDSS, 
  type = "nonparametric",
  pairwise.display = "all",
  p.adjust.method = "bonferroni",
  xlab = "Time of Evaluation",
  digits = 3,
  package = "ggsci",
  palette = "nrc_npg",
  violin.args = list(width = 0),
  pairwise.annotation = "p.value"  # 强制显示组间比较的p值与括号
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 06:03:14