When using the "ranksum" function, how can I differentiate bewteen the two options of getting a low p-value?
3 views (last 30 days)
Show older comments
Say I have two vectors- A and B. If I get a low p-value, I would like to check whether this low p-value stands for high median of B compared to A, instead of just different medians (that is, either the median of B is higher than the median of A, or vise versa).
For example:
A=[120 10 201 20 30 12 30 10 2 2 3 5 1]
B=[140 400 120 2000 30 40 2000 1000 1000]
I get a p-value of 7.2251e-004.
But if
B=[1 0 0 0 0 0 0 0 0 0 0 0 0]
I also get a low p-value (6.4360e-006).
I would like to get only low p-values when B median is higher then A median. Since I have many calculations, I need it to be automatically in the code, instead of checking every pair of vectors. Do you have any idea how to do that?
Thanks, Michal
0 Comments
Accepted Answer
Star Strider
on 6 Aug 2012
Both ‘one-sided’ (that one median is greater than or less than the other) and ‘two-sided’ (that the medians are different) options are possible. See Item #4 under Assumptions and formal statement of hypotheses in the Wikipedia article on the Mann–Whitney U. There is also an excellent discussion of this on page 3 of The Wilcoxon Rank-Sum Test.
According the the documentation, ranksum returns the two-sided p-value, so make the appropriate calculation to get the one-sided p-value.
4 Comments
S Saperstein
on 8 Apr 2014
For people still using matlab version 2012a and older, this solution won't work. If the length of vector y is smaller than the length of vector x, then ranksum calculates based on y rather than x and your z-score will be flipped. You'll need to correct based on the relative lengths of x and y, as well as on the zscore, or just use ranksum.m from matlab version 2012b and later.
More Answers (1)
the cyclist
on 6 Aug 2012
Edited: the cyclist
on 6 Aug 2012
Use the 'tail' option. A careful read of
>> help ranksum
will explain how.
(In the first draft of my answer, I pointed to "doc ranksum" rather than "help ranksum", but it seems that that documentation doesn't list the 'tail' option. Weird.)
4 Comments
the cyclist
on 7 Aug 2012
Ah. I am using the prerelease of R2012b. It seems that 'tail' option is new.
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!