相关变动是两个或多个变量以相关的方式共同变化所表现出来的趋势。查看相关变动最好的方式是将两个或多个变量间的关系以可视化的方式表现出来。如何进行可视化表示取决于相关变量的类型。
分类变量和连续变量
我们经常需要探索连续变量的分布,这种分布按照一个分类变量的值可以分为几个组。但geom_freqpoly()
的默认外观并不太适合这种比较,因为高度是计数给出的,如果一个观测值的数量明显少于其他组的话,就很难看出差别。比如,我们探索diamonds数据集中钻石的价格是如何随质量而变化的。
ggplot(diamonds)+geom_freqpoly(aes(price,color=cut),binwidth = 500)
image.png
总体来看,各组的数量差别太大了,很难看出分布上的差别。
ggplot(diamonds)+geom_bar(aes(cut))
为了让比较变得容易,需要改变y轴的显示内容,不在显示计数,而是显示密度。密度是对计数的标准化,这样每个频率多边形下边的面积都是1。
ggplot(diamonds,aes(price,..density..))+geom_freqpoly(aes(color = cut),binwidth=500)
image.png
令人惊讶的是,图片显示出,一般钻石(质量最差)的平均价格是最高的。
如果用分类变量显示连续变量,可以使用箱线图。每张箱线图包括以下内容:
- 一个长方形箱子,下面的边表示分布的第25个百分位数,上面的边表示分布的第75个百分位数,上下两边的距离称为四分位距。箱子中部的横线代表分布的中位数,这三条边可以表示数据的分散情况,明确数据是中位数对称的还是偏向一侧。
- 圆点表示落在箱子上下两边1.5倍四分位距外的观测,这些离群点就是异常值,因此单独画出。
-
箱子上下两边延伸出的线可以到达分布中最远的非离群点处。
image.png
使用geom_boxplot()
查看切割质量分类的价格分布:
ggplot(diamonds,aes(cut,price))+geom_boxplot()
image.png
虽然看不出太多分布的信息,但箱线图更加紧凑,因此可以更容易的比较多个类别。同样的,我们可以从箱线图中看出,质量更好的钻石的平均价格更低!
查看mpg数据集中的class变量,用分类变量class显示连续变量hwy:
ggplot(mpg,aes(class,hwy))+geom_boxplot()
image.png
为了更容易发现趋势,可以基于中位数对class重新排序,这里用
reorder()
函数
ggplot(mpg)+geom_boxplot(aes(reorder(class,hwy,FUN=median),hwy))
image.png
如果变量名很长,那么将图形选装90°会好一些,可以使用coord_flip()
函数
ggplot(mpg)+geom_boxplot(aes(reorder(class,hwy,FUN=median),hwy))+coord_flip()
image.png
网友评论