做数据分析为何要学统计学(3)——相关性分析

相关性分析是量化不同因素间变动状况一致程度的重要指标。在样本数据降维(通过消元减少降低模型复杂度,提高模型泛化能力)、缺失值估计、异常值修正方面发挥着极其重要的作用,是机器学习样本数据预处理的核心工具。

样本因素之间相关程度的量化使用相关系数corr,这是一个取之在[-1,1]之间的数值型,corr的绝对值越大,不同因素之间的相关程度越高——负值表示负相关(因素的值呈反方向变化),正值表示正相关(因素的值呈同方向变化)。

样本数据的相关系数计算有多种算法,最常用的是Pearson相关系数,还有Spearman相关系数和Kendall相关系数。当涉及相关性分析的因素的标准差为0时,Pearson相关系数就无法使用了,此时还可以考虑向量夹角余弦来衡量。

1.Pearson相关系数

相关系数是最早由统计学家卡尔·皮尔逊设计的统计指标,是研究变量之间线性相关程度的量。计算公式如下:

Numpy和Pandas都提供了Pearson相关系数的计算函数,分别为np.corrcoef()和Pandas.corr(),使用非常方便。如下例:

某公司2018年季度耗电量和销售收入如下:

  • 耗电量:1200,2000,1800,1500,2100
  • 销售收入:180,250,270,220,280

试分析单位耗电量产生的销售收入以及耗电量与销售收入是否相关。

我们使用Numpy.corrcoef()来计算两组变量的相关系数。

做数据分析为何要学统计学(3)——相关性分析_第1张图片

主对角线的值是两个变量的自相关系数,自然都是1,次对角线的值就是两组数据的Pearson相关系数值。我们可以看出耗电量和销售收入正相关性还是很高的,用Seaborn的回归图也能比较直观的看出两组数据的相关水平。如下图:

做数据分析为何要学统计学(3)——相关性分析_第2张图片

数据点比较紧密的集中在直线附近,这表明两组数据的相关性很高。

2.向量夹角余弦

把两组数据作为两个1维向量,通过计算两个向量的夹角余弦值,也可以衡量数据的相关程度,其取值范围也在[-1,1]之间。向量的夹角余弦值也称为向量余弦距离或向量相似度,其公式如下:

做数据分析为何要学统计学(3)——相关性分析_第3张图片

我们来看上一个案例的余弦相关系数的计算结果,同样也非常高

3.Spearman相关系数

Spearman相关系数又称秩相关系数,是利用两变量的秩次大小作相关分析,对原始变量的分布不作要求,也没有线性要求。

Scipy中的spearmanr()函数可以帮助我们计算Spearman相关系数。

Spearman相关系数有如下特点:

  • 属于非参数统计方法,适用范围更广。
  • 对于服从Pearson相关系数的数据亦可计算Spearman相关系数,但统计效能要低一些。
  • 秩次:样本数据正向排序后的序号(从1开始)

我们构造两组样本数据,它们之间的非线性关系很高。我们来看一下Pearson相关系数和Spearman相关系数的差异。

做数据分析为何要学统计学(3)——相关性分析_第4张图片

做数据分析为何要学统计学(3)——相关性分析_第5张图片

可以看出对于非线性相关的数据,Spearman相关系数要比Pearson相关系数更显著。

4.Kendall相关系数

肯德尔秩相关系数也是一种秩相关系数,不过它所计算的对象是分类有序/等级变量,如质量等级、考试名次等。其特点为:

  • 1)如果两组排名是相同的,系数为1 ,两个属性正相关。
  • 2)如果两组排名完全相反,系数为-1 ,两个属性负相关。
  • 3)如果两组排名是完全独立的,系数为0。

如下例查看身高和体重的排名是否相关:

以下是上述数据的计算过程

做数据分析为何要学统计学(3)——相关性分析_第6张图片

整体上,我们发现体重与身高大多数情况下有较强的相关性

推荐自编课程《零基础学python数据分析》
推荐自编简明预测分析教程(Python版)

你可能感兴趣的:(机器学习)