计算Pearson相关性

时间:2012-11-30 15:37:51

标签: python numpy statistics scipy

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

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

是否可以列出包含一系列距离的列表?或者更好的是有一个像[50,100,500,1000]这样的列表,其中每个元素将包含该数量的范围。例如,列表表示长达50公里,然后从50公里到100公里等等。

3 个答案:

答案 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')