我有一个矩阵data
,有m行和n列。我曾经使用^{}计算所有行对之间的相关系数:
import numpy as np
data = np.array([[0, 1, -1], [0, -1, 1]])
np.corrcoef(data)
现在我也想看看这些系数的p值。np.corrcoef
不提供这些;^{}提供。但是,scipy.stats.pearsonr
不接受输入矩阵。
有没有一种快速的方法来计算所有行对的系数和p值(例如,通过m矩阵在两个m处到达,一个具有相关系数,另一个具有相应的p值),而不必手动遍历所有行对?
Tags:
有点老套,可能效率不高,但我想这可能是你想要的:
Scipy's pdist是一个非常有用的函数,它主要用于寻找n维空间中观测值之间的成对距离。
但它允许用户定义可调用的“距离度量”,可以利用它执行任何类型的成对操作。结果以压缩距离矩阵形式返回,使用Scipy's 'squareform' function可以很容易地将其更改为平方矩阵形式。
我今天也遇到同样的问题。
经过半个小时的搜索,我在numpy/scipy库中找不到任何代码可以帮助我做到这一点。
所以我写了自己的版本
第一个版本使用np.corrcoef的结果,然后基于corrcoef矩阵的三角形上数值计算p值。
第二个循环版本只是在行上迭代,手动执行pearsonr。
考试通过了,他们是一样的。
我的Macbook对100x2500矩阵的性能
最一致的方法可能是
pandas
中的内置方法.corr
,以获取r:要使用t-test获取p值:
也可以使用OP中提到的
scipy.stats.pearsonr
:相关问题 更多 >
编程相关推荐