在 Python 中,如何计算两个数据数组之间的相关性和统计显着性?
Posted
技术标签:
【中文标题】在 Python 中,如何计算两个数据数组之间的相关性和统计显着性?【英文标题】:In Python, how can I calculate correlation and statistical significance between two arrays of data? 【发布时间】:2012-06-22 17:16:34 【问题描述】:我有一组数据包含两个同样长的数据数组,或者我可以制作一个包含两项条目的数组,我想计算数据所代表的相关性和统计显着性(可能是紧密相关的,或可能没有统计上显着的相关性)。
我正在使用 Python 编程并安装了 scipy 和 numpy。我查看并找到了Calculating Pearson correlation and significance in Python,但这似乎是希望对数据进行操作,使其落入指定范围内。
我认为,让 scipy 或 numpy 给我两个数组的相关性和统计显着性的正确方法是什么?
【问题讨论】:
你认为scipy.stats.pearsonr
为什么要对数据进行操作,使其落入指定范围?
相关系数介于 -1 和 +1 之间。这是输出,不是输入。
【参考方案1】:
这两个数组之间可以使用Mahalanobis distance,考虑到它们之间的相关性。
函数在scipy包中:scipy.spatial.distance.mahalanobis
有一个很好的例子here
【讨论】:
【参考方案2】:scipy.spatial.distance.euclidean()
这给出了 2 个点、2 个 np 数组、2 个列表等之间的欧式距离
import scipy.spatial.distance as spsd
spsd.euclidean(nparray1, nparray2)
你可以在这里找到更多信息http://docs.scipy.org/doc/scipy/reference/spatial.distance.html
【讨论】:
【参考方案3】:如果要计算皮尔逊相关系数,那么scipy.stats.pearsonr
是要走的路;虽然,意义只对更大的数据集有意义。此功能不需要将要操作的数据落入指定范围。相关性的值落在[-1,1]
区间内,也许这就是混乱?
如果意义不是很重要,可以使用numpy.corrcoef()
。
马氏距离确实考虑了两个数组之间的相关性,但它提供了距离度量,而不是相关性。 (在数学上,马氏距离不是真正的距离函数;不过,它可以在某些情况下使用,从而获得很大的优势。)
【讨论】:
以上是关于在 Python 中,如何计算两个数据数组之间的相关性和统计显着性?的主要内容,如果未能解决你的问题,请参考以下文章
js:给定两个数组,如何判断他们的相对应下标的元素类型是一样的
如何使用 MapReduce 在 python 中计算两个变量之间的相关性