专栏首页庄闪闪的R语言手册R数据科学|5.3内容介绍

R数据科学|5.3内容介绍

写在前面

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

5.3 变动

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

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

5.3.1 对分布进行可视化表示

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

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

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

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

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

5.3.2 典型值

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

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

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

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

ggplot(data = smaller, mapping = aes(x = carat)) +  
  geom_histogram(binwidth = 0.01)  

5.3.3 异常值

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

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

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

ggplot(diamonds) +  
  geom_histogram(mapping = aes(x = y), binwidth = 0.5)  

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

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

ggplot(diamonds) +  
  geom_histogram(mapping = aes(x = y), binwidth = 0.5) +  
  coord_cartesian(ylim = c(0, 50))  

这样我们就可以清晰的看出有3个异常值,分别位于 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  
#> <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毫米,所以根据实际情况,我们可以将这些数据进行剔除。

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

本文分享自微信公众号 - 庄闪闪的R语言手册(Zss_R4ds),作者:我才是赵西西

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-12-19

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • R数据科学|5.5.3内容介绍

    最简单的一种方法是:使用geom_point()画出散点图。你可以将相关变动看作点的模式。例如,你可以看到钻石的克拉数和价值之间存在一种指数关系:

    庄闪闪
  • R数据科学|3.6内容介绍

    上节我们对选择现有的列和使用mutate添加新列做了介绍。现在对数据框使用summarize()进行分组摘要进行介绍。函数功能:summarize()可以将数据...

    庄闪闪
  • R数据科学|5.5.1 内容介绍

    如果变动描述的是一个变量内部的行为,那么相关变动描述的就是多个变量之间的行为。相关变动是两个或多个变量以相关的方式共同变化所表现出的趋势。查看相关变动的最好 方...

    庄闪闪
  • R数据科学|第九章内容介绍

    在实际应用中,我们常会涉及到多个数据表,必须综合使用它们才能找到关键信息。存在于多个表中的这种数据统称为关系数据。本章中的很多概念都和SQL中的相似,只是在dp...

    庄闪闪
  • R数据科学|第七章内容介绍

    tibble是一种简单数据框,它对data.frame的功能进行了一些修改,更易于使用。本文将介绍tidyverse的核心R包之一——tibble包

    庄闪闪
  • R数据科学|第十章内容介绍

    可以使用str_sub()函数来提取字符串的一部分。除了字符串参数外,str_sub() 函数中还 有 start 和 end 参数,它们给出了子串的位置(包括...

    庄闪闪
  • R数据科学|第八章内容介绍

    本文将介绍如何使用readr包将平面文件加载到 R 中,readr 也是 tidyverse 的核心 R包之一。

    庄闪闪
  • R数据科学|第十一章内容介绍

    因子在 R 中用于处理分类变量。从历史上看,因子远比字符串更容易处理。因此,R 基础包中的很多函数都自动将字符串转换为因子。

    庄闪闪
  • R数据科学|3.4内容介绍及习题解答

    通过基于变量名的操作,select()函数可以让你生成一个有用的变量子集。基本用法如下:

    庄闪闪
  • R数据科学|3.7内容介绍及习题解答

    虽然与summarize()函数结合起来使用是最有效的,但分组也可以与mutate()和filter()函数结合,以完成非常便捷的操作。示例如下:

    庄闪闪
  • R数据科学|3.5内容介绍及习题解答

    上节我们对选择现有的列进行了介绍与习题解答,现在对数据框添加新列进行介绍,这里使用mutate()函数,注意:mutate()总是将新列添加在数据集的最后。

    庄闪闪
  • R数据科学|5.4内容介绍及习题解答

    我们不建议使用这种方式,因为一个无效测量不代表所有测量都是无效的。此外,如果数据质量不高,若对每个变量都采取这种做法,那么你最后可能会发现数据已经所剩无几!

    庄闪闪
  • R数据科学|5.5.2内容介绍及课后习题解答

    要想对两个分类变量间的相关变动进行可视化表示,需要计算出每个变量组合中的观测数量。常用的两种方法有:

    庄闪闪
  • (数据科学学习手札41)folium基础内容介绍

      folium是js上著名的地理信息可视化库leaflet.js为Python提供的接口,通过它,我们可以通过在Python端编写代码操纵数据,来调用leaf...

    Feffery
  • (数据科学学习手札42)folium进阶内容介绍

      在上一篇(数据科学学习手札41)中我们了解了folium的基础内容,实际上folium在地理信息可视化上的真正过人之处在于其绘制图像的高度可定制化上,本文就...

    Feffery
  • (数据科学学习手札43)Plotly基础内容介绍

      Plotly是一个非常著名且强大的开源数据可视化框架,它通过构建基于浏览器显示的web形式的可交互图表来展示信息,可创建多达数十种精美的图表和地图,本文就将...

    Feffery
  • R数据科学|5.3课后习题解答

    研究 x、y 和 z 变量在 diamonds 数据集中的分布。你能发现什么?思考一下,对于一条钻石数据,如何确定表示长、宽和高的变量?

    庄闪闪
  • 数据结构内容介绍(一)

    我认为数据结构就是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存...

    花狗Fdog
  • 数据科学的基本内容

    什么是数据科学?它和已有的信息科学、统计学、机器学习等学科有什么不同?作为一门新兴的学科,数据科学依赖两个因素: 一是数据的广泛性和多样性; 二是数据研究的共性...

    小莹莹

扫码关注云+社区

领取腾讯云代金券