[R] spearman correction

Peter Dalgaard p.dalgaard at biostat.ku.dk
Wed Dec 1 12:34:57 CET 2004

Prof Brian Ripley <ripley at stats.ox.ac.uk> writes:

> On Wed, 1 Dec 2004, Branimir K. Hackenberger wrote:
> > Who knows which correction (by tied numbers) is used by Spearman-test in
> > function cor.test (e.g. cor.test(a,b,method="spearman"))?
> Anyone who reads the sources!  The critical line in cor.test.default is
>              r <- cor(rank(x), rank(y))
> so it uses rank(), and that averages ranks of tied observations.

...and correcting the p value for that is on the wish list for some of

As far as I remember, that is quite easy to do in the asymptotic
approximation (but hard to do exactly): Start by working out the
covariance matrix of the y ranks given the tied sets of values; a
matrix with compound symmetry, obviously, and with rows/columns
summing to zero since the sum of the ranks is known, so you really
just need the variance of ry_1. Then note that the statistic is
equivalent to sum(rx*ry) which, conditionally on the values of x (and
y), has the distribution of a linear combination of the ry, the
variance of which is...

   O__  ---- Peter Dalgaard             Blegdamsvej 3  
  c/ /'_ --- Dept. of Biostatistics     2200 Cph. N   
 (*) \(*) -- University of Copenhagen   Denmark      Ph: (+45) 35327918
~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk)             FAX: (+45) 35327907

More information about the R-help mailing list