当前位置: 首页 > 后端技术 > Python

统计科普说说你知道的和不知道的相关系数

时间:2023-03-25 23:42:06 Python

01本篇我们就来说说大家常用的相关系数。相关系数是用来衡量两个变量之间相关性大小的定量指标。比如要判断啤酒和尿布之间是否存在相关性,可以计算这两个变量的相关系数,用相关系数来判断两个变量之间的相关性。相关系数主要有3种:Pearson相关系数、Spearman等级相关系数和Kendallτ相关系数。皮尔逊相关系数大家应该都知道,应该也用过。但是你可能不知道秩相关(Spearman)系数和τ相关(Kendall)系数。本篇就来聊聊这三个系数。02第一个是大家熟悉的皮尔逊相关系数。在讲皮尔逊相关系数之前,我们先讲另一个概念,协方差。协方差用于表示两个变量的总体误差,而方差用于表示仅一个变量的误差。协方差的公式如下:协方差除了表示两个变量的总体误差外,还用来表示两个变量之间的相关性。为什么协方差可以代表两个变量之间的相关性?我们需要从协方差公式开始。从上面的公式可以看出,协方差等于两个变量之差与均值的乘积之和。如果变量X与其均值的大小关系与变量Y完全相同,即变量X和Y的值同时大于均值或小于均值,则此时得到的协方差均为正数,协方差值达到最大值;如果变量X与其均值的关系恰好与变量Y相反,即当变量X大于其均值时,变量Y恰好小于其均值,此时得到的协方差均为负,且协方差值达到最小值;如果变量X的均值和Y变量的Y值之间的关系是部分一致的,则两者的乘积将是正的或负的。此时得到的协方差值介于最大值和最小值之间。X和Y变量的三种情况如下图所示:协方差更容易受到维度的影响。什么是维度?它是一个单位。例如,年龄和身高不是同一个单位。当X和Y变量的维度不同时,两者相差很大时,会对协方差结果产生很大的影响。下图中,左右两边X和Y的趋势基本一致,但是因为维度不同(看纵坐标值),最终计算出的协方差会有很大的不同。下表是上图中使用的数据集。有兴趣的同学可以根据公式自己算一下:那么对于以上不同维度的影响我们应该怎么办呢?显然趋势是一致的,但是计算出的协方差值会有很大的差异。是什么原因造成的,我们会用任何方法来解决。协方差差异大的原因主要是维度不同。然后我们可以对变量进行去维化。如何去维化呢?就是在协方差的基础上划分各个变量的标准差,这样就可以消除不同维度的影响。具体公式如下:上式是相关系数的公式,也就是我们常用的皮尔逊相关系数。系数的值在[-1,1]之间。当值大于0时,两个变量呈正相关,值越接近1,相关性越强;当值小于0时,两个变量呈负相关,值越接近-1,相关性越强。协方差不仅受维度影响,还受异常值影响。如果存在异常值,则平均值会升高或降低,从而导致最终计算结果出现偏差。03说完皮尔逊相关系数,再来看看秩相关(Spearman)系数。我们前面说过,皮尔逊系数很容易受到异常值的影响。数值过高和过低都会导致最终结果出现偏差。有没有办法避免这种情况?答案就是我们这节要讲的秩相关(Spearman)系数。为什么这样可以避免异常值的影响呢?就是因为这个方法没有使用变量的绝对值,而是使用了变量绝对值出现的顺序。顺序是将所有的变量值从小到大排序编号。是不是很有效?秩相关(Spearman)系数的公式如下:04秩相关(Spearman)系数用变量中每个值对应的顺序代替原来的变量值,还有一个类似的秩相关系数,叫做Kendallτrank相关系数。这种相关系数的方法也是使用变量值出现的顺序,但它与斯皮尔曼相关系数略有不同。具体计算方法是:先将变量X按升序排列,然后从第一个开始比较变量Y,再进行两两比较,最后看变量Y的值随着X的增加增加了多少,减少了多少,通过比较增加数和减少数来确定两个变量之间的相关性。如下图所示,我们对变量X进行升序排序后,从第一个值开始对变量Y进行两两比较。需要比较的组合有:(1,3),(1,6),(1,2),(1,5),(1,4),(3,6),(3,2),(3,5),(3,4),(6,2),(6,5),(6,4),(2,5),(2,4),(5,4)和然后我们看看有多少组合大于,有多少组合小于。如果变量Y的值随着X的增加而增加更多而减少,则意味着两个变量的正相关性更强;如果变量Y的值随着X的增加而增加,则decrease的值减小。取值越多,两个变量之间的负相关性越强;如果随着X的增加,变量Y的增加值越接近减少值的个数,说明两个变量之间的相关性比较弱。以上05是对三种不同相关系数的简单介绍。通常,你应该对第一个皮尔逊相关系数了解更多,但严格来说,后两个比第一个更通用,适用于更多场景,尤其是异常值。当然,在使用这些方法的过程中,我们绝对不需要自己手动去计算。你只需要了解其中的原理。这些相关系数的计算在Python中都有现成的函数供大家使用。你们中的一些人应该使用过df.corr()。不知道你有没有看到这个函数里面的参数。该函数中有一个method参数,有三个可选值:'pearson',spearman','kendall',对应上面三个系数的计算。本文就这些,大家可以使用。