我正在尝试计算两个变量的Pearson相关系数。这些变量用于确定邮政编码的数量与一系列距离之间是否存在关系。所以我想看看邮政编码的数量是否随着距离范围的变化而增加/减少。
我将有一个列表,它将计算距离范围内的邮政编码数量,另一个列表将具有实际范围。
是否可以列出包含一系列距离的列表?或者更好的是有一个像[50,100,500,1000]这样的列表,其中每个元素将包含该数量的范围。例如,列表表示长达50公里,然后从50公里到100公里等等。
答案 0 :(得分:16)
使用scipy:
scipy.stats.pearsonr(x, y)
计算Pearson相关系数和用于测试非相关性的p值。
Pearson相关系数测量两个数据集之间的线性关系。严格来说,Pearson的相关性要求每个数据集都是正态分布的。与其他相关系数一样,这个相关系数在-1和+1之间变化,0表示没有相关性。 -1或+1的相关性意味着精确的线性关系。正相关意味着随着x的增加,y也增加。负相关意味着随着x增加,y减小。
p值粗略地表示不相关系统产生具有Pearson相关性的数据集的概率至少与从这些数据集计算的数据集一样极端。 p值并不完全可靠,但对于大于500左右的数据集可能是合理的。
参数:
x:1D数组
y:1D数组与x
的长度相同返回:
(Pearson的相关系数,: 双尾p值)
答案 1 :(得分:6)
您还可以使用numpy
:
numpy.corrcoef(x, y)
会给你一个看起来像的相关矩阵:
[[1 correlation(x, y)]
[correlation(y, x) 1]]
答案 2 :(得分:0)
尝试:
val=Top15[['Energy Supply per Capita','Citable docs per Capita']].rank().corr(method='pearson')