Skip to content

Instantly share code, notes, and snippets.

@ayanatherate
Forked from zhiyzuo/pearsonr_ci.py
Created January 4, 2023 06:19
Show Gist options
  • Save ayanatherate/b9d8083f3c7ce040a566ebdf1fe8e5e9 to your computer and use it in GitHub Desktop.
Save ayanatherate/b9d8083f3c7ce040a566ebdf1fe8e5e9 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