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

pairwise_t_test()可靠性疑问及ANT*BUT交互项多重比较咨询

问题解答

你的pairwise_t_test()用法是正确的,用于在每个ANT分组内比较BUT的不同水平。误差棒无重叠却未得到显著结果,是因为置信区间不重叠≠统计显著性——置信区间反映的是估计精度,而统计检验还要考虑样本量、方差等因素。运行你的代码后,只有flat组的LOW vs MEDIUM对比得到了显著的校正p值(0.036,标记为*),其余对比的校正p值均大于0.05,因此无显著性标签。

针对var ~ ANT*BUT交互模型的多重比较,以下是两种实用方法:


方法1:简单效应比较(使用emmeans)

适合在每个BUT水平下比较ANT,或每个ANT水平下比较BUT:

  1. 拟合交互模型:
library(emmeans)

model <- lm(var ~ ANT*BUT, data = df1)
  1. 在每个ANT分组内比较BUT(与你的原始逻辑一致,但通过emmeans实现):
but_ant_pairs <- emmeans(model, ~ BUT | ANT) %>% 
  pairs(adjust = "holm") %>% 
  as.data.frame() %>% 
  rename(p = p.value, p.adj = p.adjusted) %>% 
  mutate(
    p.adj.signif = case_when(
      p.adj < 0.001 ~ "***",
      p.adj < 0.01 ~ "**",
      p.adj < 0.05 ~ "*",
      TRUE ~ "ns"
    ),
    # 拆分对比组名称
    group1 = str_split_fixed(contrast, " - ", 2)[,1],
    group2 = str_split_fixed(contrast, " - ", 2)[,2],
    lab = paste0(p.adj.signif, " (p=", round(p.adj, 3), ")")
  ) %>%
  add_xy_position(x = "BUT", data = df1, group = "ANT")
  1. 在每个BUT水平下比较ANT:
ant_but_pairs <- emmeans(model, ~ ANT | BUT) %>% 
  pairs(adjust = "holm") %>% 
  as.data.frame() %>% 
  rename(p = p.value, p.adj = p.adjusted) %>% 
  mutate(
    p.adj.signif = case_when(
      p.adj < 0.001 ~ "***",
      p.adj < 0.01 ~ "**",
      p.adj < 0.05 ~ "*",
      TRUE ~ "ns"
    ),
    x = str_extract(contrast, "(LOW|HIGH|MEDIUM)$"),
    y.position = case_when(
      x == "LOW" ~ 30,
      x == "HIGH" ~ 31,
      x == "MEDIUM" ~ 32
    ),
    lab = paste0(p.adj.signif, " (p=", round(p.adj, 3), ")")
  )

方法2:全组合成对比较(使用ggpubr)

如果需要比较ANT和BUT的所有6种组合:

  1. 创建组合分组变量:
df1 <- df1 %>% mutate(ANT_BUT = paste(ANT, BUT, sep = "_"))
  1. 运行成对t检验:
all_pairs <- df1 %>% 
  pairwise_t_test(var ~ ANT_BUT, adjust = "holm") %>% 
  mutate(
    lab = paste0(p.adj.signif, " (p=", round(p.adj, 3), ")")
  ) %>%
  add_xy_position(x = "ANT_BUT")

交互比较结果可视化

将ANT在BUT内的比较添加到你的现有图表中:

ggplot(df, aes(x= BUT, y= mean, colour= ANT, group = ANT)) +
  geom_errorbar(aes(ymin= low, ymax= up), colour="black", width=.10) +
  geom_line() + 
  geom_point(size= 3, shape= 21, fill="white") + 
  # 添加原始的BUT在ANT内的比较
  stat_pvalue_manual(val, step.increase=0.05, label = "lab", y.position = 28) +
  # 添加ANT在BUT内的比较
  stat_pvalue_manual(ant_but_pairs, label = "lab", x = "x", y.position = "y.position")

关键提示

  • 多重比较时务必关注校正p值,而非原始p值,避免一类错误。
  • 置信区间不重叠仅说明估计值的差异,不能直接等同于统计显著性,需通过假设检验验证。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 18:47:01