在R中为Wilcoxon符号秩检验选择合适的事后检验方法
配对Wilcoxon符号秩检验的事后检验选择与代码问题解决
核心问题说明
你已用配对Wilcoxon检验分析time分组的配对数据,现在需要匹配合适的事后检验方法,同时你的Bonferroni校正代码报错,还不确定Dunn检验是否适用。
方法适配性解析
- Bonferroni校正:是适配配对Wilcoxon事后检验的方法,但你代码报错的原因是
wilcox.test()本身没有p.adjust.method参数,不能直接在该函数内指定校正方法。 - Dunn检验:仅适用于独立样本的秩和检验事后比较,完全不适合配对数据场景,不要使用。
正确实现方式
手动批量检验+Bonferroni校正
假设Category_time是多时间点分组(如time1、time2、time3),可按以下步骤操作:
library(tidyverse) # 生成所有两两配对的分组组合 comparisons <- combn(unique(data$Category_time), 2, simplify = FALSE) # 批量执行配对Wilcoxon检验并校正p值 posthoc_results <- map_dfr(comparisons, function(pair) { subset_data <- filter(data, Category_time %in% pair) test_result <- wilcox.test(score ~ Category_time, data = subset_data, paired = TRUE) tibble( group1 = pair[1], group2 = pair[2], statistic = test_result$statistic, raw_p = test_result$p.value, adjusted_p = p.adjust(test_result$p.value, method = "bonferroni", n = length(comparisons)) ) }) print(posthoc_results)
用rstatix包简化操作
rstatix包专门支持统计检验的事后分析,内置了配对Wilcoxon的多重比较功能:
library(rstatix) # 直接执行配对Wilcoxon事后检验+Bonferroni校正 posthoc_rstatix <- data %>% wilcox_test(score ~ Category_time, paired = TRUE, p.adjust.method = "bonferroni") print(posthoc_rstatix)
关键注意事项
- 确保数据严格配对:每个个体在
Category_time的所有水平下都有对应的score值,否则配对检验会报错。 - 除Bonferroni外,也可选择
holm校正(比Bonferroni更宽松,统计效力更高),只需将校正方法参数改为"holm"即可。
内容的提问来源于stack exchange,提问作者denise
相关产品推荐
相关产品推荐

