新知一下
海量新知
6 0 8 4 2 7 3

统计分析(以R语言为工具) | 第四章 数据描述与可视化(上)

狗熊会 | 数据产业高端智库 2021/11/30 09:15

章节引入

描述分析是对数据的有效展示,展示形式包括统计表格和统计图形。描述分析的目的是展示规律、发现异常,实现对数据特征的汇总和总结。

历史上有这样一幅著名的图,它是克里米亚战争中一位名叫南丁格尔的护士绘制的扇状玫瑰饼图。该图展示了她所管理的野战医院里不同季节死于各种疾病的病人人数变化,如图 4-1所示。这幅图让英国政府直观地看到每年死于感染的士兵数(灰色区域)比死于战场(斜线区域)和其他原因(黑色区域)的士兵数要多得多。为抵抗感染,政府开始制定措施改善战地的卫生条件,这一举措大大降低了士兵的死亡率,因此这幅图被称为拯救生命的图形,这也是较早使用统计图形传达信息的例子。

描述分析在整个统计分析中占据重要地位。建模前,它是观察数据、发现问题、识别规律与异常的有力武器;建模后,它是总结规律、展示结论、传递信息的生动方式。本章将讲述如何对数据进行描述分析,具体包括制作统计表格及数据可视化分析。

新知达人, 统计分析(以R语言为工具) | 第四章 数据描述与可视化(上)

案例引入

背景介绍

近年来,网络小说市场逐渐繁荣。第47次《中国互联网络发展状况统计报告》显示,截至2020年12月,我国网络文学用户规模达4.60亿,2020年中国网络文学市场规模达288.4亿元,预计2021年中国网络文学市场规模将达到236亿元。

以网络小说作者天蚕土豆的作品《斗破苍穹》及忘语的《凡人修仙传》等为首的一系列网络小说尤为火爆,它们在某平台上的点击量已经突破 1 亿大关。究竟有哪些因素使得这些小说如此受欢迎?本章将使用一个网络小说数据集作为案例进行描述分析,来探究这一问题。

数据介绍

该数据集收集了1549本排名较高的网络小说信息,其中包含《斗破苍穹》《凡人修仙传》等多部热门小说的内容简介、点击量、评分等信息。小说数据集的变量说明如表4-1所示。

这里我们关心的核心指标是小说点击量,它对小说而言至关重要,代表了一部小说的热度。在所收集的小说数据集中,最大值《斗破苍穹》的点击量接近1.5亿,而最小值《鸣的大冒险》的点击量不到1.3万,可谓差距悬殊。那么,如何分析哪些因素与小说点击量息息相关?想要探索这个问题的答案,需要对数据进行描述分析。

新知达人, 统计分析(以R语言为工具) | 第四章 数据描述与可视化(上)

本章难点

(1)了解并掌握变量说明表与分组统计表的含义,能够使用统计表格对数据特征进行汇总描述。

(2)熟练掌握各种统计图形在描述统计数据中的应用,包括柱状图、饼图、箱线图、散点图、折线图、直方图、相关系数图;能够在实际案例中根据分析需求选择合适的统计图形。

(3)了解并掌握R语言数据可视化相关知识,包括基础可视化方法与ggplot2包的应用,灵活实现各种图形的展示。

(4)了解交互可视化的优点与用途,能够在R语言中实现交互可视化作图。

4.1 统计表格

统计表格是对数据特征进行汇总描述,并通过概括总结形成的表格。数据的收集、整理、描述和分析过程中,都需要用到统计表格。本节将介绍两种重要的统计表格:变量说明表及分组统计表。

4.1.1变量说明表

变量说明表是对数据集中的每一列变量进行描述的表格。根据变量类型的不同,可将变量分为定性变量(也称为分类变量、类别变量)和定量变量(也称为数值型变量)。以小说数据为例,所谓定性变量,就是小说名称、小说类型、作者等描述一个事物的特性的变量。定性变量取值只能是离散的, 如“唐家三少”“科幻小说”等;而定量变量则是取值连续的变量,如小说点击量、总字数、评分、评论数等。对于定性变量,需要关注它的取值水平和频数统计;对于定量变量,需要关注它的单位及取值范围。因此,在制作变量说明表时,需要对变量描述的内容进行适当的梳理和归类,以便后续研究。小说数据的变量说明如表4-1所示。

表4-1给出了变量的基本描述:对于定性变量,关注其主要水平及对应频数;对于定量变量,关注其取值范围、最大值、最小值、中位数等描述性统计量。这些变量描述指标在 R 语言中可以通过summary()函数直接获取。

