前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R数据科学|5.3内容介绍

R数据科学|5.3内容介绍

作者头像
庄闪闪
发布2021-04-09 11:20:40
7800
发布2021-04-09 11:20:40
举报

写在前面

上一期我们对《R数据科学》第3.7节进行了内容介绍和习题解答,细心的读者可以发现,这里直接跳转到了5.3节了。原因在于中间各节内容干货较少,也没有习题,所以就跳过了。

5.3 变动

变动是每次测量时数据值的变化趋势。例如:测量多个项目(如不同人的眼睛颜色)或进行多次测量(如电池在不同时刻的电量),所得到的值会发生一定的变化。

所有变量都有自己的变动模式,我们可以通过可视化来揭示其中一些有趣的信息。

5.3.1 对分布进行可视化表示

对变量分布进行可视化的方法取决于变量是分类变量还是连续变量。

  • 分类变量在 R 中通常保存为因子或字符向量,可以使用条形图来显示分类变量的分布:
代码语言:javascript
复制
ggplot(data = diamonds) +  
 geom_bar(mapping = aes(x = cut))  
  • 如果可以在无限大的有序集合中任意取值,那么这个变量就是连续变量。可以使用直方图来显示连续变量的分布:
代码语言:javascript
复制
ggplot(data = diamonds) +  
 geom_histogram(mapping = aes(x = carat), binwidth = 0.5)  
  • 你可以使用binwidth参数来设定直方图中的间隔的宽度,该参数是用x轴变量的单位来度量的。

技巧: 在使用直方图时,你可以试试不同的分箱宽度,因为不同的分箱宽度可以揭示不同的模式。

例如,如果只考虑重量小于3克拉的钻石,并选择一个更小的分箱宽度:

代码语言:javascript
复制
smaller <- diamonds %>%  
  filter(carat < 3)  
ggplot(data = smaller, mapping = aes(x = carat)) +  
  geom_histogram(binwidth = 0.1)  
  • 在同一张图上叠加多个直方图,可以使用geom_freploy(),它使用折线来显示计数,叠加的折线比叠加的条形更容易理解:
代码语言:javascript
复制
ggplot(data = smaller, mapping = aes(x = carat, color = cut)) +  
  geom_freqpoly(binwidth = 0.1)  

5.3.2 典型值

在实际数据分析应用下,以下几点我们应该铭记在心:

  • 哪些值是最常见的?为什么?
  • 拿些值是非常罕见的?为什么?这和你的预期相符吗?
  • 你能发现任何异乎寻常的模式吗?如何解释?

我们可以把上述问题作为探寻数据规则的依据,进而对数据进行合理的可视化。

比如,通过设置binwidth参数的大小,看看是否能找到数据中的子组:

代码语言:javascript
复制
ggplot(data = smaller, mapping = aes(x = carat)) +  
  geom_histogram(binwidth = 0.01)  

5.3.3 异常值

定义: 异常值是与众不同的观测或者是模式之外的数据点。

出现的可能原因: 数据录入错误;如果数据量比较大,有时很难在直方图上发现异常值。

例如,查看钻石数据集中 y 轴变量的分布,唯一能表示存在异常值的证据是,y 轴的取值范围出奇得宽:

代码语言:javascript
复制
ggplot(diamonds) +  
  geom_histogram(mapping = aes(x = y), binwidth = 0.5)  

正常值分箱中的观测太多了,以致于包括异常值的分箱高度太低,因此我们根本看不见(如果仔细观察 x 轴 0 刻度附近,没准你能发现点什么)。

为了更容易发现异常值,我们可以使用coord_cartesian()函数将 y 轴靠近 0 的部分放大:

代码语言:javascript
复制
ggplot(diamonds) +  
  geom_histogram(mapping = aes(x = y), binwidth = 0.5) +  
  coord_cartesian(ylim = c(0, 50))  

这样我们就可以清晰的看出有3个异常值,分别位于 0、30左右和60左右。使用dplyr将它们找出来:

代码语言:javascript
复制
unusual <- diamonds %>%  
  filter(y < 3 | y > 20) %>%  
  arrange(y)  
unusual  
#> # A tibble: 9 × 10  
#> carat cut color clarity depth table price x  
#> <dbl> <ord> <ord> <ord> <dbl> <dbl> <int> <dbl>  
#> 1 1.00 Very Good H VS2 63.3 53 5139 0.00  
#> 2 1.14 Fair G VS1 57.5 67 6381 0.00  
#> 3 1.56 Ideal G VS2 62.2 54 12800 0.00  
#> 4 1.20 Premium D VVS1 62.1 59 15686 0.00  
#> 5 2.25 Premium H SI2 62.8 59 18034 0.00  
#> 6 0.71 Good F SI2 64.1 60 2130 0.00  
#> 7 0.71 Good F SI2 64.1 60 2130 0.00  
#> 8 0.51 Ideal E VS1 61.8 55 2075 5.15  
#> 9 2.00 Premium H SI2 58.9 57 12210 8.09  
#> # ... with 2 more variables:  
#> # y <dbl>, z <dbl>  

y 变量是测量钻石的三个维度之一,单位为毫米。实际中,钻石的宽度不可能为0毫米,也很少会在32毫米和59毫米,所以根据实际情况,我们可以将这些数据进行剔除。

注意: 实际中,可以对带有异常值和不带异常值的数据分别进行分析。如果两次分析的结果差别不大,那么可以用缺失值替代异常值,然后继续进行分析。但如果两次分析的结果有显著差别,那么你就不能在没有正当理由的情况下丢弃它们。你需要弄清出现异常值的原因(如数据输入错误),并在文章中说明丢弃它们的理由。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-12-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 庄闪闪的R语言手册 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 写在前面
  • 5.3 变动
    • 5.3.1 对分布进行可视化表示
      • 5.3.2 典型值
        • 5.3.3 异常值
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档