计算皮尔逊相关性
Posted
技术标签:
【中文标题】计算皮尔逊相关性【英文标题】:Calculating Pearson correlation 【发布时间】:2012-11-18 20:33:50 【问题描述】:我正在尝试计算两个变量的 Pearson 相关系数。这些变量用于确定邮政编码数量与距离范围之间是否存在关系。所以我想看看邮政编码的数量是否随着距离范围的变化而增加/减少。
我将有一个列表来计算距离范围内的邮政编码数量,而另一个列表将包含实际范围。
可以有一个包含一系列距离的列表吗?或者最好有一个像这样的列表 [50, 100, 500, 1000] ,其中每个元素将包含该数量的范围。因此,例如列表代表最长 50 公里,然后从 50 公里到 100 公里等等。
【问题讨论】:
@Krab 删除了符合 SO 政策的不必要信息,SO 是一个问答网站,所以说我会很感激帮助是多余的,说谢谢你支持并接受答案..如果你想了解更多信息这阅读了常见问题解答并在 meta *** 上四处挖掘 【参考方案1】:使用 scipy:
scipy.stats.pearsonr(x, y)
计算 Pearson 相关系数和用于检验非相关性的 p 值。
皮尔逊相关系数衡量两个数据集之间的线性关系。严格来说,皮尔逊相关性要求每个数据集都是正态分布的。与其他相关系数一样,这个系数在 -1 和 +1 之间变化,0 表示没有相关性。 -1 或 +1 的相关性意味着精确的线性关系。正相关意味着随着 x 的增加,y 也会增加。负相关意味着随着 x 增加,y 减少。
p 值大致表示不相关系统产生的数据集的概率,这些数据集的 Pearson 相关性至少与从这些数据集计算得出的数据集一样极端。 p 值并不完全可靠,但对于大于 500 左右的数据集可能是合理的。
参数:
x : 一维数组
y : 与 x 长度相同的一维数组
返回:
(皮尔逊相关系数, : 2 尾 p 值)
【讨论】:
好的,所以更重要的是 x 和 y 数组的长度相同。然后你正在比较元素 x[i] 和元素 y[i]? 是的。在您的情况下,x 应该等于所考虑的距离,并且 y[i] 应该返回距离 [i] 处的邮政编码数量。要查看 Pearson 的实际计算:***.com/questions/3949226/… 酷,所以 x[i] 可能意味着达到那个距离? 是的,x[i] 可能意味着到那个距离。如果所有距离都是从特定起点计算的,那么 x[i] 只是该距离的一个区域,对应的 y[i] 将是该区域覆盖的邮政编码数量。 确保数组 x 和 y 的平均值为 0。否则会得到不正确的值。【参考方案2】:你也可以使用numpy
:
numpy.corrcoef(x, y)
这将为您提供如下所示的相关矩阵:
[[1 correlation(x, y)]
[correlation(y, x) 1]]
【讨论】:
【参考方案3】:试试这个:
val=Top15[['Energy Supply per Capita','Citable docs per Capita']].rank().corr(method='pearson')
【讨论】:
【参考方案4】:在Python 3.10中correlation()函数被添加到Python标准库的statistics
模块中,可以通过导入统计模块直接使用:
import statistics
statistics.correlation(words, views)
【讨论】:
以上是关于计算皮尔逊相关性的主要内容,如果未能解决你的问题,请参考以下文章