新知达人, 统计分析(以R语言为工具) | 第四章 数据描述与可视化(上)

从上例可以看到,对一个数据的多个列使用summary()函数时,对于定量变量,summary()函数将返回该列数据的最小值、下四分位数、中位数、均值、上四分位数、最大值、缺失项等描述统计量;而对于定性变量,summary()函数将返回该列数据的不同水平中频数最高的6个水平和其余水平的频数。

4.1.2分组汇总统计表格

当定性变量包含多个水平时,每个水平自成一组。例如,在小说数据中,小说类别包括都市小说、二次元小说等13个类别。分组统计表按照各个类别进行汇总,描述类别内部各个变量的特征。通过这种方式,可以比较各个类别之间的差异,输出所关心的汇总报表。

在R语言中,可以利用dplyr包来制作分组统计表。通过group_by()函数,可以很方便地对数据进行分组汇总。例如,如果要统计各类小说的平均评分及各类小说的最大评论数,可以通过以下代码实现。

新知达人, 统计分析(以R语言为工具) | 第四章 数据描述与可视化(上)

通过上例分组统计表可以看到,按照小说类型分类,“军事小说”的平均评分最高,而“武侠小说”评分最低。除此之外,也可以将变量的方差、中位数、上下四分位数等指标放入表格中进行进一步对比。

4.2 数据可视化基础

4.2.1统计图形

统计表格是以表格的形式展示汇总的统计指标,但从直观性而言,使用统计图形更为合适。基本统计图形包括柱状图、饼图、箱线图、散点图、折线图和直方图,如图4-2所示。针对不同的变量类型,需要用到不同的统计图形。

不同统计图形展示的信息有所差异。在绘制统计图形时,需要先明确待描述变量的基本信息,具体而言,就是需要明确该变量是单变量还是多变量,是定性变量还是定量变量。

基本统计图形可描述的变量信息如表4-2所示。实际使用时在基本用法的基础上还有一些变化形式。本节将介绍各个统计图形的定义、作用及实现方法。

新知达人, 统计分析(以R语言为工具) | 第四章 数据描述与可视化(上)

新知达人, 统计分析(以R语言为工具) | 第四章 数据描述与可视化(上)

4.2.2柱状图

柱状图是用柱子高低来表示取值大小的一种统计图形。常见的柱状图有频数柱状图、均值柱状图、分组柱状图与堆积柱状图。

1. 频数柱状图

频数柱状图展示的是定性变量各水平的频数统计,柱子高度代表每个水平频数的高低。例如,在小说数据中,小说类型这一定性变量对应13个水平,如果要展示频数最高的前5个小说类型对应的频数,可以通过如图4-3所示的频数柱状图展示。

图4-3中,频数最高的小说类型是“都市小说”,其次是“科幻小说”,接着是“二次元小说”“玄幻小说”和“历史小说”,后三者的频数相差不大。

新知达人, 统计分析(以R语言为工具) | 第四章 数据描述与可视化(上)

在R语言中,可以使用barplot()函数完成柱状图绘图。它的语法结构是barplot(height, names.arg),其中height是柱子的高度,names.arg是柱子的名称。生成如图4-3所示的频数柱状图代码如下。

新知达人, 统计分析(以R语言为工具) | 第四章 数据描述与可视化(上)

2. 均值柱状图

柱状图并不仅用于展现频数,也可以展示分组后各类别的均值等指标,这种柱状图称为均值柱状图。例如,在小说数据中,要展示不同类别的小说点击量均值,可使用均值柱状图。

在R语言中,绘制均值柱状图需要分两步:首先使用dplyr包的一系列函数,求得所关心的变量均值;然后对结果使用 barplot()函数进行绘图。为使图片更美观,这里将柱子由高到低排序,可使用arrange()函数实现,代码如下,绘制的均值柱状图如图4-4所示。

新知达人, 统计分析(以R语言为工具) | 第四章 数据描述与可视化(上)

如图4-4所示的均值柱状图可以清晰地展示各类小说点击量的高低:第一名是“奇幻小说”,其点击量约是第二名“灵异小说”的两倍;随后的3类小说点击量差异则不是特别明显。另外,不仅是均值柱状图,还可以尝试通过修改参数,来制作中位数、众数、方差等描述统计量的柱状图。

3. 分组柱状图与堆积柱状图

