《R语言数据挖掘:实用项目解析》——第2章,第2.1节一元分析

本节书摘来自华章出版社《R语言数据挖掘:实用项目解析》一书中的第2章,第2.1节一元分析,作者[印度]普拉迪帕塔·米什拉(Pradeepta Mishra),更多章节内容可以访问云栖社区“华章计算机”公众号查看

第2章
汽车数据的探索性分析
探索性数据分析是数据挖掘中不可或缺的一环。它包括数据集中变量的数值描述和图形化表示,这将使数据集变得易于理解并有助于用户快速得出结论。对数据集有一个初步的理解很重要,比如该选择什么样的变量进行分析、不同变量之间的关联等。创建交叉二维表有助于理解分类变量之间的关系,并对数据集实施经典统计检验来验证对可测试数据的种种假设。
通过本章的学习,读者应了解以下知识点:
如何使用基本统计获悉单个和多个变量的属性。
如何计算两个或多个变量之间的相关性和关联性。
执行多元数据分析。
任意数据集的各种概率函数的统计特性。
对数据进行统计检验,从而做出假设。
对比两个或多个样本。

2.1 一元分析
要实现一个数据集的一元统计,我们需要按照两类方法进行:一种是针对连续型变量的方法;另一种是针对离散或分类变量的方法。对连续型变量的一元统计包括数值测度,例如平均数(平均值)、方差、标准差、分位数、中位数等。平均值代表数据集中的每一个点,方差表示单个数据点与平均值(即分布中心)之间的波动/偏离。分位数也称作百分位数,即将分布切分为100等分。第10个百分位数等同于第一个十分位数,第25个百分位数等同于第1个四分位数,第75个百分位数等同于第3个四分位数。
此外还有集中趋势测度,用以理解一个数据集的一元特性。中位数和众数描述的是位置,但仍可以用众数来检查一个连续型变量是否是一个双峰值序列。若是双峰值序列,计算分布中心会很困难。计算有序数据或等级数据的平均值时,将其表示出来是个好主意,建议用中位数或者众数来表示一元统计结果。通过比较平均值、中位数、众数与偏度、峰度以及标准差,将得到一个关于数据分布形状的清晰描绘。所有这些关于集中趋势测度和离中趋势测量都可以通过单行命令算得,也可以用如下多行独立的代码。
这里,我们将用到diamonds.csv和Cars93.csv两个数据集。它们都是R中的内置库,作演示之用。
让我们在R中加入几行代码,以便更好地了解这两个数据集:


《R语言数据挖掘:实用项目解析》——第2章,第2.1节一元分析

Cars93.csv数据集包含之前提到的变量名,它有27个变量和93条观测记录。变量类型可用str()函数输出:


《R语言数据挖掘:实用项目解析》——第2章,第2.1节一元分析


《R语言数据挖掘:实用项目解析》——第2章,第2.1节一元分析

一些连续型变量(Price、MPG.city和MPG.highway)和离散型变量(Type、AirBags和Man.trans.avail)的一元统计计算在这里显示。你可以练习余下的变量,以便全面了解这个数据集。
mean()函数用于计算算数平均值,median()函数用于计算中位数,range()函数用于计算由min()和max()组成的向量。var()函数用于计算样本方差,cor()函数用于计算两个向量之间的相关性。rank()函数用于计算得到一个由向量中值的排位组成的向量。quantile()函数用于算得一个向量,该向量包括原向量的最小值、下四分位数、中位数、上四分位数及其最大值。
对单变量使用summary()函数的代码如下:


《R语言数据挖掘:实用项目解析》——第2章,第2.1节一元分析

现在我们来看在数据框上使用summary函数所得到的输出结果。如果是一个连续型变量,计算的是集中趋势测度;如果是一个分类变量,则计算的是分类频数。代码如下:


《R语言数据挖掘:实用项目解析》——第2章,第2.1节一元分析


《R语言数据挖掘:实用项目解析》——第2章,第2.1节一元分析

对于RPM、horsepower等的连续型变量,summary命令输出的是最小值、第1个四分位数、平均值、中位数、第3个四分位数和最大值。单变量统计分类变量,如car type、airbags、manual transmission availability等,输出的是频数表。频数最高的类被称作众数类。
有fivenum()和describe()函数也可产生类似的概括统计,它们比summary函数提供了更多的输出信息:


《R语言数据挖掘:实用项目解析》——第2章,第2.1节一元分析

Hmisc库中的describe()函数可用于加深对数据描述的了解:


《R语言数据挖掘:实用项目解析》——第2章,第2.1节一元分析


《R语言数据挖掘:实用项目解析》——第2章,第2.1节一元分析

apply()函数也可用于进行一元概括统计。一元统计描绘了分布的形状:


《R语言数据挖掘:实用项目解析》——第2章,第2.1节一元分析

为了理解一个变量分布的形状,我们可以利用偏度和盒状图,也可以在库(e1071)中调用skewness函数:

我们可以创建自定义函数,再结合apply()函数来测量偏度:


《R语言数据挖掘:实用项目解析》——第2章,第2.1节一元分析

偏度是就对称分布的一种测度,其值体现了一个分布是正偏斜还是负偏斜。若偏度值为0或接近0,则表明分布是对称的,且平均值、中位数和众数完全相等;若偏度值小于0,则表明平均值小于众数,因为正态分布的极端值都偏向了负数;若偏度值大于0,则表明平均值大于众数,因为正态分布的极端值集中在右边部分。因为离群点的识别与移除都非常重要,所以测量偏度将对此有益,但这不是鉴别离群点的唯一方法。其他方法还有盒状图以及自定义的异常监测公式。如果观察之前那三个变量,可以发现price、MPG.city和MPG.highway的偏度都大于0,这表示离群点可能在价格正态分布曲线的正数侧。为了验证离群点的存在,我们可以画出盒状图并输出离群点。

上一篇:大话Linux内核中锁机制之原子操作、自旋锁【转】


下一篇:《R语言数据挖掘:实用项目解析》——第2章,第2.2节二元分析