《R语言数据挖掘:实用项目解析》——2.7 列联表、二元统计及数据正态性检验...

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

2.7 列联表、二元统计及数据正态性检验

列联表是由两个或多个分类变量及每个分类所占比例构成的频率表。频率表展示的是一个分类变量,而列联表用来展示两个分类变量。

我们以Cars93数据集为例,来解读列联表、二元统计和数据正态性:

《R语言数据挖掘:实用项目解析》——2.7 列联表、二元统计及数据正态性检验...

前面已给出过汽车的两个分类变量AirBags和Type各自的频率表:

《R语言数据挖掘:实用项目解析》——2.7 列联表、二元统计及数据正态性检验...
《R语言数据挖掘:实用项目解析》——2.7 列联表、二元统计及数据正态性检验...

如上面的代码所示,conTable对象保存了两个变量的交叉表。每个单元的百分比显示在下列代码中。如果需要计算行百分比或列百分比,则需要指定相应参数的值:

《R语言数据挖掘:实用项目解析》——2.7 列联表、二元统计及数据正态性检验...

若要计算行百分比,则应将值设为1。若要计算列百分比,则应将值设为2。代码如下:

《R语言数据挖掘:实用项目解析》——2.7 列联表、二元统计及数据正态性检验...

列联表的概览(summary)用于实现两个分类变量的独立性检验(卡方检验):

《R语言数据挖掘:实用项目解析》——2.7 列联表、二元统计及数据正态性检验...

对所有因子的卡方独立性检验在之前讲过了。卡方近似值有可能因列联表中存在空值或少于5个值而不准确。在之前的例子中,对于汽车类型和安全气囊这两个随机变量,如果一个变量的概率分布不影响另一个变量的概率分布,则说明它们是独立的。对于卡方独立性检验的零假设是两个变量相互独立。因为此检验的p值小于0.05,我们有5%的显著性水平否定两个变量是独立的零假设。所以结论是汽车类型和安全气囊不是相互独立的,即它们相关或依赖。

如果不是两个变量,我们给列联表再加一维会怎么样?取Origin,列联表的代码会显示如下:

《R语言数据挖掘:实用项目解析》——2.7 列联表、二元统计及数据正态性检验...

对所有因子的独立性检验结果执行summay命令可检验零假设:

《R语言数据挖掘:实用项目解析》——2.7 列联表、二元统计及数据正态性检验...

除了之前讨论的绘图方法,R语言中还有一些数值统计检验可用于查看一个变量是否呈正态分布。有个名为norm.test的库可用于执行数据正态性检验,该库中一系列用于检验数据正态性的函数如下所示:

《R语言数据挖掘:实用项目解析》——2.7 列联表、二元统计及数据正态性检验...
《R语言数据挖掘:实用项目解析》——2.7 列联表、二元统计及数据正态性检验...

我们来对Cars93数据集中的Price变量进行正态检验:

《R语言数据挖掘:实用项目解析》——2.7 列联表、二元统计及数据正态性检验...

由以上的检验得知,因所有统计检验的p值都小于0.05,可知Price变量不是正态分布。如果给二元关系再增加一个维度,即变成多元分析。我们来试着理解一下Cars93数据集中马力(horsepower)和车长(length of car)之间的关系:

《R语言数据挖掘:实用项目解析》——2.7 列联表、二元统计及数据正态性检验...

当纳入更多变量时,这就变成多元关系了。下面给出一个Cars93数据集中多变量之间多元关系的示意图:

《R语言数据挖掘:实用项目解析》——2.7 列联表、二元统计及数据正态性检验...
《R语言数据挖掘:实用项目解析》——2.7 列联表、二元统计及数据正态性检验...
《R语言数据挖掘:实用项目解析》——2.7 列联表、二元统计及数据正态性检验...

有多种方法可作为参数传递给关联绘图。它们是"circle""square""ellipse""number""shade""color"和"pie"。