[R] Difference betweeen cor.test() and formula everyone says to use

Jeremy Miles jeremy.miles at gmail.com
Fri Oct 17 01:32:08 CEST 2014


I'm trying to understand how cor.test() is calculating the p-value of
a correlation. It gives a p-value based on t, but every text I've ever
seen gives the calculation based on z.

For example:
> data(cars)
> with(cars[1:10, ], cor.test(speed, dist))

Pearson's product-moment correlation

data:  speed and dist
t = 2.3893, df = 8, p-value = 0.04391
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
 0.02641348 0.90658582
sample estimates:
      cor
0.6453079

But when I use the regular formula:
> r <- cor(cars[1:10, ])[1, 2]
> r.z <- fisherz(r)
> se <- se <- 1/sqrt(10 - 3)
> z <- r.z / se
> (1 - pnorm(z))*2
[1] 0.04237039

My p-value is different.  The help file for cor.test doesn't (seem to)
have any reference to this, and I can see in the source code that it
is doing something different. I'm just not sure what.

Thanks,

Jeremy



More information about the R-help mailing list