11

我正在尝试计算两个变量的 Pearson 相关系数。这些变量用于确定邮政编码数量与距离范围之间是否存在关系。所以我想看看邮政编码的数量是否随着距离范围的变化而增加/减少。

我将有一个列表来计算距离范围内的邮政编码数量,而另一个列表将具有实际范围。

可以有一个包含一系列距离的列表吗?或者最好有一个像 [50, 100, 500, 1000] 这样的列表,其中每个元素将包含该数量的范围。例如,列表代表最长 50 公里,然后从 50 公里到 100 公里,依此类推。

4

4 回答 4

16

使用 scipy :

scipy.stats.pearsonr(x, y)

计算 Pearson 相关系数和用于检验非相关性的 p 值。

Pearson 相关系数衡量两个数据集之间的线性关系。严格来说,皮尔逊相关性要求每个数据集都是正态分布的。与其他相关系数一样,这个系数在 -1 和 +1 之间变化,0 表示没有相关性。-1 或 +1 的相关性意味着精确的线性关系。正相关意味着随着 x 的增加,y 也会增加。负相关意味着随着 x 增加,y 减少。

p 值大致表示不相关系统产生的数据集的概率,这些数据集的 Pearson 相关性至少与从这些数据集计算得出的数据集一样极端。p 值并不完全可靠,但对于大于 500 左右的数据集可能是合理的。

参数 :

x : 一维数组

y : 与 x 长度相同的一维数组

返回:

(皮尔逊相关系数,:2 尾 p 值)

于 2012-11-30T16:09:54.183 回答
7

您还可以使用numpy

numpy.corrcoef(x, y)

这会给你一个相关矩阵,如下所示:

[[1          correlation(x, y)]
[correlation(y, x)          1]]
于 2015-11-14T22:15:05.850 回答
0

尝试这个:

 val=Top15[['Energy Supply per Capita','Citable docs per Capita']].rank().corr(method='pearson')
于 2020-02-15T08:57:01.583 回答
0

在 Python 3.10中,在 Python 标准库的模块中增加了相关statistics函数,可以通过导入统计模块直接使用:

import statistics

statistics.correlation(words, views)
于 2021-10-13T21:02:34.407 回答