在 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 中计算两个变量之间的相关性

计算两个python数组之间的欧几里得距离

替代(python)计算两个不同集合中所有点之间的距离

如何在python中计算随机森林的训练和测试数据之间的准确性

Python:两个大型numpy数组之间的余弦相似度