[R] S in cor.test(..., method="spearman")

Sundar Dorai-Raj sundar.dorai-raj at pdf.com
Wed Sep 13 17:31:12 CEST 2006



Dietrich Trenkler said the following on 9/13/2006 9:44 AM:
> Dear HelpeRs,
> 
> I have some data:
> 
> "ice" <- structure(c(0.386, 0.374, 0.393, 0.425, 0.406, 0.344,
>     0.327, 0.288, 0.269, 0.256, 0.286, 0.298, 0.329, 0.318, 0.381,
>     0.381, 0.47, 0.443, 0.386, 0.342, 0.319, 0.307, 0.284, 0.326,
>     0.309, 0.359, 0.376, 0.416, 0.437, 0.548, 41, 56, 63, 68,
>     69, 65, 61, 47, 32, 24, 28, 26, 32, 40, 55, 63, 72, 72, 67,
>     60, 44, 40, 32, 27, 28, 33, 41, 52, 64, 71), .Dim = as.integer(c(30,
>     2)))
> 
> Using
> 
>     cor.test(ice[,1],ice[,2],method="spearman")
> 
> I get (apart from a warning message due to ties)
> 
>         Spearman's rank correlation rho
> 
> data:  ice[, 1] and ice[, 2]
> S = 769.4403, p-value = 1.543e-08
> alternative hypothesis: true rho is not equal to 0
> sample estimates:
>      rho
> 0.828823
> 
> I wonder what S is. I presume it is
> 
> sum((rank(ice[,1])-rank(ice[,2]))^2),
> 
> but this delivers  768.5. Is it the way ranks are computed in cor.test?
> 
> 
> Thank you in advance.
> 
> D. Trenkler                              
> 

Looking at the code will help. Try

stats:::cor.test.default

This reveals that S is determined by:

x <- ice[, 1]
y <- ice[, 2]
n <- nrow(ice)
r <- cor(rank(x), rank(y))
S <- (n^3 - n) * (1 - r)/6
S
## [1] 769.4403

See ?cor.test as to definition of "S".

HTH,

--sundar



More information about the R-help mailing list