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

如何在R中自动完成多组配对Wilcoxon符号秩检验两两比较并获取统计量

自动批量执行配对Wilcoxon符号秩检验并提取V统计量

针对被试内设计的两两Wilcoxon符号秩检验,以下是两种高效自动化实现方式,分别适配长格式和宽格式数据,可直接提取V统计量、p值,还能按需添加p值校正:

一、长格式数据处理

假设你的长格式数据包含三列:subject(被试ID)、direction(分组变量,取值l2l/r2r/r2l/l2r)、count(因变量)。用tidyverse工具链批量生成配对组合并执行检验:

library(tidyverse)

# 模拟长格式数据(替换为你的真实数据)
long_data <- tibble(
  subject = rep(1:20, 4),
  direction = rep(c("l2l", "r2r", "r2l", "l2r"), each = 20),
  count = rpois(80, lambda = 5)
)

# 生成所有两两分组配对
pair_combs <- combn(unique(long_data$direction), 2, simplify = FALSE)

# 批量执行配对Wilcoxon检验并整理结果
results_long <- map_dfr(pair_combs, function(comb) {
  # 筛选当前配对组并转宽格式(适配配对检验输入要求)
  data_sub <- long_data %>%
    filter(direction %in% comb) %>%
    pivot_wider(names_from = direction, values_from = count)
  
  # 执行配对Wilcoxon检验
  test_res <- wilcox.test(data_sub[[comb[1]]], data_sub[[comb[2]]], paired = TRUE)
  
  # 输出结果:分组对、V统计量、原始p值
  tibble(
    group1 = comb[1],
    group2 = comb[2],
    V_statistic = as.numeric(test_res$statistic),
    p_value = test_res$p.value
  )
})

# 可选:添加校正后的p值(这里用Bonferroni,可替换为holm/fdr等)
results_long <- results_long %>%
  mutate(p_adj = p.adjust(p_value, method = "bonferroni"))

print(results_long)

二、宽格式数据处理

如果你的数据是宽格式(每个分组对应一列,每行是一个被试),直接对列名生成配对组合即可:

# 从长格式转宽格式示例(替换为你的真实宽数据)
wide_data <- long_data %>%
  pivot_wider(names_from = direction, values_from = count)

# 获取所有分组列名(排除被试ID列)
group_cols <- setdiff(colnames(wide_data), "subject")

# 生成两两配对组合
pair_combs_wide <- combn(group_cols, 2, simplify = FALSE)

# 批量执行检验
results_wide <- map_dfr(pair_combs_wide, function(comb) {
  test_res <- wilcox.test(wide_data[[comb[1]]], wide_data[[comb[2]]], paired = TRUE)
  tibble(
    group1 = comb[1],
    group2 = comb[2],
    V_statistic = as.numeric(test_res$statistic),
    p_value = test_res$p.value,
    p_adj = p.adjust(test_res$p.value, method = "bonferroni")
  )
})

print(results_wide)

说明

  • 两种方法都会输出所有6组两两配对的结果,包含分组名称、V统计量、原始p值和校正后p值(可选)。
  • as.numeric(test_res$statistic)是为了把V统计量从带名称的向量转为数值,方便后续分析。
  • p值校正方法可根据需求替换,比如method = "holm"比Bonferroni更宽松,适合多组比较。

内容的提问来源于stack exchange,提问作者Linda Jasmine Hoffman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 02:52:40