前言

要是一本书里没有图画和对话,那还有什么意思呢?

——爱丽丝,《爱丽丝梦游仙境》

它太神奇了,满载珍宝,可以让那些聪明狡猾和粗野胆大的人得到充分满足;但并不适合胆小者。

——Q,“Q Who?”,《星际迷航:下一代》

在开始写这本书时,我花了很多时间搜索适合于开始本书的名言警句。最后,我找到了这两句话。R是一个非常灵活的平台,是专用于探索、展示和理解数据的语言,因此我引用了《爱丽丝梦游仙境》的句子来表示当今统计分析的潮流——一个探索、展示和理解的交互式过程。

第二句话反映了大部分人对R的看法:难学。但你完全没必要这样想。虽然R很强大,应用广泛,不论你是新手还是略有经验的用户,众多的分析和绘图函数(超过50 000个)都很容易让你望而却步,但实际上并非无规律可循。只要有合适的指导,你就可以畅游其中,选择所需的工具,用最优雅、最简洁、最高效的方式来完成工作——那真的很酷!

多年前,我在申请一个统计咨询职位时,第一次遇到了R。雇主在正式面试前发来的材料中问我是否熟悉R。根据猎头的建议,我立马回答“是的,我很熟悉”,然后开始恶补R。在统计和研究方面我有丰富的经验,作为SAS和SPSS程序员也有25年的工作经验,而且对各种编程语言也颇为精通。学习R能有多难?但事与愿违。

在学习这门语言的过程中(因为要面试,我要尽可能地快),我发现这门语言无论是底层的结构还是各种高级的统计方法,都是由各具体领域的专家为同行专家编写的。看在线帮助简直就是折磨,那不是教程,都是参考手册。每当我觉得自己已经对R的结构和功能有足够把握时,就会发现一些闻所未闻的新东西,它们让我感觉自己很渺小。

为了解决这些问题,我开始以数据科学家的角度学习R。我开始思考如何才能成功地处理、分析和理解数据,包括:

  • 获取数据(从各种数据源将数据导入程序);

  • 整理数据(编码缺失值、修复或删除错误数据、将变量转换成更方便的格式);

  • 注释数据(以记住每段数据的含义);

  • 总结数据(通过描述性统计量了解数据的概况);

  • 数据可视化(一图胜千言);

  • 数据建模(解释数据间的关系,检验假设);

  • 整理结果(创建具有出版水平的表格和图形)。

然后,我试图用R来完成这些任务。通过教授别人来学习是最好的方式,所以我创建了一个网站(www.statmethods.net),不断把我学到的东西放在上面。

大概一年后,Marjan Bace(Manning的出版人)打电话给我,问我是不是能写一本关于R的书。那时我已经写了50篇期刊文章、4份技术手册,以及大量章节的内容,还写了一本关于研究方法的书,所以,写一本关于R的书能有多难?结果依然是事与愿违。

你现在捧着的这本书是我多年来梦寐以求的。我试图提供一份R的指南,让你能尽快感受到R的强大以及开源的魅力,不再感到沮丧和忧虑。我希望你能喜欢本书。

另外,虽然当年我成功地申请到了那个职位,但并未入职。不过,学习R的经历改变了我的职业方向,这是我未曾想到的。真可谓人生如戏。

致谢

很多人都对本书精益求精并付出了辛勤的劳动,在此让我对他们一一表示感谢。

  • Marjan Bace,Manning出版人,最初劝说我撰写本书的人。

  • Sebastian Stirling,进度编辑,花了大量时间与我电话沟通,帮我组织材料、理清概念,帮我润色文字,在整个出版过程中给了我很多帮助。

  • Karen Tegtmeyer,评审编辑,帮助寻找审稿人并协调评审进度。

  • Mary Piergies及其团队成员Liz Welch、Susan Harkins和Rachel Schroeder,他们指导了本书的出版过程。

  • Pablo Domínguez Vaselli,技术审读人,帮我理清了很多易混淆的地方,从独立而专业的角度测试了代码。

  • 所有花费时间审读本书内容,寻找书写错误和提供了宝贵建议的审稿人:Chris Williams、Charles Malpas、Angela Staples、Daniel Reis Pereira博士、D. H. van Rijn博士、Christian Marquardt博士、Amos Folarin、Stuart Jefferys、Dror Berel、Patrick Breen、Elizabeth Ostrowski、Atef Ouni博士、Carles Fenollosa、Ricardo Pietrobon、Samuel McQuillin、Landon Cox、Austin Ziegler、Rick Wagner、Ryan Cox、Sumit Pal、Philipp K. Janert、Deepak Vohra和Sophie Mormede。

  • 在本书完成前参与MEAP(Manning早期试读计划)的同仁,他们提出了重要的问题、指出了书中的错误并提供了有益的建议。

他们每个人的贡献都让本书的质量更上一层楼。

我还想感谢为R成为如此强大的数据分析平台而做出卓越贡献的软件开发人员。这其中有R的核心开发者,还有那些开发R包和维护各种软件包的个人,他们极大地扩展了R的功能。附录F罗列了本书中涉及的软件包的作者。其中,我要特别感谢John Fox、Hadley Wickham、Frank E. Harrell、Deepayan Sarkar和William Revelle。我会尽可能准确地介绍他们的贡献,并为本书中所有可能存在的错误或是误导性描述负责。

在本书开头,我还应该感谢我的妻子,同时她也是我的合作者:Carol Lynn。她对统计学和编程都没有太多兴趣,但却反复阅读了每一章的内容,帮助纠正了很多问题并提出了大量建议。为了他人而研读多元统计学实在是一件很有爱的事情。同样重要的是,她容忍我在深夜和周末编写此书,给予我无限的包容、支持和关怀。我真的感到非常幸运。

我还要感谢两个人。一位是我父亲,他对科学的热爱影响了我,还让我认识到了数据的价值。另一位是Gary K. Burger——我读研究生时的导师。我有段时间觉得自己想成为一名医生,是Gary引领我进入统计学和教育领域,这一切都是他赐予的。

目录

  • 版权声明
  • 那些年,我们一起学过的R语言
  • 译者致谢
  • 前言
  • 关于本书
  • 关于封面图片
  • 第一部分 入门
  • 第1章 R语言介绍
  • 第2章 创建数据集
  • 第3章 图形初阶
  • 第4章 基本数据管理
  • 第5章 高级数据管理
  • 第二部分 基本方法
  • 第6章 基本图形
  • 第7章 基本统计分析
  • 第三部分 中级方法
  • 第8章 回归
  • 第9章 方差分析
  • 第10章 功效分析
  • 第11章 中级绘图
  • 第12章 重抽样与自助法
  • 第四部分 高级方法
  • 第13章 广义线性模型
  • 第14章 主成分和因子分析
  • 第15章 处理缺失数据的高级方法
  • 第16章 高级图形进阶
  • 后记:探索R的世界
  • 附录A 图形用户界面
  • 附录B 自定义启动环境
  • 附录C 从R中导出数据
  • 附录D 制作出版级品质的输出
  • 附录E R中的矩阵运算
  • 附录F 本书中用到的扩展包
  • 附录G 处理大数据
  • 附录H 更新R
  • 参考文献