对两个或多个定性变量绘制柱状图可使用分组柱状图或堆积柱状图。分组柱状图将不同水平的不同类别并列放入同一个横轴中,以颜色来区分类别(如图4-5左图所示);而堆积柱状图则将同一水平的不同类别堆积在一个柱子中,同样以颜色来区分类别(如图 4-5右图所示)。分组柱状图或堆积柱状图可以用于刻画交叉分组下的指标差异情况。例如,不同小说类别中 VIP作品和大众作品的频数差异如图4-5所示。

新知达人, 统计分析(以R语言为工具) | 第四章 数据描述与可视化(上)

分组柱状图和堆积柱状图都可通过barplot()函数实现,具体实现方法请参考书中内容。

4.2.3饼图

饼图主要用于表示总体中各组成部分所占的比例。在绘制饼图时,总体中各部分所占的百分比用圆内的各个扇形面积表示,这些扇形的中心角度,是各部分所占百分比乘以360°得到的角度。饼图和柱状图一样,都是针对离散型数据的统计图。柱状图多用来展示频数,而饼图多用于展示比例。

在 R 语言中画饼图的核心函数是 pie(),其语法结构是 pie(numerical vector, labels),也就是要设定画饼图的数字向量(各类别的频数)及每块扇形的标签,其他诸如定义颜色、标题等的参数与barplot()函数中用法相同。绘制出图4-6的代码请参考书中内容。

新知达人, 统计分析(以R语言为工具) | 第四章 数据描述与可视化(上)

画饼图所需要的技巧是计算百分比及如何展示各块扇形的标签。另外,通过合并小类,可以避免一张饼图上出现过多占比较小的部分,使饼图更加美观、清晰。

4.2.4直方图

直方图是用于展示定量变量分布形态的一种统计图形。直方图能够直观地展现数据的分布特征(对称分布或偏分布)及异常值,是清洗和描述数据的重要工具。直方图的横轴是实数轴,它被分成了许多连续的区间;纵轴代表频数或密度。

R语言中绘制直方图的函数是hist()。

新知达人, 统计分析(以R语言为工具) | 第四章 数据描述与可视化(上)

如果想展示更全面的信息,则需要对hist()函数中的参数进行调整。例如,通过设置breaks可调整直方图的组数或横轴分割点。设定不同组数时,直方图展示的数据细节也有所不同。通过以下代码可对小说字数(取对数)的分布进行展示,代码执行结果如图4-7所示。

新知达人, 统计分析(以R语言为工具) | 第四章 数据描述与可视化(上)

新知达人, 统计分析(以R语言为工具) | 第四章 数据描述与可视化(上)

通过对比观察可以看出,图4-7的左图简单直观,可一眼看出小说的数量随着字数增多而逐渐减少,大部分小说在200万字以内;右图则展示了更多的细节,我们不仅可以观察到总字数在100万以内的小说数量最多,还可以看到200万字之后仍有几个小高峰。可见,不同组数的直方图可以传达出不同的细节。

4.2.5折线图

折线图是以折线的上升或下降来表示统计数量增减变化的统计图,一般用于反映变量随时间变化的特征。折线图不仅可以表示数量的多少,还可以反映数据的变化趋势。

对于时间序列数据,折线图是“观趋势看走向”的有效工具。时间序列图的典型特征是带有时间标签,因此折线图的横轴是按照先后顺序排列的时间点。

在R语言中画折线图很简单,如果数据已经是R语言中的某种数据格式,那么直接使用plot(x)函数即可。下面示例采用R语言中自带数据集AirPassengers进行展示,该数据集记录了美国从1949年 到1960年每个月的航空乘客数,绘制的折线图如图4-8所示。

新知达人, 统计分析(以R语言为工具) | 第四章 数据描述与可视化(上)

新知达人, 统计分析(以R语言为工具) | 第四章 数据描述与可视化(上)

对于时间序列数据,我们关注它的趋势、峰值、周期性、波动幅度等指标。由图 4-8可知,乘客数每年在 8月和 9月达到峰值,乘客数虽然有所波动,但仍在稳步上升,并且一年内的波动幅度也有所增加。

上面的 AirPassengers 数据在 R语言中已经被处理为时间序列数据格式。对于普通向量,需要将其转换为 R语言中的时间序列数据类型。如果数据是年、月或季度数据,可以使用 tz()函数直接加以转化;如果数据是天或不等间隔的时间序列数据,可以选择另外一个包zoo来生成时间序列数据,这里以某电视剧的百度搜索指数为例,绘制的折线图如图4-9所示。

生成时间序列数据以及绘制图4-9中的折线图代码实现请参考书中内容。

新知达人, 统计分析(以R语言为工具) | 第四章 数据描述与可视化(上)

