2.6 散点图
在此之前,我们所讨论的内容都是单个时间序列的可视化。此外,多个时间序列的可视化也是非常有用的。 图 2.7 分别展示了两个时间序列:2014年澳大利亚维多利亚州每半小时的用电量(以千兆瓦为单位)和温度(以摄氏度为单位)。温度选取的是维多利亚州最大城市墨尔本的当地温度,而用电量是整个维多利亚州的用电量。

图 2.7: 2014年澳大利亚维多利亚州每半小时的用电量和温度
我们可以在一张图上绘制两个时间序列的散点图来研究用电量和温度之间的关系。
qplot(Temperature, Demand, data=as.data.frame(elecdemand)) +
ylab("用电量 (千兆瓦)") + xlab("温度 (摄氏度)")+
theme(text = element_text(family = "STHeiti"))+
theme(plot.title = element_text(hjust = 0.5))

图 2.8: 2014年澳大利亚维多利亚州每半小时的用电量对温度的散点图
这个散点图可以很好的帮助我们理解变量之间的相互关系。从图中我们可以看出,当温度很高时,人们会大量的使用空调进行降温,进而导致用电量随之增加;当温度很低时,人们会使用空调取暖,也会使得用电量一定程度上增加。
相关性
我们经常会用 相关系数 衡量两个两个变量之间的相关强度。假如已知两个变量\(x\)和\(y\),那么它们之间的相关系数为 \[ r = \frac{\sum (x_{t} - \bar{x})(y_{t}-\bar{y})}{\sqrt{\sum(x_{t}-\bar{x})^2}\sqrt{\sum(y_{t}-\bar{y})^2}}. \]
\(r\)的值始终在-1到1之间。当两个变量完全负相关时,\(r\)值为-1;当两个变量完全正相关时,\(r\)为1.图 2.9 分别展示了不同相关强度的例子。

图 2.9: 不同相关强度的例子
需要注意的是,相关系数仅仅衡量了变量之间的线性关系,并且有时会导致错误的结果。例如,在图 2.10中,所有例子的相关系数均为0.82,但是它们有着完全不同的形态。 这表明,在分析变量之间关系时,不仅要看相关系数值,而且要关注生成的图形。

图 2.10: 所有示例的相关系数均为0.82。数据来 FJ Anscombe (1973) Graphs in statistical analysis. American Statistician, 27, 17–21.
在图 2.8中,用电量和温度之间的相关系数仅为0.2798,但并不代表用电量和温度之间存在很强的非线性关系。
散点图矩阵
当所分析的数据有多个变量时,将每个变量与其他变量进行比较也很有意义。如图2.11所示,表示澳大利亚新南威尔士五个地区的季度游客人数。
autoplot(visnights[,1:5], facets=TRUE) +
ylab("每季度的游客人数(百万)")+
theme(text = element_text(family = "STHeiti"))+
theme(plot.title = element_text(hjust = 0.5))

图 2.11: 澳大利亚新南威尔士不同地区的季度游客人数
如图 2.12所示,我们可以绘制出它们的散点图矩阵。
1:5] %>% as.data.frame() %>% GGally::ggpairs()
visnights[,#> Registered S3 method overwritten by 'GGally':
#> method from
#> +.gg ggplot2

图 2.12: 澳大利亚新南威尔士五个地区的季度游客人数的散点图矩阵
对于图中的每一块区域,其行变量是垂直轴行的变量,列变量是水平轴的变量。有许多设置可以控制生成的图形的形态。在默认设置中,相关系数在图的右上方显示,散点图在左下方显示,对角线上是密度曲线。
我们可以通过散点图矩阵快速查看所有变量之间的相关关系。在本例中,由图中第二列数据可知,新南威尔士州北部海岸游客与新南威尔士南部海岸游客之间存在强烈的正关系,而新南威尔士州北部海岸的游客与新南威尔士内陆游客之间几乎没有相关关系。同时,我们可以通过散点图矩阵检测到异常值。由于2000年悉尼奥运会,新南威尔士大都会地区存在异常大的客流量。