在为这个问题苦苦挣扎了一段时间后,我希望在这里得到一些建议。我想知道是否有人知道基于重要性确定成对分组标签的自动化方法。该问题与显着性检验无关(例如 Tukey 用于参数或 Mann-Whitney 用于非参数) - 考虑到这些成对比较,一些箱线图类型的图通常用下标表示这些分组:
我手工完成了这个例子,这可能很乏味。我认为算法中的标记顺序应该基于每个组中的级别数 - 例如,应该首先命名包含与所有其他级别显着不同的单个级别的组,然后是包含 2 个级别的组,然后是 3 个,等等,同时检查新分组是否添加了新的所需分组并且不违反和差异。
在下面的示例中,棘手的部分是让算法识别级别 1 应与 3 和 5 分组,但不应将 3 和 5 分组(即共享一个标签)。
示例代码:
set.seed(1)
n <- 7
n2 <- 100
mu <- cumsum(runif(n, min=-3, max=3))
sigma <- runif(n, min=1, max=3)
dat <- vector(mode="list", n)
for(i in seq(dat)){
dat[[i]] <- rnorm(n2, mean=mu[i], sd=sigma[i])
}
df <- data.frame(group=as.factor(rep(seq(n), each=n2)), y=unlist(dat))
bp <- boxplot(y ~ group, df, notch=TRUE)
kr <- kruskal.test(y ~ group, df)
kr
mw <- pairwise.wilcox.test(df$y, df$g)
mw
mw$p.value > 0.05 # TRUE means that the levels are not significantly different at the p=0.05 level
# 1 2 3 4 5 6
#2 FALSE NA NA NA NA NA
#3 TRUE FALSE NA NA NA NA
#4 FALSE FALSE FALSE NA NA NA
#5 TRUE FALSE FALSE FALSE NA NA
#6 FALSE FALSE FALSE TRUE FALSE NA
#7 FALSE FALSE FALSE FALSE FALSE FALSE
text(x=1:n, y=bp$stats[4,], labels=c("AB", "C", "A", "D", "B", "D", "E"), col=1, cex=1.5, pos=3, font=2)