从图 4-9可以看到,该剧自开播以来,搜索指数一路飙升,4月 9日左右达到顶峰,搜索指数高达410万,4月 9日之后每天的搜索指数稳定在 350万~400万,说明这段时间的搜索主要来自日常追剧的固定粉丝。

从简单的折线图中,可以得到关于时间序列的大量信息。当然,折线图也不仅仅应用于单变量,也可以应用于多变量,即将多个时间序列放入同一时间轴的折线图中,以此比较各个变量的变化趋势。

4.2.6箱线图

箱线图主要用于描述定量变量在定性变量各个水平上的分布差异。箱线图的基本构成如图4-10所示。

新知达人, 统计分析(以R语言为工具) | 第四章 数据描述与可视化(上)

对于箱线图中的每个箱子,主要关注 3个方面:一是箱子中位数的大小,这反映了定量数据的一般水平;二是箱子上下四分位数之间的差(箱子的宽度,又称为IQR),这反映了数据的波动程度;三是箱子左右竖线以外的点,这反映了数据中可能存在的异常点,其中,左右竖线的计算方式分别为上四分位数+1.5IQR及下四分位数-1.5IQR。在R语言中,可以通过boxplot()函数绘制箱线图,绘制小说总字数箱线图的代码如下,效果如图4-11所示。

新知达人, 统计分析(以R语言为工具) | 第四章 数据描述与可视化(上)

新知达人, 统计分析(以R语言为工具) | 第四章 数据描述与可视化(上)

有时箱线图展示的变量偏度过大(如分布极端不对称、非正态分布或出现异方差现象),此时箱线图可能非常“扁”,难以看出数据的分布特征,这时可以尝试使用取对数的方法对数据进行处理,重新作图。如图4-12所示的小说评论数箱线图,经过取对数调整后,分布更加对称美观。

新知达人, 统计分析(以R语言为工具) | 第四章 数据描述与可视化(上)

在实际数据分析中,一般不对单一定量数据作箱线图,而是对定性变量各个水平作分组箱线图,比较各组数据的分布情况。例如,想要对比VIP小说和大众作品哪个热度更高,可以使用分组箱线图进行比较。VIP小说与大众作品的点击量和评论数的差异如图4-13所示,总体看来,公众作品无论是点击量还是评论数都更胜VIP作品。

新知达人, 统计分析(以R语言为工具) | 第四章 数据描述与可视化(上)

图 4-13 中的分组箱线图仍然可以通过 boxplot()函数实现,只需在代码中设定组别变量(小说性质)即可,具体实现方法请参考书中内容。

4.2.7散点图

散点图(scatter diagram)是用二维坐标展示两个连续变量之间关系的一种图形。散点图用坐标横轴代表变量x,纵轴代表变量y,每组数据在坐标系中用一个点表示,n个样本点就形成了n个散点。散点图通常用于刻画两连续变量之间的相互关系。

散点图为两变量的相关方向及相关程度提供了直观的阐释。4种基本相关关系(正线性相关、负线性相关、非线性相关和不相关)的散点图如图4-14所示。

在R语言中,可以利用plot()函数来绘制散点图,绘制评论数与点击量散点图的代码如下,绘制的散点图如图4-15所示。

从图 4-15中可以看出,小说评论数与点击量之间大体呈现正相关关系。但是,现实中的散点图往往比较散乱,不易观察出规律,遇到这种情况,可以考虑把某个连续变量离散化,也就是按照取值范围分成离散变量,再用分组箱线图展示两变量相关关系。例如,可以将总点击量离散化,再与评论数一起绘制箱线图,如图4-16所示,这样就更容易看出这种正相关关系。

4.2.8相关系数图

相关系数图是对多变量相关关系矩阵的可视化展示。两变量间的相关系数的绝对值越大,说明两组变量的相关性越强。相关系数越接近 1,说明正向相关性越强;相关系数越接近-1,说明负向相关性越强。如图 4-17所示,p维变量的相关系数图由 p × p个格子组成,每一个格子中的元素代表了对应两变量之间的相关系数大小。相关系数越大,对应的圆形越大,颜色越深。同时,正负相关性可通过不同颜色区分。在R语言中,可使用corrplot包来绘制相关系数图,代码实现请参考书中内容。

在图4-17中颜色最深的一组变量表示点击量和评论数高度正相关,其余的几组变量之间则只有较弱的相关关系。相关系数图相比散点图更加简洁直观,在变量个数较多时更加实用。

更多“统计分析”相关内容

更多“统计分析”相关内容

新知精选

更多新知精选