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

如何在R中实现Kruskal-Wallis Dunn事后检验的字母标记法?

基于Dunn检验生成Kruskal-Wallis事后检验的字母标记法解决方案

要实现基于Dunn检验的紧凑字母标记(CLD),可以用FSA包执行Dunn事后检验,再借助multcompView包生成字母标记,具体步骤如下:


1. 安装并加载所需包

# 首次运行时安装依赖包
install.packages(c("FSA", "multcompView", "ggplot2"))

# 加载包
library(FSA)
library(multcompView)
library(ggplot2)

2. 执行Dunn事后检验并整理p值

# 针对你的数据执行Dunn检验,指定校正方法(这里用bonferroni,可按需更换)
dunn_result <- dunnTest(hauteur ~ distance, data = MR, method = "bonferroni")

# 提取两两比较的校正后p值
dunn_pvals <- dunn_result$res

# 将p值整理成multcompView所需的矩阵格式
groups <- unique(MR$distance)
p_matrix <- matrix(NA, nrow = length(groups), ncol = length(groups), dimnames = list(groups, groups))

# 填充矩阵
for (i in 1:nrow(dunn_pvals)) {
  grp1 <- as.character(dunn_pvals$Group1[i])
  grp2 <- as.character(dunn_pvals$Group2[i])
  p_matrix[grp1, grp2] <- dunn_pvals$P.adj[i]
  p_matrix[grp2, grp1] <- dunn_pvals$P.adj[i]
}
diag(p_matrix) <- 1 # 对角线设为1(同一组比较无意义)

3. 生成字母标记并整理数据

# 生成紧凑字母标记
cld_labels <- multcompLetters(p_matrix, compare = "<", threshold = 0.05)$Letters

# 转换成数据框,适配后续绘图
cld_df <- data.frame(
  distance = names(cld_labels),
  groups = unname(cld_labels),
  stringsAsFactors = FALSE
)

# 按照你原来的需求调整分组顺序
cld_df$ordre <- c(6,3,1,2,4,5)
cld_df <- cld_df[order(cld_df$ordre), ]

4. 绘制带字母标记的图

ggplot(data = MR, aes(x = distance, y = hauteur, col = distance)) +
  scale_color_brewer(palette = "Dark2") +
  scale_alpha(0.5) +
  geom_jitter(position = position_jitterdodge(jitter.width = 1), size = 0.5) +
  # 若mean_sd函数未定义,可替换为以下两行实现均值+标准差误差线
  stat_summary(fun.data = function(x) data.frame(y = mean(x), ymin = mean(x)-sd(x), ymax = mean(x)+sd(x)),
               geom = "errorbar", width = 0.2, size = 0.4, col = "black") +
  stat_summary(fun = mean, geom = "point", size = 1, col = "black") +
  geom_text(data = cld_df, aes(label = groups, y = 50, x = ordre), vjust = -0.5, inherit.aes = FALSE)

注意事项

  • dunnTest的method参数支持多种校正方法,比如holm、hochberg等,可根据研究需求调整;
  • 若你的distance是因子类型,提前确认其水平顺序,避免绘图时分组混乱;
  • 可以根据数据分布调整geom_jitter的jitter.width参数,优化散点显示效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 17:22:33