数据分布的可视化
对变量分布进行可视化的方法取决于变量是分类变量还是连续变量。
如果仅在较小的集合内取值,那么变量就是分类变量。分类变量在R中通常保存为因子或字符向量。
要想检查分类变量的分布,可以使用条形图。
1. 分类变量:直方图
ggplot(data = diamonds) +
geom_bar(mapping = aes(x = cut))
![](https://img.haomeiwen.com/i12922147/62b0add905a9af20.png)
2. 连续变量:条形图
如果可以在无限大的有序集合中任意取值,那么这个变量就是连续变量。数值型和日期时间型变量就是连续变量的两个例子。
要想检查连续型变量的分布,可以使用直方图。
ggplot(data = diamonds, mapping = aes(x = carat)) +
geom_histogram(binwidth = 0.2)
![](https://img.haomeiwen.com/i12922147/383b8465c2827e56.png)
直方图对x轴进行等宽分箱,然后使用条形的高度来表示落入每个分箱的观测的数值。当然可以使用binwidth参数来设定直方图中的间隔的宽度,因为不同的分箱宽度可以揭示不同的模式。分箱越宽,展现的细节就越少,相反,分箱越细,就更多的具体细节信息。
ggplot(data = diamonds, mapping = aes(x = carat)) +
geom_histogram(binwidth = 0.4)
![](https://img.haomeiwen.com/i12922147/522e96885d8e469c.png)
如果想要在同一张图上叠加多个直方图,可以使用geom_freqploy()函数代替geom_histogram()函数,geom_freqploy()执行和geom_histogram()同样的计算过程,但是前者使用的是折线。叠加的折线远比叠加的条形更容易理解。
ggplot(data = diamonds, mapping = aes(x = carat, color = cut)) +
geom_freqpoly(binwidth = 0.2)
![](https://img.haomeiwen.com/i12922147/088d5c2e1e3fb0cf.png)
但是,这种默认的外观不太适合比较,高度是有计数给出的,这就意味着,如果一组的观测数量明显少于其他组的话,就很难看出形状的差异。
为了让比较变得容易,需要改变y轴的显示内容,不在显示计数,而是显示密度。密度是对计数的标准化,这样每个频率多边形下面的面积都是1:
ggplot(data = diamonds, mapping = aes(
x = carat, y = ..density.., color = cut)) +
geom_freqpoly(binwidth = 0.2)
![](https://img.haomeiwen.com/i12922147/ab4ea3ba43530e97.png)
核密度曲线:
Computes and draws kernel density estimate, which is a smoothed version of the histogram. This is a useful alternative to the histogram for continuous data that comes from an underlying smooth distribution.
计算并绘制核密度估计,这是直方图的平滑版本。对于来自底层平滑分布的连续数据,这是一个有用的替代直方图。
ggplot(data = diamonds,
mapping = aes(x = carat, fill = cut)) +
geom_density(alpha = 0.3)
![](https://img.haomeiwen.com/i12922147/67a5cf0f98ef787a.png)
网友评论