为了获得python 中两个数组之间的相关性,我使用:
from scipy.stats import pearsonr
x, y = [1,2,3], [1,5,7]
cor, p = pearsonr(x, y)
但是,如文档中所述,从返回的 p 值pearsonr()
仅对大于 500 的数据集有意义。那么我怎样才能获得对小数据集合理的 p 值?
我的临时解决方案:
在阅读了线性回归之后,我想出了自己的小脚本,它基本上使用Fischer 变换来获得 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)
有用。但是,我不确定 给出的 p 值是否更合理pearsonr()
。是否有已经具有此功能的 python 模块?我无法在SciPy或Statsmodels中找到它。
编辑以澄清:
我的示例中的数据集已简化。我的真实数据集是两个包含 10-50 个值的数组。