Kruskal-Wallis test with details on pairwise comparisons
One other approach besides kruskal::agricolae mentioned by Marek, is the Nemenyi-Damico-Wolfe-Dunn test implemented in the help page for oneway_test in the coin package that uses multcomp. Using hadley's setup and reducing the B= value for the approximate() function so it finishes in finite time:
#updated translation of help page implementation of NDWD
NDWD <-
independence_test(dv ~ iv, data = sum_codings1, distribution = approximate(B = 10000),
ytrafo = function(data) trafo(data, numeric_trafo = rank_trafo),
xtrafo = mcp_trafo(iv = "Tukey"))
### global p-value
print(pvalue(NDWD))
### sites (I = II) != (III = IV) at alpha = 0.01 (page 244)
print(pvalue(NDWD, method = "single-step"))
More stable results on that larger dataset may require increasing the B value and increasing the user's patience.
Jan: 2012: There was recently a posting on R-help claiming unexpected results from this method so I forwarded that email to the maintainer. Mark Difford said he had confirmed the problems and offered an alternate tests with the nparcomp package: https://stat.ethz.ch/pipermail/r-help/2012-January/300100.html
There were also in the same week a couple of other suggestions on rhelp for post-hoc contrasts to KW tests:
kruskalmc suggested by Mario Garrido Escudero and
rms::polr
followed by rms::contrasts
suggested by Frank Harrell https://stat.ethz.ch/pipermail/r-help/2012-January/300329.html
Nov 2015: Agree with toto_tico that help page code of coin package has been changed in the intervening years. The ?independence_test
help page now offers a multivariate-KW test and the ?oneway_test
help page has replace its earlier implementation with the code above usng the independence_test
function.
You can use PMCMR package. There is more information about it.
Spelling_Grades <- c(90,87,89,90,75,88,97,99,78,85,72,76,77,79,70)
Methods <- c("A","A","A","A","B","B","B","B","B","B","C","C","C","C","C")
kruskalmc(Spelling_Grades~Methods)
#This method doesn't accept characters that's why I've changed the methods to integer
Methods <- c(1,1,1,1,2,2,2,2,2,2,3,3,3,3,3)
posthoc.kruskal.nemenyi.test(Spelling_Grades~Methods)
The two methods above give same results.