この問題にしばらく苦労した後、ここでアドバイスを得たいと思っています。有意性に基づいてペアごとのグループ化ラベルを決定する自動化された方法を誰かが知っているかどうか疑問に思っています。この質問は、有意性検定とは無関係です (たとえば、パラメトリックの場合は 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)