A confidence interval for the population correlation coefficient \rho can be obtained with the Fisher-r-to-z transformation. The steps are as follows.

- Transform r to a standard normal deviate Z

Z_{xy} = \frac{1}{2}ln\left(\frac{1 + r}{1 – r}\right), \tag{1}

which is equal to:

Z_{xy} = arctanh(r). \tag{2} - Determine the standard error for Z:

s_Z = \sqrt\frac{1}{N – 3}. \tag{3} - Calculate the Margin of Error (MoE) for Z:

MOE_Z = 1.96*s_z. \tag{4} - Add to and substract MoE from Z to obtain a 95% Confidence Interval for Z.
- Transform the upper and lower limits of the CI for Z to obtain the corresponding limits for \rho, using:

r_Z = \frac{e^{2Z} – 1}{e^{2Z} + 1}, \tag{4}

which is equal to:

r_Z = tanh(Z). \tag{5}

The following R-code does all the work:

conf.int.rho <- function(r, N) { lims.rho = tanh(atanh(r) + c(qnorm(.025), qnorm(.975)) * sqrt(1/(N - 3))) return(lims.rho) }

So, if you have r = .50 and N = .50, just run the above function in R to obtain a confidence interval for the correlation coefficient.

conf.int.rho(.50, 50) ## [1] 0.2574879 0.6832563