[R] Mann-Whitney by group
R. Michael Weylandt
michael.weylandt at gmail.com
Tue Jul 17 05:13:57 CEST 2012
On Mon, Jul 16, 2012 at 3:39 PM, Oxenstierna <david.chertudi at gmail.com> wrote:
> lapply(thing, function(x) x[['p.value']]) --works very well, thank you.
> Not to be a chore, but I'm interested in comparing the results of
> wilcox.test--and the methodology we've employed so far--with the results and
> methodology of wilcox_test (library("coin")). So, I'd like to compare
> groups 5 and 6 across A through H using wilcox_test, and then I'd like to
> extract the p-values. Going through the same methodology as above, but
> replacing wilcox.test with wilcox_test has failed, and so has the p.value
> extraction method: lapply(thing, function(x) x[['p.value']]) .
> I believe the latter failure has to do with the fact that the coin package
> has a built-in class and built-in extraction method (pvalue() to extract and
> class "IndependenceTest"), but I don't know how to work around it. For
> example, for a single comparison: wilcox_test(A~Group, Dtb) works fine, and
> pvalue(wilcox.test(A~Group, Dtb)) extracts the p-value.
> So, any ideas about how to compare groups 5 and 6 across A through H using
I think there are a few things at play here.
1) coin uses so-called S4 objects, so `[[` style subsetting isn't
going to work. The "right way" is, as you have found to use the
2) It looks like you need to use the formula intervace for
wilcox_test. Unfortunately, this makes things a little more
complicated as you'll need to construct the formula programmatically.
A one liner looks something like this.
pvalue(wilcox_test(as.formula(paste(x, "~ Group ")), Dtb)))
Where lapply loops over the letters A,B, etc. and makes the string `A
~ Group`, converts it to a formula, passes that to wilcox_test, then
gets the pvalue and returns it.
In two lines you could do:
thing <- lapply(LETTERS[1:8], function(x)
wilcox_test(as.formula(paste(x, "~ Group")), Dtb))
thing2 <- lapply(thing, pvalue)
Where thing has all the test result objects, and thing2 collects the pvalues.
Hope this helps,
More information about the R-help