Skip to content

Instantly share code, notes, and snippets.

@AzadehFeizpour
Forked from zhiyzuo/pearsonr_ci.py
Created August 13, 2019 05:52
Show Gist options
  • Save AzadehFeizpour/bfae33bae8055d116a216028dc0b1fb9 to your computer and use it in GitHub Desktop.
Save AzadehFeizpour/bfae33bae8055d116a216028dc0b1fb9 to your computer and use it in GitHub Desktop.
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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment