Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
calculate Pearson correlation along with the confidence interval using scipy and numpy
import numpy as np
from scipy import stats
def pearsonr_ci(x,y,alpha=0.05):
''' calculate Pearson correlation along with the confidence interval using scipy and numpy
Parameters
----------
x, y : iterable object such as a list or np.array
Input for correlation calculation
alpha : float
Significance level. 0.05 by default
Returns
-------
r : float
Pearson's correlation coefficient
pval : float
The corresponding p value
lo, hi : float
The lower and upper bound of confidence intervals
'''
r, p = stats.pearsonr(x,y)
r_z = np.arctanh(r)
se = 1/np.sqrt(x.size-3)
z = stats.norm.ppf(1-alpha/2)
lo_z, hi_z = r_z-z*se, r_z+z*se
lo, hi = np.tanh((lo_z, hi_z))
return r, p, lo, hi
@javiribera

This comment has been minimized.

Copy link

commented Aug 13, 2019

In line 26, x.size should be replaced by len(x). x.size assumes that the input is a numpy array and the docstring says that the input can also be a list.

@AzadehFeizpour

This comment has been minimized.

Copy link

commented Aug 13, 2019

Given that we're doing Fisher's Z transformation of r, Is that ok to use this formula for stats.spearmanr as well?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.