要获得the correlation between two arrays in python,我正在使用:
from scipy.stats import pearsonr
x, y = [1,2,3], [1,5,7]
cor, p = pearsonr(x, y)
但是,正如the docs中所述,从pearsonr()
返回的p值仅对大于500的数据集有意义。那么如何获得对小型数据集合理的p值?
我的临时解决方案:
在阅读线性回归后,我提出了自己的小脚本,它基本上使用Fischer transformation来获得z值,从中计算p值:
import numpy as np
from scipy.stats import zprob
n = len(x)
z = np.log((1+cor)/(1-cor))*0.5*np.sqrt(n-3))
p = zprob(-z)
有效。但是,我不确定pearsonr()
给出的p值是否更合理。是否有一个已经具有此功能的python模块?我无法在SciPy或Statsmodels中找到它。
修改以澄清:
我的示例中的数据集已经过简化。我的真实数据集是两个10-50值的数组。