前 言
背景和动机
不断增长的数据量和复杂性给分析人员提出了新挑战,他们需要能够对复杂的数据集进行转换来回答重要的统计问题。一份关于本科生数据科学的调查报告[National Academies of Science, Engineering, and Medicine, 2018]指出,数据科学正在彻底改变科学和工作场所。他们将数据科学家定义为“主要从事复杂和海量数据资源分析的知识工作者”。
Michael I. Jordan将数据科学描述为计算思想和推理(统计)思想的结合。如果没有能够整理(wrangle)或维护(marshal)我们周围日益丰富和复杂的数据的技能,分析师将无法使用这些数据做出更好的决策。
对具备这些技能的毕业生的需求非常迫切。根据公司评级网站Glassdoor的报告,2016—2019年间,每年“数据科学家”都是美国薪酬最高的工作[Columbus, 2019]。
新的数据技术使从比以往更多的来源提取数据成为可能。流线型的数据处理库使数据科学家能够表达如何将这些数据重组为适合分析的形式。数据库系统能使存储和检索越来越多的数据成为可能。最先进的工作流工具有助于形成良好的文档和可再现的分析。现代统计和机器学习方法允许分析者拟合和评估模型,并进行有监督或无监督的学习以提取现实中内在的信息。现代数据科学需要将统计、计算、数据以及通信技能进行紧密结合。
目标受众
《现代数据科学(R语言·第2版)》是为那些想要学习适当技能来处理复杂数据科学项目和“用数据思考”(由谷歌的Diane Lambert 创造)的读者而写的。使用数据解决问题的愿望是《现代数据科学(R语言·第2版)》介绍的方法的核心。
我们承认,不可能在一本书中涵盖所有这些主题的细节层次:许多章节可以有效地构成一门课程或一系列课程的基础。相反,我们的目标是为现实世界数据的分析打下基础,并确保分析师看到统计和数据分析的作用。阅读《现代数据科学(R语言·第2版)》后,读者将极大地扩展他们处理这些数据的技能,并对他们不断地学习新技术的能力树立新的信心。
《现代数据科学(R语言·第2版)》最初是为了支持一个学期(13周)的数据科学高年级课程。我们还认为,《现代数据科学(R语言·第2版)》对于相关学科的更高年级的学生也非常有用,而且对于那些想要提高数据科学技能的分析师也很有用。同时,没有编程或统计经验的普通读者可以阅读《现代数据科学(R语言·第2版)》的第Ⅰ部分。
《现代数据科学(R语言·第2版)》的主要特点
关注案例研究和扩展示例
我们以一系列复杂的、现实世界的扩展案例研究和示例为特色,这些案例研究和示例来自广泛的应用领域,包括政治、交通、体育、环境科学、公共卫生、社交媒体和娱乐。这些丰富的数据集需要使用复杂的数据抽取技术、现代数据可视化方法和精确的计算方法。
背景是这些问题的核心,我们撰写这本书的目的是促进统计思维、数据相关技能和沟通能力的平行发展。每章侧重的应用扩展示例各不相同,而章节练习题可让读者巩固和完善该章中所学的知识。
结构
这本书有三个主要部分和补充附录。第Ⅰ部分介绍数据科学,包括数据可视化的介绍、数据管理(或“整理”)的基础和职业道德伦理。第Ⅱ部分扩展了基础统计的关键建模概念,包括回归建模、分类、预测、统计基础和仿真。第Ⅲ部分介绍更高级的主题,包括交互式数据可视化、SQL、关系数据库、地理空间数据、文本挖掘和网络科学。
最后,我们在附录中介绍《现代数据科学(R语言·第2版)》的R包、R语言、RStudio、算法思想的一些关键方面、可再现性分析、回归方法,以及如何安装一个本地SQL数据库。
相关材料
除了许多例子和扩展的案例研究外,《现代数据科学(R语言·第2版)》第2~20章的每章末尾都包含了练习题以及在线提供的补充练习。许多练习都是开放式的,旨在让学生探索在解决数据科学问题时的创造力(可从出版商处获得教师参考答案手册)。
《现代数据科学(R语言·第2版)》的网站是https://mdsr-book.github.io/mdsr2e,网站内容包括《现代数据科学(R语言·第2版)》目录、各章全文、参考文献、主题和R索引。教师网站是https://mdsr-book.github.io/,网站内容包含代码示例、补充练习、附加练习和勘误表。
第2版的变化
数据科学发展迅速,而且自从我们写了第1版以来,已发生了很多变化。我们已经更新了所有章节的内容,以详细解释其中的许多变化,并采用了最先进的R程序包。
首先,对使用地理空间数据的内容进行了扩展,并分为两章(第17章和第18章)。第17章的重点是处理地理空间数据,第18章的重点是地理空间计算。现在,这两章都使用sf包和ggplot2中的新函数geom_sf()。这些变化使学生能够更深入地了解地理空间数据分析。
其次,关于规整数据的一章(第6章)经历了重大修订。增加了新的关于list-column的一节,而关于迭代的部分已经扩展为完整的一章(第7章)。第7章全部使用了purrr包提供的函数式编程风格。这些变化有助于学生养成一种弹性思维习惯:如果复制和粘贴代码超过两次,那么可能有一种更有效的方法。
另外,关于监督学习的内容被分为两章(第10章和第11章),并更新为使用tidymodels系列包。第10章概括介绍模型评估,第11章介绍几种模型。tidymodels生态系统以与tidyverse一致的方式为拟合、解释和评估各种机器学习模型提供了相应的语法。这些更改显著减少了本章代码的认知开销。
其他几章的内容做了较小但具有实质性的一些修订。《现代数据科学(R语言·第2版)》中的所有代码都经过了修改,以更加符合tidyverse语法和风格。我们还修订了第1版的练习题和解答,并添加了新的练习题。每章的代码现在都可从配书网站上找到。这本书已被移植到bookdown,因此可以在以下网站上找到完整版本:https://mdsr-book.github.io/mdsr2e。
技术的关键角色
虽然许多工具可有效地用于开展数据科学研究,分析技术也在迅速变化,但R和Python已经成为两个非常强大且可扩展的环境。虽然对于一个数据科学家来说,能够使用多种技术进行分析是很重要的,但我们在《现代数据科学(R语言·第2版)》选择使用R和RStudio来避免认知过载。我们描述一个强大的和有机联系的工具集,可以在一个学期的范围内学完,这为数据整理和探索提供了基础。
我们充分利用RStudio环境。这个强大且易于使用的前端为R添加了许多特性,包括对包的支持、代码补全、集成帮助、调试器和其他编码工具。根据我们的经验,RStudio的使用能极大地提高R用户的生产率,并且通过紧密集成可再现的分析工具,有助于避免容易出错的“剪切粘贴”工作流。我们的学生和同事发现RStudio有一个非常舒适的界面。使用该界面不需要具备R或RStudio方面的知识或经验,附录对此提供了简单介绍。
如前所述,我们全面整合了tidyverse的许多实质性改进。tidyverse是一套基础的程序包,提供了与R更一致的接口[Wickham,2019h]。tidyverse软件包中嵌入的许多设计决策解决了传统上使R难以用于数据分析的问题。这些决策允许新手用户更快地取得进展并养成良好习惯。
我们使用了一个可再现的分析系统(knitr)来生成《现代数据科学(R语言·第2版)》中的示例代码和输出。该书的网站上提供了从这些文件中提取的代码。我们详细讨论了这些系统的原理和用法。特别是,我们认为与RStudio紧密集成的knitr和markdown包应该成为每个R用户的工具箱的一部分。无法想象,在没有它们的情况下如何从事一个项目。
现代数据科学是一项团队工作。为能充分参与,分析师必须能够提出问题,找出解决问题的数据,将其融入计算环境,建立模型,进行探索,然后交流结果。这是一个迭代过程,需要统计和计算技能的混合。
如何使用《现代数据科学(R语言·第2版)》
《现代数据科学(R语言·第2版)》的材料迄今为止已经支撑了Amherst学院、Smith学院和Macalester学院,以及世界上其他学校的多门课程。据我们所知,这些课程包括数据科学的一门中级课程(Smith学院,2013年和2014年;Amherst学院,自2017年以来的学年)、数据科学的一门入门课程(Smith学院,2016年)和高级数据分析的一门顶级课程(Amherst学院,多个学年)。
Smith学院数据科学入门课程没有任何先决条件,它主要包括以下材料子集。
● 数据可视化:三周,包括第1~3章。
● 数据整理:五周,包括第4~7章。
● 职业伦理道德:一周,包括第8章。
● 数据库查询:两周,包括第15章。
● 地理空间数据:两周,包括第17章和第18章的部分内容。
Amherst学院的中级课程采用了[Baumer,2015b]的方法,该方法要求先修一些统计学和计算机科学课程,还有一个期末综合项目。本课程一般包括以下章节:
● 数据可视化:两周,包括第1~3章以及第14章。
● 数据整理:四周,包括第4~7章。
● 职业伦理道德:一周,包括第8章。
● 无监督学习:一周,包括第12章。
● 数据库查询:一周,包括第15章。
● 地理空间数据:一周,包括第17章和第18章的部分内容。
● 文本挖掘:一周,包括第19章。
● 网络科学:一周,包括第20章。
Amherst学院的“顶级”课程更深入地回顾了其中大部分内容:
● 数据可视化:三周,包括第1~3章以及第14章。
● 数据整理:两周,包括第4~7章。
● 职业伦理道德:一周,包括第8章。
● 仿真:一周,包括第13章。
● 统计学习:两周,包括第10~12章。
● 数据库:一周,包括第15章和附录F。
● 文本挖掘:一周,包括第19章。
● 空间数据:一周,包括第17章。
● 大数据:一周,包括第21章。
我们期望《现代数据科学(R语言·第2版)》可作为其他各类课程的主要资料,无论是否有额外的补充材料。
第Ⅰ部分的内容,特别是第3章介绍的ggplot2可视化概念和第4章介绍的dplyr数据整理操作是基本内容,是第Ⅱ部分和第Ⅲ部分内容的前提。第Ⅲ部分内容中的每一个主题都彼此独立,与第Ⅱ部分内容中的材料无关。因此,尽管大多数教师希望在所有课程中涵盖第Ⅰ部分的大部分或全部内容,但第Ⅱ部分和第Ⅲ部分的内容几乎可以完全自由地添加。
第Ⅱ部分内容中的材料旨在让初学者了解统计学(即基本的推理和线性回归)知识,让学生走进更丰富多彩的统计建模和统计推理世界。
彩图
《现代数据科学(R语言·第2版)》是黑白印刷,无法显示彩图效果。读者可扫描封底二维码,下载彩色图片。
参考资料
正文所涉及参考资料的形式是[*],即方括号中加编号。读者可扫描封底二维码,下载“参考资料”文档,从中找到编号对应的资料。
致谢
感谢Informa CRC/Chapman和Hall的John Kimmel对我们的支持和指导。感谢Jim Albert、Nancy Boynton、Jon Caris、Mine ?etinkaya-Rundel、Jonathan Che、Patrick Frenett、Scott Gilman、Maria-Cristiana G?rj?u、Johanna Hardin、Alana Horton、John Horton、Kinari Horton、Azka Javaid、Andrew Kim、Eunice Kim、Caroline Kusiak、Ken Kleinman、Priscilla (Wencong) Li、Amelia McNamara、Melody Owen、Randall Pruim、Tanya Riseman、Gabriel Sosa、Katie St. Clair、Amy Wagaman、Susan (Xiaofei) Wang、Hadley Wickham、J. J. Allaire,感谢RStudio的开发者们、匿名评论员、Smith 和Amherst学院的多个班级,感谢其他许多对R环境、RStudio环境、手稿提出有用建议的人士。Rose Porta对于校对和简化从Sweave到R Markdown的过渡过程发挥了重要作用。Jessica Yu将第1版的大部分练习转换为基于etude的新格式,并添加了标签。
尤其需要提出的是,我们非常感谢Cory、Maya以及Julia的耐心和支持。