前言

为什么是 R 语言?

R 语言在统计图形方面不仅走得早还走得远,当然,Python 语言也不错,近年来新起的 Julia 语言也很好。R 语言在统计图形方面的沉淀是非常深厚的,近年来,我发现越是简洁的越是优美,灵活的东西使用起来还非常简单,以 R 包 datasets内的数据集 PlantGrowth 为例,一般地,展示数据的分布会想到箱线图、直方图、密度图等,R 函数的泛型设计可以根据数据对象和变量的类型自动选择合适的图形, 图 19.7 是泛型函数 plot() 调用普通函数 boxplot()spineplot() 绘制的。

(a) 箱线图
(b) 脊柱图
图 1: 影响植物生长的因素

所以,直接调用相应的绘图函数也是可以的,如下:

boxplot(weight ~ group, data = PlantGrowth, 
        ylab = "植物干重", xlab = "组")
spineplot(cut(weight, 2) ~ group, data = PlantGrowth, 
          ylab = "植物干重", xlab = "组")

脊柱图是马赛克图的一种特殊情况,也可以看做是堆积条形图的推广形式或者直方图的扩展。上面 cut() 函数的作用是将数值型变量 weight 分桶,对照组(control,简写 ctrl)和两个不同的实验组(treatment,简写 trt)都按同样的划分方式分作两桶。

dat <- transform(PlantGrowth, weight_bucket = cut(weight, 2))
aggregate(data = dat, weight ~ weight_bucket + group, FUN = length)
#>   weight_bucket group weight
#> 1   (3.59,4.95]  ctrl      4
#> 2   (4.95,6.31]  ctrl      6
#> 3   (3.59,4.95]  trt1      8
#> 4   (4.95,6.31]  trt1      2
#> 5   (3.59,4.95]  trt2      1
#> 6   (4.95,6.31]  trt2      9

为什么写这本书?

近年来,数字经济成为热门词汇,企业数字化转型离不开数据,精细化运营更离不开数据分析,数据分析受到越来越多的关注。在数据分析领域,R 语言越来越流行,一本以 R 语言为依托,以实战为导向的数据分析书,市面上还不多。

  1. 提供完整可复现的书籍源码,书中示例可以在 R 语言环境下复现。
  2. 数据可视化部分,以一个真实数据串联绘图的基本要素,从图形的用途出发,将图形分类,结合真实数据介绍图形。
  3. 展现数据分析的完整工作流,数据获取、操作、处理、可视化探索和分析、展示交流、建模分析、解释。
  4. 将工作流应用于特定领域的数据分析,覆盖网络数据、文本数据、时序数据、空间数据等四大常见且重要的场景。

本书是怎么写的?

本书在写作风格上借鉴了以下书籍

本书的写作素材来源非常广泛,比如

  • 大量的原始论文、书籍,回顾经典理论、数据案例,追根溯源
  • 大量的 R 包帮助文档,配合真实数据提供软件工具的使用说明
  • 一些国内外政府网站发布的权威数据,提供大量的实际案例数据
  • 从国内外论坛、书店搜集数据操作、展示和交流等方面的高频问题

写作理念是什么?

  1. 以真实的数据为基础,介绍数据分析所用到的软件工具、统计方法和算法模型,对经典的数据分析案例,力求还原历史,讲清楚故事背景,数据处理的过程,不单单是分析方法和结果。

  2. 尽可能选用来自社会、经济、文化、历史等方面的真实的、最新的或经典的数据,在讲数据分析技术的同时,也了解一点我们所处的社会,希望给读者一些启发,勾起读者的兴趣,主动探寻有趣的问题,收集整理所需的数据,做自己的研究,找到问题的答案,享受数据探索分析的过程,摸索出适合自己的分析方法和分析工具。

  3. 结合多年使用 R 语言的经验以及最近几年在互联网行业工作的体会,形成数据分析师的技能栈,梳理知识体系,沉淀一套数据分析的方法。

目标读者是哪些?

  1. 想通过编程实现数据分析的完整过程,使得整个过程可以复现,可以重复利用。

  2. 对数据分析的实战有兴趣,想将数据分析技能应用于解决实际问题。

本书有哪些内容?

  1. 入门部分:介绍软件 R、 RStudio 和 VS Code 的安装配置过程,常见的基本数据结构和类型,循环、判断、函数等基本的编程知识。

  2. 数据部分:从本地文件、远程数据库、网页爬取等数据获取方式,筛选、变换、重塑、排序等基础的数据操作,离群值、异常值检测,缺失值处理等基础的数据处理

  3. 展示部分:ggplot2 基础、统计图形、实战应用、经验总结

  4. 交流部分:交互的图形、表格和应用,动态的 HTML 网页、PDF 文档和办公文档。

  5. 建模部分:线性模型、广义线性模型、混合效应模型、数据挖掘算法和神经网络模型

  6. 应用部分:网络数据、文本数据、时序数据、空间数据的分析

  7. 其它部分:参数估计、假设检验和抽样分布等基础的统计推断,L-BFGS 算法、EM 算法等统计计算,自助法、重抽样等统计模拟。

公开数据从哪找?

  • 各国、各级政府的统计局,比如美国人口调查局中国国家统计局等。
  • 国际、国内各类组织机构,比如世界银行美国疾病预防控制中心等。
  • 各类网站提供的数据集,比如 GitHub 开放数据集列表 awesome-public-datasetskaggle 网站提供大量数据分析竞赛及相应的数据集。
  • R 包内置数据集,已整理得很好,比如 spData 包 收集整理了很多空间统计方面的数据集。Rdatasets 更是收集约 1900 个数据集,全部来自 CRAN 上发布的 R 包。
  • 一些 R 包封装数据下载的接口,比如tidyBdE包可以下载西班牙银行开放的数据,WDI 可以下载世界银行开放的数据。

学会有效地提问?

  • 想清楚自己的问题是什么?尽力做好拆解和界定。
  • 去掉枝叶,保留主干,提供最小的可重复的示例。
  • 有耐心地等待社区的回应,积极地与社区沟通。
  • 为社区提供力所能及的帮助,提升自己的影响力。