[R] R's Spearman

Raymond Wan rwan at kuicr.kyoto-u.ac.jp
Tue May 29 05:28:43 CEST 2007


Hi all,

I am trying to figure out the formula used by R's Spearman rho (using 
cor(method="spearman")) because I can't seem to get the same value as by 
calculating "by hand".  Perhaps I'm using "cor" wrong, but I don't know 
where.  Basically, I am running these commands:

 > y=read.table(file="tmp",header=TRUE,sep="\t")
 > y
   IQ Hours
1 106     7
2  86     0
3  97    20
4 113    12
5 120    12
6 110    17
 > cor(y[1],y[2],method="spearman")
       Hours
IQ 0.2319084

[it's an abbreviated example of one I took from Wikipedia].  I 
calculated by hand (apologies if the table looks strange when pasted 
into e-mail):

      IQ    Hours    rank(IQ)  rank(hours)    diff    diff^2
1    106    7        3         2                 1    1
2     86    0        1         1                 0    0
3     97    20       2         6                -4    16
4    113    12       5         3.5             1.5    2.25
5    120    12       6         3.5             2.5    6.25
6    110    17       4         5                -1    1
                                                      26.5
                           
                                              rho=    0.242857

where rho = (1 - ((6 * 26.5) / 6 * (6^2 - 1))).  I kept modifying the 
table and realized that the difference in result comes from ties.  i.e., 
if I remove the tie in rows 4 and 5, I get the same result from both cor 
and calculating by hand.  Perhaps I'm handling ties wrong...does anyone 
know how R does it or perhaps I need to change how I'm using it?

Thank you!

Ray



More information about the R-help mailing list