[Rd] cor.test(method = spearman, exact = TRUE) not exact (PR#14095)
dsimcha at gmail.com
dsimcha at gmail.com
Mon Nov 30 04:00:12 CET 2009
Full_Name: David Simcha
Version: 2.10
OS: Windows XP Home
Submission from: (NULL) (173.3.208.5)
> a <- c(1:10)
> b <- c(1:10)
> cor.test(a, b, method = "spearman", alternative = "greater", exact = TRUE)
Spearman's rank correlation rho
data: a and b
S = 0, p-value < 2.2e-16
alternative hypothesis: true rho is greater than 0
sample estimates:
rho
1
> 1 / factorial(10)
[1] 2.755732e-07
Since we have perfect rank correlation and only one permutation out of 10! could
give this for N = 10, the p-value should be 1/10!. Reading the code in prho.c,
it appears that the "exact" calculation uses the Edgeworth approximation for N >
9. This makes sense because, for similar examples with N <= 9, the results are
as expected (1 / N!).
The "exact" p-value calculation is good enough for most practical purposes, but
is clearly not exact. Some informal testing I've done indicates that it can
even be less accurate than the "approximate" p-value calculation in some cases.
I think it's absurd to call these p-values "exact" when they are clearly based
on an asymptotic approximation that can be off by orders of magnitude in some
cases.
More information about the R-devel
mailing list