我正在尝试计算两个变量的 Pearson 相关系数。这些变量用于确定邮政编码数量与距离范围之间是否存在关系。所以我想看看邮政编码的数量是否随着距离范围的变化而增加/减少。
我将有一个列表来计算距离范围内的邮政编码数量,而另一个列表将具有实际范围。
可以有一个包含一系列距离的列表吗?或者最好有一个像 [50, 100, 500, 1000] 这样的列表,其中每个元素将包含该数量的范围。例如,列表代表最长 50 公里,然后从 50 公里到 100 公里,依此类推。
我正在尝试计算两个变量的 Pearson 相关系数。这些变量用于确定邮政编码数量与距离范围之间是否存在关系。所以我想看看邮政编码的数量是否随着距离范围的变化而增加/减少。
我将有一个列表来计算距离范围内的邮政编码数量,而另一个列表将具有实际范围。
可以有一个包含一系列距离的列表吗?或者最好有一个像 [50, 100, 500, 1000] 这样的列表,其中每个元素将包含该数量的范围。例如,列表代表最长 50 公里,然后从 50 公里到 100 公里,依此类推。
使用 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 值)
您还可以使用numpy
:
numpy.corrcoef(x, y)
这会给你一个相关矩阵,如下所示:
[[1 correlation(x, y)]
[correlation(y, x) 1]]
尝试这个:
val=Top15[['Energy Supply per Capita','Citable docs per Capita']].rank().corr(method='pearson')
在 Python 3.10中,在 Python 标准库的模块中增加了相关statistics
函数,可以通过导入统计模块直接使用:
import statistics
statistics.correlation(words, views)