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