-
Notifications
You must be signed in to change notification settings - Fork 18
/
Copy pathpreface.qmd
executable file
·125 lines (85 loc) · 7.28 KB
/
preface.qmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
# 前言 {#sec-preface .unnumbered}
```{r}
#| echo: false
source("_common.R")
```
## 为什么是 R 语言? {#sec-why-r}
<!-- 可视化、可重复性文档、演示交流、统计模型等方面都很强 -->
R 语言在统计图形方面不仅走得早还走得远,当然,Python 语言也不错,近年来新起的 Julia 语言也很好。R 语言在统计图形方面的沉淀是非常深厚的,近年来,我发现越是简洁的越是优美,灵活的东西使用起来还非常简单,以 R 包 **datasets**内的数据集 PlantGrowth 为例,一般地,展示数据的分布会想到箱线图、直方图、密度图等,R 函数的泛型设计可以根据数据对象和变量的类型自动选择合适的图形, @fig-plant-growth 是泛型函数 `plot()` 调用普通函数 `boxplot()` 和 `spineplot()` 绘制的。
```{r}
#| label: fig-plant-growth
#| fig-cap: "影响植物生长的因素"
#| fig-subcap:
#| - "箱线图"
#| - "脊柱图"
#| fig-width: 4.5
#| fig-height: 4
#| fig-showtext: true
#| echo: false
#| layout-ncol: 2
#| collapse: true
#| par: true
plot(weight ~ group, data = PlantGrowth, family = "sans", ann = FALSE)
title(xlab = "组", ylab = "植物干重", family = "Noto Serif CJK SC")
plot(cut(weight, 2) ~ group,
data = PlantGrowth,
family = "sans", xlab = "", ylab = ""
)
title(xlab = "组", ylab = "植物干重", family = "Noto Serif CJK SC")
```
所以,直接调用相应的绘图函数也是可以的,如下:
```{r}
#| label: fig-spinograms
#| eval: false
#| echo: true
#| fig-showtext: true
boxplot(weight ~ group, data = PlantGrowth,
ylab = "植物干重", xlab = "组")
spineplot(cut(weight, 2) ~ group, data = PlantGrowth,
ylab = "植物干重", xlab = "组")
```
脊柱图是马赛克图的一种特殊情况,也可以看做是堆积条形图的推广形式或者直方图的扩展。上面 `cut()` 函数的作用是将数值型变量 weight 分桶,对照组(control,简写 ctrl)和两个不同的实验组(treatment,简写 trt)都按同样的划分方式分作两桶。
```{r}
#| label: plant-growth-group
dat <- transform(PlantGrowth, weight_bucket = cut(weight, 2))
aggregate(data = dat, weight ~ weight_bucket + group, FUN = length)
```
## 为什么写这本书? {#sec-why-book}
近年来,数字经济成为热门词汇,企业数字化转型离不开数据,精细化运营更离不开数据分析,数据分析受到越来越多的关注。在数据分析领域,R 语言越来越流行,一本以 R 语言为依托,以实战为导向的数据分析书,市面上还不多。
1. 提供完整可复现的书籍源码,书中示例可以在 R 语言环境下复现。
2. 数据可视化部分,以一个真实数据串联绘图的基本要素,从图形的用途出发,将图形分类,结合真实数据介绍图形。
3. 展现数据分析的完整工作流,数据获取、操作、处理、可视化探索和分析、展示交流、建模分析、解释。
4. 将工作流应用于特定领域的数据分析,覆盖网络数据、文本数据、时序数据、空间数据等四大常见且重要的场景。
## 本书是怎么写的? {#sec-how-book}
<!-- 组织、分工、审校等 -->
本书在写作风格上借鉴了以下书籍
- 《现代统计图形》 [@msg2021] 讲清楚统计图形的来龙去脉,提供丰富的实战案例。
- 《R in Action》[@Kabacoff2022] 根据入门、进阶和高阶将书籍内容分出层次。
- 《R for Data Science》 [@Hadley2023] 根据数据分析的整个工作流拆分各个部分、章节。
本书的写作素材来源非常广泛,比如
- 大量的原始论文、书籍,回顾经典理论、数据案例,追根溯源
- 大量的 R 包帮助文档,配合真实数据提供软件工具的使用说明
- 一些国内外政府网站发布的权威数据,提供大量的实际案例数据
- 从国内外论坛、书店搜集数据操作、展示和交流等方面的高频问题
## 写作理念是什么? {#sec-intrinsical-motivation}
<!-- 内在的动力 -->
1. 以真实的数据为基础,介绍数据分析所用到的软件工具、统计方法和算法模型,对经典的数据分析案例,力求还原历史,讲清楚故事背景,数据处理的过程,不单单是分析方法和结果。
2. 尽可能选用来自社会、经济、文化、历史等方面的真实的、最新的或经典的数据,在讲数据分析技术的同时,也了解一点我们所处的社会,希望给读者一些启发,勾起读者的兴趣,主动探寻有趣的问题,收集整理所需的数据,做自己的研究,找到问题的答案,享受数据探索分析的过程,摸索出适合自己的分析方法和分析工具。
3. 结合多年使用 R 语言的经验以及最近几年在互联网行业工作的体会,形成数据分析师的技能栈,梳理知识体系,沉淀一套数据分析的方法。
## 目标读者是哪些? {#sec-who-book}
<!-- 读者定位:理工科和人文社科的数据分析相关专业的本科生,研究生,在实际工作中需要用到数据分析技巧的相关从业人员。适合培训,主要方向为协助科研数据分析、数据分析报告撰写和建模分析等内容 -->
1. 想通过编程实现数据分析的完整过程,使得整个过程可以复现,可以重复利用。
2. 对数据分析的实战有兴趣,想将数据分析技能应用于解决实际问题。
## 本书有哪些内容? {#sec-what-book}
1. 入门部分:介绍软件 R、 RStudio 和 VS Code 的安装配置过程,常见的基本数据结构和类型,循环、判断、函数等基本的编程知识。
2. 数据部分:从本地文件、远程数据库、网页爬取等数据获取方式,筛选、变换、重塑、排序等基础的数据操作,离群值、异常值检测,缺失值处理等基础的数据处理
3. 交流部分:交互的图形、表格和应用,动态的 HTML 网页、PDF 文档和办公文档。
4. 统计分析:统计检验、相关分析、分类数据、功效分析
5. 数据建模:网络数据、文本数据、时序数据
6. 优化建模:统计计算、数值优化、优化问题
## 公开数据从哪找? {#sec-finding-public-datasets}
- 各国、各级政府的统计局,比如[美国人口调查局](https://www.census.gov/data.html)、[中国国家统计局](http://www.stats.gov.cn/)等。
- 国际、国内各类组织机构,比如[世界银行](https://www.shihang.org/zh/home)、[美国疾病预防控制中心](https://www.cdc.gov/)等。
- 各类网站提供的数据集,比如 GitHub 开放数据集列表 [awesome-public-datasets](https://github.com/awesomedata/awesome-public-datasets),[kaggle](https://www.kaggle.com/datasets) 网站提供大量数据分析竞赛及相应的数据集。
- R 包内置数据集,已整理得很好,比如 [**spData**](https://github.com/Nowosad/spData/) 包 收集整理了很多空间统计方面的数据集。[Rdatasets](https://github.com/vincentarelbundock/Rdatasets) 更是收集约 1900 个数据集,全部来自 CRAN 上发布的 R 包。
- 一些 R 包封装数据下载的接口,比如[**tidyBdE**](https://github.com/rOpenSpain/tidyBdE)包可以下载西班牙银行开放的数据,[**WDI**](https://github.com/vincentarelbundock/WDI) 可以下载世界银行开放的数据。