深入浅出R语言数据分析
上QQ阅读APP看书,第一时间看更新

3.4 数据相关性

数据分析的任务之一是分析数据之间的关系,衡量数据之间相关关系的最常用的指标是皮尔森相关系数,其次有Kendall相关性系数和斯皮尔曼相关性系数,后两者是基于秩的相关系数。

在R中,计算相关系数的函数是cor( ),进行相关系数检验的函数是cor.test( ),其使用语法如下。

xy分别是数值型变量,method参数用于指定计算的相关系数的种类。这里以iris数据集为例,对数据集中的Sepal.Length变量和Sepal.Width变量进行相关性分析。

计算出Sepal.Length变量和Sepal.Width变量之间的相关系数为0.11,进一步进行相关性检验,以判断二者的相关性是否显著:

从相关性检验结果可以看出,p-value是0.1519,不能拒绝原假设,则认为这两个变量的相关性为0。然后进行Kendall相关性检验:

从相关性检验结果可以看出,p-value是0.1829,不能拒绝原假设,则认为这两个变量的Kendall 相关性为0。然后进行斯皮尔曼相关性检验:

从相关性检验结果可以看出,p-value是0.04137,不能拒绝原假设,则认为这两个变量的斯皮尔曼相关性不为0。

相关性矩阵显示一个数据集中所有变量之间的相关性。在R中,corrplot提供了相关性矩阵可视化的方法。这里用到的数据集是mtcars,这个数据集是R自带的一个数据集,可以直接使用。corrplot包中的corrplot( )函数用于绘制相关系数图,在corrplot( )函数中传入一个相关系数矩阵,则会返回对应的相关系数图。相关系数图如图3.16所示。

图3.16 相关系数图

图3.16中的每一个格子代表两个变量的相关系数,颜色越深,说明其相关性越强。如果希望相关系数图能够显示具体的相关系数,则只需要修改相应的参数,将method设置为number,则相关系数图如图3.17所示。

图3.17 相关系数图

在图3.17所示中,x轴和y轴分别表示不同的特征,并且图中每一个单元表示数据之间的相关系数的具体值,其数字值越大,表示相关性越强。

Performance Analytics包提供了另外一种对于相关系数矩阵的展现方式,其不仅会绘制变量的相关系数图,而且会分析特征的分布,以及特征之间的散点图。使用chart.Correlation进行绘图,第一个参数是需要进行可视化的数据集,第二个参数histogram是一个逻辑值,用于表示是否绘制特征的直方图。相关系数矩阵如图3.18所示。

在图3.18中,x轴和y轴分别表示不同的特征。从图3.18中可以观察到,这种展现方式将图分成了3个部分,左下角是数据之间的散点图,对角线是数据之间的直方图,右上角是数据之间的相关系数。这种展现方法展示了数据的更多信息。

图3.18 相关系数矩阵