El código más simple que viene a mi mente se muestra a continuación. Estoy bastante seguro de que hay algunas funciones ya existentes para hacer eso en CRAN, pero soy demasiado vago para buscarlas, incluso en R-seek .
dd <- data.frame(y=as.vector(unlist(junk)),
g=rep(paste("g", 1:4, sep=""), unlist(lapply(junk, length))))
aov.res <- kruskal.test(y ~ g, data=dd)
alpha.level <- .05/nlevels(dd$g) # Bonferroni correction, but use
# whatever you want using p.adjust()
# generate all pairwise comparisons
idx <- combn(nlevels(dd$g), 2)
# compute p-values from Wilcoxon test for all comparisons
pval.res <- numeric(ncol(idx))
for (i in 1:ncol(idx))
# test all group, pairwise
pval.res[i] <- with(dd, wilcox.test(y[as.numeric(g)==idx[1,i]],
y[as.numeric(g)==idx[2,i]]))$p.value
# which groups are significantly different (arranged by column)
signif.pairs <- idx[,which(pval.res<alpha.level)]
boxplot(y ~ g, data=dd, ylim=c(min(dd$y)-1, max(dd$y)+1))
# use offset= to increment space between labels, thanks to vectorization
for (i in 1:ncol(signif.pairs))
text(signif.pairs[,i], max(dd$y)+1, letters[i], pos=4, offset=i*.8-1)
Aquí hay un ejemplo de lo que produciría el código anterior (con diferencias significativas entre los cuatro grupos):
En lugar de la prueba de Wilcoxon, uno podría confiar en el procedimiento implementado en la kruskalmc()
función del paquete pgirmess (vea una descripción del procedimiento utilizado aquí ).
Además, asegúrese de consultar los consejos R de Rudolf Cardinal sobre R: gráficos básicos 2 (ver en particular, Otro gráfico de barras, con anotaciones ).
with(dd,
instrucción estaba en el lugar equivocado, lo que resultó en una prueba extraña). Gracias por atrapar eso! Sí, no utilizo los resultados de la prueba KW, pero siempre es una buena idea verificarlo primero, de lo contrario, múltiples pruebas post-hoc no tendrían sentido (o al menos, sugerirían espionaje de datos). Tenga en cuenta que he corregido el código y nada resultó ser significativo, pero dejé la imagen original en aras de la claridad con resultados significativos.