有没有办法在与Kruskall wallis测试进行成对比较后获得显著性代码?对于重要性代码,我指的是分配给人群的字母代码,以指示差异显着的地方。
对于传统的anova,可以使用agricolae库中的HSD.test执行这样的测试,但是对于非参数化的anova,我还找不到任何东西。
一个小玩具示例:
dv <- c(runif(100, 5.0, 10))
iv <- as.factor( c(rep("I", 10), rep("II", 10), rep("III", 10), rep("IV", 10), rep("V", 10),
rep("VI", 10), rep("VII", 10), rep("VIII", 10), rep("IX", 10), rep("X", 10)))
df <- data.frame(dv, iv)
# with anova
library(agricolae)
aov.000 <- aov(dv ~ iv, data=df)
HSD.test(aov.000, "iv")
# after KW test:
(kt <- kruskal.test(dv ~ iv, data=df))
library(coin)
library(multcomp)
NDWD <- oneway_test(dv ~ iv, data = df,
ytrafo = function(data) trafo(data, numeric_trafo = rank),
xtrafo = function(data) trafo(data, factor_trafo = function(x)
model.matrix(~x - 1) %*% t(contrMat(table(x), "Tukey"))),
teststat = "max", distribution = approximate(B=1000))
### global p-value
print(pvalue(NDWD))
### sites (I = II) != (III = IV) at alpha = 0.01 (page 244)
print(pvalue(NDWD, method = "single-step"))发布于 2013-06-05 17:43:15
因为它可能对其他人有用,所以下面的代码似乎可以工作(使用multcompView库):
library(multcompView)
mat <- data.frame(print(pvalue(NDWD, method = "single-step")))
(a <- c(mat[, 1])); names(a) <- rownames(mat)
multcompLetters(a)或者,也可以使用以下方法:
test <- pairwise.wilcox.test(dv, iv, p.adj="bonferroni", exact=FALSE)
# test <- pairwise.wilcox.test(et.ef, s.t, p.adj="holm", exact=FALSE)
library(multcompView)
test$p.value
library(reshape)
(a <- melt(test$p.value))
a.cc <- na.omit(a)
a.pvals <- a.cc[, 3]
names(a.pvals) <- paste(a.cc[, 1], a.cc[, 2], sep="-")
a.pvals
multcompLetters(a.pvals)发布于 2018-12-18 02:56:15
您还可以使用rcompanion包中的cldList函数(请参阅https://rcompanion.org/rcompanion/d_06.html)。示例:
k_test <- k_test$res
library(rcompanion)
cldList(comparison = k_test$Comparison,
p.value = PT$P.adj,
threshold = 0.05)
Error: No significant differences.我将它与Dunn post-hoc结合使用,它工作得很好。
发布于 2013-06-05 01:42:46
您至少可以使用multicomp包以图形方式完成此操作:
dv <- c(runif(100, 5.0, 10))
iv <- as.factor( c(rep("I", 10), rep("II", 10), rep("III", 10), rep("IV", 10), rep("V", 10),
rep("VI", 10), rep("VII", 10), rep("VIII", 10), rep("IX", 10), rep("X", 10)))
df <- data.frame(dv, iv)
anova_results <- aov(dv ~ iv, data=df)
library(multcomp)
tuk <- glht(anova_results, linfct = mcp(iv = "Tukey"))
summary(tuk) # standard display
tuk.cld <- cld(tuk) # letter-based display
opar <- par(mai=c(1,1,1.5,1))
plot(tuk.cld)
par(opar)当然,对于随机生成的数据,结果图并不是很有趣,但会给出分组-

这是我的一个图,使用相同的方法:

最后,如果您不需要图形,您可以深入到包中,轻松地找到存储分组信息的字符串,以便在其他地方使用。
https://stackoverflow.com/questions/16923050
复制相似问题