搜索
查看: 57|回复: 0

[R] 慧美——R for data science 第五章

[复制链接]

10

主题

10

帖子

100

积分

注册会员

Rank: 2

积分
100
发表于 2018-11-8 23:05:02 | 显示全部楼层 |阅读模式
R for data science 第五章  探索性数据分析5.1 简介
  • 展示如何使用可视化方法和数据转换来系统化地探索数据,统计学家将这项任务称 为探索性数据分析(exploratory data analysis,EDA)。EDA 是一个可迭代的循环过程,具 有以下作用。
    • 对数据提出问题。
    • 对数据进行可视化、转换和建模,进而找出问题的答案。
    • 使用上一个步骤的结果来精炼问题,并提出新问题。

  • EDA 是所有数据分析过程中的重要环节,需要考察一下数据质量
  • 数据清洗只是 EDA 的一项具体应用,此时你提出的问题是,数据是否符合预期。要想进行数据清洗,需要使用所有的 EDA 工具:可视化、数据转换和建模。

5.2 问题
  • 在数据中发现知识
    • 变量本身会发生何种变动
    • 不同变量之间会发生何种相关变动

  • 术语定义
    • 变量:一种可测量的数量、质量或属性。
    • 值:变量在测量时的状态。变量值在每次测量之间可以发生改变。
    • 观测:或称个案,指在相同条件下进行的一组测量(通常,一个观测中的所有测量是在 同一时间对同一对象进行的)。一个观测会包含多个值,每个值关联到不同的变量。有时我们会将观测称为数据点。
    • 表格数据:一组值的集合,其中每个值都关联一个变量和一个观测。如果每个值都有自己所属的“单元”,每个变量都有自己所属的列,每个观测都有自己所属的行,那么表格数据就是整洁的。


5.3 变动
  • 变动是每次测量时数据值的变化趋势。
  • 对变量分布进行可视化的方法取决于变量是分类变量还是连续变量。如果仅在较小的集合内取值,那么这个变量就是分类变量。分类变量在 R 中通常保存为因子或字符向量。
    • 要想检查分类变量的分布,可以使用条形图
      ggplot(data=diamonds) +
            geom_bar(mapping=aes(x=cut))

  • 要想检查连续变量的分布,可以使用直方图
    ggplot(data=diamonds) +
          geom_histogram(mapping=aes(x=carat), binwidth=0.5)
  • 如果在同一张图上叠加多个直方图,那么我们建议你使用 geom_freqploy() 函数来代替geom_histogram() 函数。geom_freqploy() 可以执行和 geom_histogram() 同样的计算过程,但前者不使用条形来显示计数,而是使用折线。
  • 异常值是与众不同的观测或者是模式之外的数据点。有时异常值是由于数据录入错误而产生的;有时异常值则能开辟出一块重要的新科学领域。
  • coord_cartesian() 函数将 y 轴靠近 0 的部分放大
    coord_cartesian(ylim=c(0, 50)) #用于放大x轴的xlim()参数
  • 是否使用异常值
    • 如果两次分析的结果差别不大,而你又无法说明为什么会有异常值,那么完全可以用缺失值替代异常值,然后继续进行分析。
    • 但如果两次分析的结果有显著差别,那么你就不能在没有正当理由的情况下丢弃它们。你需要弄清出现异常值的原因(如数据输入错误),并在文章中说明丢弃它们的理由。


5.4 缺失值
  • 如果在数据集中发现异常值,但只想继续进行其余的分析工作
    • 选择1: 将带有可疑值的行全部丢弃
      • 不建议这种方式。因为一个无效测量不代表所有测量都是无效的。

    • 选择2✓ 建议使用缺失值代替异常值
      • 使用mutate()函数创建一个新变量来代替原来的变量,使用ifelse()函数将异常值替换为NA
      • ggplot2 在绘图时会忽略缺失值,但会提出警告以通知缺失值被丢弃了
      • 要想不显示这条警告,可以设置 na.rm = TRUE
        ggplot(data=diamonds2, mapping=aes(x=x, y=y)) +geom_point(na.rm=TRUE)



5.5 相关变动
  • 相关变动是两个或多个变量以相关的方式共同变化所表现出的趋势。查看相关变动的最好方式是将两个或多个变量间的关系以可视化的方式表现出来。如何进行这种可视化表示同样取决于相关变量的类型。
  • 了解箱线图

ggplot(data=diamonds, mapping=aes(x=cut, y=price)) +geom_boxplot()
  • 一个长方形箱子,下面的边表示分布的第 25 个百分位数,上面的边表示分布的第 75 个 百分位数,上下两边的距离称为四分位距。箱子的中部有一条横线,表示分布的中位数, 也就是分布的第 50 个百分位数。这三条线可以表示分布的分散情况,还可以帮助我们 明确数据是关于中位数对称的,还是偏向某一侧。
  • 圆点表示落在箱子上下两边 1.5 倍四分位距外的观测,这些离群点就是异常值,因此需 要单独绘出。
  • 从箱子上下两边延伸出的直线(或称为须)可以到达分布中最远的非离群点处。
  • 为了更容易发现趋势,可以基于 hwy 值的中位数对 class 进行重新排序

ggplot(data=mpg) +
       geom_boxplot(mapping=aes(
          x=reorder(class, hwy, FUN=median),
          y=hwy
) )
如果变量名很长,那么将图形旋转 90 度效果会更好一些。你可以通过 coord_flip() 函数完成这一操作
ggplot(data=mpg) +
+    geom_boxplot(
+        mapping=aes(
+            x=reorder(class, hwy, FUN=median),
+            y=hwy
+        ) )+
+    coord_flip()
  • 要想对两个分类变量间的相关变动进行可视化表示,需要计算出每个变量组合中的观测数量。完成这个任务的其中一种方法是使用内置的 geom_count() 函数
    ggplot(data=diamonds) +
    +    geom_count(mapping=aes(x=cut, y=color))
  • 使用 geom_tile() 函数和填充图形属性进行可视化表示
    diamonds%>%
    +    count(color, cut) %>%
    +    ggplot(mapping=aes(x=color, y=cut)) +
    +    geom_tile(mapping=aes(fill=n))
  • 两个连续变量
    • 使用geom_point() 画出散点图。你可以将相关变动看作点的模式。
      • 随着数据集规模的不断增加,散点图的用处越来越小,因为数据点开始出现过绘制,并堆积在一片黑色区域中(如上面的散点图所示)。使用 alpha 图形属性添加透明度


    • 使用分箱
      • geom_bin2d() 创建长方形分箱。geom_hex() 创建六边形分箱。要想使用 geom_hex(),需要安装 hexbin 包
      • 一个连续变量进行分箱,因此这个连续变量的作用就相当于分类变量。
      • 近似地显示每个分箱中的数据点的数量,此时可以使用 cut_number() 函数



5.6 模式和模型
  • 数据中的模式提供了关系线索。如果两个变量之间存在系统性的关系,那么这种关系就会
    在数据中表现为一种模式。

  • 模型是用于从数据中抽取模式的一种工具。

5.7  ggplot2调用
  • 通常情况下,一个函数的前一个或前两个参数是非常重要的
  • 有时我们会将数据转换管道操作的最终结果转换为一张图。注意,此时转换是用 + 号实现的,不是 %>%





上一篇:使用forcats处理因子
下一篇:R for data science 第七章 使用tibble实现简单数据框
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|生信技能树    

GMT+8, 2018-11-16 22:50 , Processed in 0.031921 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.