第 1 章 数据科学与R语言

马克思曾说过:“一门科学只有当它达到能够成功运用数学时,才算真正得到发展。”数学为数据科学提供了坚实的理论基础,数据科学也为数学与实际应用之间建立起一个直接的桥梁。

1.1 什么是数据科学

数据科学是综合了统计学、计算机科学和领域知识的交叉学科,其基本内容就是用数据的方法研究科学,用科学的方法研究数据(鄂维南院士)。2010年,Drew Conway画了一张数据科学的韦恩图

从数据科学所涉及的学科领域来看,其知识结构不仅仅包括数学、统计学、计算机科学、信息科学等在内的基础性理论,还应该包括社会学、物理学、情报学、生物医学等在内的专业性领域理论。

(事实上,编程是工具,统计是灵魂,专业是核心,最重要的最下面那个部分,专业领域的知识)

1.2 什么是R

1.2.1 R那些事

  • 1992年,新西兰奥克兰大学统计学教授 Ross Ihaka 和 Robert Gentleman,为了方便地给学生教授统计学课程,他们设计开发了R语言(他们名字的首字母都是R)。

  • 2000年,R1.0.0 发布
  • 2004年,第一届国际useR!会议(随后每年举办一次)
  • 2005年,ggplot2宏包(2018.8 - 2019.8下载量超过 1.3 亿次)
  • 2012年,R2.15.2 发布
  • 2013年,R3.0.2 发布, CRAN上的宏包数量5026个
  • 2016年,Rstudio公司推出 tidyverse 宏包(数据科学当前最流行的R宏包)
  • 2017年,R3.4.1 发布,CRAN上的宏包数量10875个
  • 2019年,R3.6.1 发布,CRAN上的宏包数量15102个
  • 2020年,R4.0.0 发布,CRAN上的宏包数量16054个

想了解R语言的发展历史,可阅读The History of R

1.2.2 R是什么

官网定义:https://www.r-project.org/

R语言是用于统计分析、图形表示和报告的编程语言:

  • R 是一个统计编程语言(statistical programming)
  • R 可运行于多种平台之上,包括Windows、UNIX 和 Mac OS X
  • R 拥有顶尖水准的制图功能
  • R 是免费的
  • R 应用广泛,拥有丰富的库包
  • 活跃的社区

1.2.3 R语言发展趋势

TIOBE index

1.2.4 R路上的大神

2019 年 8 月,国际统计学年会将考普斯总统奖(The Committee of Presidents of Statistical Societies Awards,简称 COPSS 奖,被誉为统计学的诺贝尔奖)奖颁给 tidyverse的作者Hadley Wickham后,充分说明R语言得到了学术界的肯定和认可,我相信未来它在自然科学、社会科学和工业领域中的应用前景会非常光明。

1.3 R能干什么

1.3.1 数据科学流程

Hadley Wickham将数据科学流程分解成6个环节

即数据导入、数据规整、数据处理、可视化、建模以及形成可重复性报告,整个分析和探索过程都在一个程序代码中完成,这种方式对训练我们的数据思维非常有帮助。

1.3.2 tidyverse家族

tidyverse套餐,其主要成员包括

功能 宏包
有颜值担当 ggplot2
数据处理王者 dplyr
数据转换专家 tidyr
数据载入利器 readr
循环加速器 purrr
强化数据框 tibble
字符串处理 stringr
因子处理 forcats

1.3.3 R & tidyverse 四大优势

序号 内容 代码演示
1 统计 1_stats.R
2 可视化 2_visual.R
3 探索性分析 3_eda.R
4 可重复性报告 4_reproducible.R
看了这些代码,可能第一眼感觉是这样的
图片来自电影《降临》

图 1.1: 图片来自电影《降临》

但我更希望这门课结束后,大家的感觉是这样的
图片来自美剧《权利的游戏》

图 1.2: 图片来自美剧《权利的游戏》

1.4 为什么选择 R

1.4.1 社会科学需要统计

社会科学需要统计,尽管用统计的,往往不是学统计的

1.4.2 社会科学需要可视化

我们不是学美术的,但要可视化

1.4.3 社会科学需要编程

我们不是学计算机的,但需要编程(小学生已经开始学编程了)

1.4.4 你的论文需要排版

我们不是学设计的,但要操心交叉引用的事

1.4.5 挖掘机技术到底哪家强?

2016年权威机构KDnuggets做过调研,显示数据科学领域最受欢迎的工具,是python和R两种语言

事实上,python和R都是非常强大的工具,两者各有优劣,作为初学者,究竟选择谁? 可以参考《为什么R语言是当今最值得学习的数据科学语言》,这篇文章做了详细的对比。我个人的观点是,如果想做程序员或者打算今后在工业企业里工作,可以选择python; 如果你今后打算在科研机构做学术研究,我推荐R语言作为入门语言。

序号 内容 特性 评价
1 统计分析 看家本领 好用
2 ggplot2画图 颜值担当 好看
3 tidyverse语法 简单易懂 好学
4 可重复性报告 方便快捷 好玩
  • tidyverse 相比 base R 的优势
    • 语法一致性(学习一个宏包,可以帮助理解其他宏包)
    • 代码可读性,接近人类语言 ( %>% 太酷了 )

1.4.6 一见钟情,还是相见恨晚?

为什么不能用excel做数据分析?画个图说明下

一见钟情,还是相见恨晚?