(coord_cartesian() 还有一个 xlim() 参数,用于在需要缩放 x 轴时使用。ggplot2 也有 xlim() 和 ylim() 函数,但它们的工作方式略有不同:它们会丢弃范围之外的数据。)
这让我们可以看到有三个异常值:0、约 30 和约 60。我们用 dplyr 将它们提取出来:
unusual <- diamonds %>% filter(y < 3 | y > 20) %>% arrange(y) unusual #> # A tibble: 9 × 10 #> carat cut color clarity depth table price x #>
y 变量测量的是这些钻石三个维度中的一个,单位为毫米。我们知道钻石的宽度不可能是 0 毫米,所以这些值一定是错误的。我们还可能怀疑 32 毫米和 59 毫米的测量值也不合理:这些钻石超过一英寸长,但价格却不到几十万美元!
比较好的做法是在包含和不包含离群值的情况下重复你的分析。如果它们对结果影响很小,而且你无法弄清它们为何存在,那么将它们替换为缺失值并继续是合理的。但是,如果它们对你的结果有重大影响,就不应该在没有正当理由的情况下丢弃它们。你需要弄清楚是什么导致了它们(例如,数据录入错误),并在报告中说明你删除了它们。
练习
-
- 探索 diamonds 中 x、y 和 z 每个变量的分布。你学到了什么?想一想钻石,以及你如何决定哪个维度是长度、宽度和深度。