0.2 R语言与数据科学
0.2.1 什么是数据科学
数据科学是综合了统计学、计算机科学和领域知识的交叉学科,其基本内容就是用数据的方法研究科学,用科学的方法研究数据。数据科学与当前热门的人工智能、数据挖掘、机器学习、深度学习、大数据之间的关系,如图0.3所示。
图0.3 数据科学的位置
Hadley Wickham定义了数据科学的工作流程,如图0.4所示,即数据导入、数据清洗、数据变换、数据可视化、数据建模以及文档沟通,整个分析和探索过程,我们应当训练这样的数据思维。
图0.4 数据科学的工作流程
0.2.2 什么是R语言
1992年,新西兰奥克兰大学统计学教授Ross Ihaka和Robert Gentleman,为了便于给学生教授统计学课程,设计并开发了R语言(他们名字的首字母都是R)。
● R语言发展过程中的重要事件:
❏ 2000年,R 1.0.0发布;
❏ 2005年,ggplot2包(2018.8—2019.8下载量超过1.3亿次);
❏ 2016年,Rstudio公司推出tidyverse
包(数据科学当前最新R包);
❏ 2022年,R 4.1.2发布,目前CRAN上的R包数量为18985,近两年增速明显加快。
TIOBE是世界级的编程语言排行榜,能够反映编程语言的火热程度。这几年Python排名一路飙升,甚至冲到了第一。R语言属于统计分析语言,近年一直在10至20名之间徘徊,曾经短暂地冲到过第8名(2020年8月)。2022年12月,排名第11位,如图0.5所示。
图0.5 TIOBE最新编程语言排名
IEEE Spectrum发布的2021年度编程语言排行榜,从涵盖社交网站、开源代码网站和求职网站的8个信息源:CareerBuilder、GitHub、Google、Hacker News、IEEE、Reddit、Stack Overflow和Twitter,按照11个指标收集数据,最终得到了数十种编程语言流行度的整体排名,如图0.6所示。
图0.6 IEEE Spectrum 2021年度编程语言排行榜
2019年权威机构KDnuggets做过调研,调研结果显示数据科学领域最受欢迎的编程语言包括Python和R:
● Python更全能,适合将来做程序员或在企业工作;
● R语言更侧重数据统计分析,适合将来做科研学术。
R语言是用于统计分析、图形表示和报告的编程语言:
● R语言是统计学家开发的,为统计计算、数据分析和可视化而设计;
● R语言适合做数据处理和数据建模(数据预处理、数据探索性分析、识别数据隐含的模式、数据可视化)。
R语言的优势如下:
● 免费且开源,软件体量小,可以根据需要安装扩展包,兼容各种常见操作系统,有强大且活跃的社区;
● 专门为统计和数据分析开发的语言,有丰富的扩展包;
● 拥有顶尖水准的制图功能;
● 面向对象和函数,比Python简单易学。
● 在热门的机器学习领域,有足以媲美Python的sklearn
机器学习库的R机器学习包mlr3verse
或tidymodels
(参见附录F)。
0.2.3 改变了R的人
Hadley Wickham博士是为统计应用领域做出过突出贡献的统计学家,被称为改变了R的人,图0.7所示的是著名的R语言专家—Hadley Wickham。
图0.7 R语言专家—Hadley Wickham
2019年,在国际统计学年会上,Hadley被授予COPSS奖,该奖项是国际统计学领域的最高奖项,被誉为“统计学界的诺贝尔奖”。他现在是Rstudio首席科学家,同时也是奥克兰大学、斯坦福大学和赖斯大学的统计系兼职教授。为了使数据科学更简洁、高效、有趣,他编写了大量知名的R包,主要包括下面这些。
● 数据科学相关的包tidyverse
❏ ggplot2用于数据可视化。
❏ dplyr用于数据操作。
❏ tidyr用于数据清洗。
❏ stringr用于处理字符串。
❏ lubridate用于处理日期时间。
● 数据导入相关的包
❏ readr用于读入.csv/fwf文件。
❏ readxl用于读入.xls/.xlsx文件。
❏ haven用于读入SAS/SPSS/Stata文件。
❏ httr用于与Web交互的APIs。
❏ rvest用于网页爬虫。
❏ xml2用于读入XML文件。
● R开发工具
❏ devtools用于开发R包。
❏ roxygen2用于生成内联(in-line)文档。
❏ testthat用于单元测试。
❏ pkgdown用于创建美观的包网页。
Hadley还出版过一系列图书,包括:
● 《R数据科学》(R for Data Science)介绍用R做数据科学的关键工具。
● 《ggplot2:数据分析与图形艺术》(ggplot2: Elegant Graphics for Data Analysis)展示如何使用ggplot2创建有助于理解数据的图形。
● 《高级R语言编程指南》(Advanced R)帮助你掌握R语言,以及使用R语言的深层技巧。
● 《R包开发》(R Packages)讲授良好的R软件项目实践,科学地创建R包:打包文件、生成文档、测试代码。