【上一篇:21.关于Exploratory Data Analysis之一】
【下一篇:23.关于Exploratory Data Analysis之三】
关于典型值(typical values)
在条形图和直方图中,高的bar展示变量常见的值,低的bar展示不常见的值,没有bar存在的地方表示值没有出现在你的数据中。将这些转换成有用的问题来寻找预料之外的东西。
- 哪些值是最常见的?为什么?
- 哪些值是稀少的?为什么?是你期望的吗?
- 你能看到一些不寻常的模式吗?怎么解释?
例如,下面的直方图提示了几个有趣的问题: - Why are there more diamonds at whole carats and common fractions of carats?
- 为什么每个峰右边的钻石比左边的要多?
- 为什么没有大于3克拉的钻石?
ggplot(data = smaller, mapping = aes(x = carat)) +
geom_histogram(binwidth = 0.01)

相似值的聚类表明数据中存在subgroup,为了理解这些subgroup,问:
- 每个cluster内部的observations是怎么相似的?
- 不同cluster的observations有何不同?
- 你如何解释或描述这些cluster?
- 为什么cluster的出现可能会误导人?
下面的柱状图显示了黄石国家公园Old Faithful Geyser272次喷发的时长(以分钟为单位)。喷发时间似乎分成两组:短喷发(大约2分钟)和长喷发(4-5分钟),但中间很少。
ggplot(data = faithful, mapping = aes(x = eruptions)) +
geom_histogram(binwidth = 0.25)

上面的许多问题将促使您探索变量之间的关系,例如,看看一个变量的值是否可以解释另一个变量的行为。我们很快就会讲到。
关于不寻常的值(Unusual values)
Outliers(离群值)指的是那些不寻常(unusual)的observations,哪些看起来不符合模式的数据点(data points)。有时候outliers是数据输入错误,其他时候可能会表明重要的新科学。当你有很多数据的时候,outliers很难从直方图中看出来。例如下图,你只能从x轴上有不寻常的宽度限制看出有异常值。
ggplot(diamonds) +
geom_histogram(mapping = aes(x = y), binwidth = 0.5)
从上面的图可以看到,在0,30,60处有异常值。用dplyr将这些异常抓出来:
> (unusual <- diamonds %>%
filter(y < 3 | y > 20) %>%
select(price, x, y, z) %>%
arrange(y))
# A tibble: 9 x 4
price x y z
<int> <dbl> <dbl> <dbl>
1 5139 0 0 0
2 6381 0 0 0
3 12800 0 0 0
4 15686 0 0 0
5 18034 0 0 0
6 2130 0 0 0
7 2130 0 0 0
8 2075 5.15 31.8 5.12
9 12210 8.09 58.9 8.06
y这个变量代表钻石的width(单位是mm),从结果可以看到,x/y/z为0的数据点是不正确的,y=31.8和y=28.9的也是难以置信的,因为他们那么大却只有几万美元的价格。
在有或没有异常值的情况下重复分析是很好的实践。如果它们对结果的影响很小,并且你不知道它们为什么在那里,那么用缺失的值替换它们,然后继续前进是合理的。然而,如果它们对你的结果有实质性的影响,你不应该毫无理由地放弃它们。你需要找出导致这些错误的原因(比如数据输入错误),并在报告中表明你删除了这些错误。

bin里的observations数量太少,所以会看不到柱子,我们可以用coord_cartesian()函数放大y轴:

插播部分_:cartesian是笛卡尔的意思,coord_cartesian()函数的描述是笛卡尔坐标系是最常见的一种坐标系。在坐标系统上设置限制将缩放绘图(就像你用放大镜看它一样),而不会像在比例上设置限制那样改变底层数据。coord_cartesian()函数的参数列表如下:
coord_cartesian(
xlim = NULL,
ylim = NULL,
expand = TRUE,
default = FALSE,
clip = "on"
)
xlim,ylim:对x轴和y轴的限制
expand:如果为TRUE,则在限制中添加一个小的扩展因子,以确保数据和轴不重叠。如果为FALSE,则严格根据数据或xlim/ylim进行限制。
default:这是默认坐标系统吗?如果FALSE(默认值),那么用另一个坐标系统替换这个坐标系统将创建一条消息,提醒用户坐标系统正在被替换。如果为TRUE,则该警告被抑制。
clip:绘图应该被裁剪到绘图面板的范围内吗?on的设置(默认)表示是,“off”的设置表示否。在大多数情况下,“on”的默认值不应该被更改,因为设置clip =“off”会导致意想不到的结果,off会允许在图的任何地方绘制数据点,包括在图的边缘。如果通过xlim和ylim设置了限制,而一些数据点超出了这些限制,那么这些数据点可能会显示在坐标轴、图例、情节标题或图片边界等地方。
ggplot2本身也有与这里的xlim/ylim参数工作方式略有不同的xlim()和ylim()函数
ggplot2本身的函数会扔掉超出限制的数据点。
练习题
1. 探索每个x, y, z变量在钻石中的分布。你学到了什么?想想一个钻石,你如何决定它的长度、宽度和深度。
2. 探索价格的分布。你有没有发现什么不寻常或令人惊讶的事情?(提示:仔细考虑binwidth,确保你尝试的值范围很广。)
3. 有多少钻石是0.99克拉?一克拉是多少?你认为造成这种差异的原因是什么?
4. 当放大直方图时,比较和对比coord_cartesian()与xlim()或ylim()。如果你不设置binwidth会发生什么?如果你试图放大只显示半条,会发生什么?
关于典型值和异常值的介绍结束了,下面是关于缺失值的介绍。
【上一篇:21.关于Exploratory Data Analysis之一】
【下一篇:23.关于Exploratory Data Analysis之三】
网友评论