TURING 图灵程序设计丛书 MANNING R in Action Data Analysis and Graphics with R R语言 实战 [美]Robert I.Kabacof 著 高涛肖楠陈钢 译 学懂分析,玩转大数据 用R轻松实现数据可视化 从实际数据分析出发,全面掌握R编程 人民邮电出版社 POSTS TELECOM PRESS 图灵社区会员matrixvirus(matrixvirus(@l63.com)专享尊重版权
图灵社区会员 matrixvirus(matrixvirus@163.com) 专享 尊重版权
那些年,我们一起学过的R语言 公元前 2007年上半年的一天,一堆做基因组序列分析的代码让我认识了R语言。那是一份高质量的 R代码,各种标准的向量化操作、匿名函数、优美的代码格式让我欣喜,也让我茫然。同年暑假, 有幸到清华大学学习,刘军老师布置下来的作业是用HMM模型预测蛋白质二级结构。我壮着胆 子,硬着头皮,以C语言的风格用R语言完成了作业(各种循环,各种丑陋的标量)。 那些年,R语言所有的参考资料就是官方的几本手册,但庆幸的是,还有丁国徽博士翻译的 中文版。 公元纪年开始 2008年的初冬,北京市海淀区中国人民大学的一间阶梯教室内,举办了一场小众、既不太学 术技术档次也不高的会议。教室外的墙上挂着一条横幅,上书“第一届中国R语言会议”。这算是 R语言在国内发展历程中的一个里程碑。100多人参加了为期一天多的会议。参加那次会议的人不 少都成为了现在中国R语言社区最活跃的人,比如谢益辉、刘思喆、李舰、张翔、魏太云、陈堰 平等人。当然,其中也有当时就已经算是R语言社区元老的吴喜之老师和丁国徽博士。 没记错的话,当时出席会议的还有机械工业出版社的编辑。因为作为会议的承办机构,统计 之都社区(htp:lcos.name)的骨干们已经想通过出版一本高质量R语言书来推动R语言在中国的 发展,而出版界也已经开始注意到这个小众市场。那时候,大部分R语言书籍来自学术界。水平 高深莫测的专家教授们,乃至R语言的发明人Robert C.Gentleman大叔写出来的书,都让我这种 初窥门径的人越看越糊涂。同时,中文的R语言书籍也开始出现,但都只是将R语言作为某个特 定领域(比如生物信息学)的数据分析工具。 文艺复兴 会议举办了,人也都混了个脸熟,但R语言在国内的发展依旧不温不火。直到2011年,大数 据突然火了起来,R语言一举杀进编程语言排行榜前20名。刘思喆同学在“码农”界主流媒体《程 序员》上的文章,让语言一下子走到了很多人面前。大家发现,这个经常被描述成统计编程语 图灵社区会员matrixvirus(matrixvirus@163.com))专享尊重版权
IV 那些年,我们一起学过的 R 语言 那些年,我们一起学过的R语言 公元前 2007年上半年的一天,一堆做基因组序列分析的代码让我认识了R语言。那是一份高质量的 R代码,各种标准的向量化操作、匿名函数、优美的代码格式让我欣喜,也让我茫然。同年暑假, 有幸到清华大学学习,刘军老师布置下来的作业是用HMM模型预测蛋白质二级结构。我壮着胆 子,硬着头皮,以C语言的风格用R语言完成了作业(各种循环,各种丑陋的标量)。 那些年,R语言所有的参考资料就是官方的几本手册,但庆幸的是,还有丁国徽博士翻译的 中文版。 公元纪年开始 2008年的初冬,北京市海淀区中国人民大学的一间阶梯教室内,举办了一场小众、既不太学 术技术档次也不高的会议。教室外的墙上挂着一条横幅,上书“第一届中国R语言会议”。这算是 R语言在国内发展历程中的一个里程碑。100多人参加了为期一天多的会议。参加那次会议的人不 少都成为了现在中国R语言社区最活跃的人,比如谢益辉、刘思喆、李舰、张翔、魏太云、陈堰 平等人。当然,其中也有当时就已经算是R语言社区元老的吴喜之老师和丁国徽博士。 没记错的话,当时出席会议的还有机械工业出版社的编辑。因为作为会议的承办机构,统计 之都社区(http://cos.name)的骨干们已经想通过出版一本高质量R语言书来推动R语言在中国的 发展,而出版界也已经开始注意到这个小众市场。那时候,大部分R语言书籍来自学术界。水平 高深莫测的专家教授们,乃至R语言的发明人 Robert C. Gentleman 大叔写出来的书,都让我这种 初窥门径的人越看越糊涂。同时,中文的R语言书籍也开始出现,但都只是将R语言作为某个特 定领域(比如生物信息学)的数据分析工具。 文艺复兴 会议举办了,人也都混了个脸熟,但R语言在国内的发展依旧不温不火。直到2011年,大数 据突然火了起来,R语言一举杀进编程语言排行榜前20名。刘思喆同学在“码农”界主流媒体《程 序员》上的文章,让R语言一下子走到了很多人面前。大家发现,这个经常被描述成统计编程语 图灵社区会员 matrixvirus(matrixvirus@163.com) 专享 尊重版权
那些年,我们一起学过的R语言V 言的东西并不是仅仅檀长统计,其底层融合C/C++/Fortran等各种语言的优势、层出不穷的新模型、 日趋成熟的开发设施,再加上它跟Hadoop、多核计算、MPI等高性能计算技术的迅速结合,让人 们看到了它在大数据时代的潜力。 O'Reilly、Manning等技术图书出版商迅速跟进。与以往的学术出版社不同,它们的加入让R 语言书籍更容易被普通读者接受,也迅速降低了R语言的门槛。 你现在翻开的这本书,就是由业内大名鼎鼎的Quick-R网站(http:/www.statmethods.net)的 创始人Robert I..Kabacoff撰写并由Manning出版的。全书分为四部分,由浅入深地介绍了R语言本 身,以及如何用R语言实现或简单或复杂的数据分析和绘图。而书后8个附录中关于大数据分析、 自定义启动环境、图形界面等方面的内容,有一些早已被志愿者翻译成中文在互联网上广泛流传。 本书内容质量之高,权威性之强,由此可见一斑,足以帮读者快速地走过我曾经历过的迷茫。 结束公元纪年 这本书的翻译工作开始的时候我还在学校读书,实验室里有两三个人在使用语言做数据分 析,为发表论文而努力。现在,我坐在公司的工位上,周围的每个人都或多或少在使用R。整个 研发部门一千多人,多半每天都会用到R语言。R语言已经是新员工技术培训的必修内容。 若干天前,同事们在讨论中描绘出一个宏大的愿景:用高效的数据分析手段,建立起海量生 物实验数据到所有生物表型的预测模型。如果成功,这将结束公元纪年。这个愿景的核心不是新 的生物实验技术,也不是如何采集样本,而是数据分析。 有点画大饼的意思了,就此打住。让我们翻开这本书,或许,公元纪年真的能在我们手中结束。 —陈钢 2012年9月4日夜于深圳华大基因研究院 图灵社区会员matrixvirus(matrixvirus@163.com))专享尊重版权
那些年,我们一起学过的 R 语言 V 1 2 3 4 5 10 6 7 8 9 言的东西并不是仅仅擅长统计,其底层融合C/C++/Fortran等各种语言的优势、层出不穷的新模型、 日趋成熟的开发设施,再加上它跟Hadoop、多核计算、MPI等高性能计算技术的迅速结合,让人 们看到了它在大数据时代的潜力。 O’Reilly、Manning等技术图书出版商迅速跟进。与以往的学术出版社不同,它们的加入让R 语言书籍更容易被普通读者接受,也迅速降低了R语言的门槛。 你现在翻开的这本书,就是由业内大名鼎鼎的Quick-R网站(http://www.statmethods.net)的 创始人Robert I. Kabacoff撰写并由Manning出版的。全书分为四部分,由浅入深地介绍了R语言本 身,以及如何用R语言实现或简单或复杂的数据分析和绘图。而书后8个附录中关于大数据分析、 自定义启动环境、图形界面等方面的内容,有一些早已被志愿者翻译成中文在互联网上广泛流传。 本书内容质量之高,权威性之强,由此可见一斑,足以帮读者快速地走过我曾经历过的迷茫。 结束公元纪年 这本书的翻译工作开始的时候我还在学校读书,实验室里有两三个人在使用R语言做数据分 析,为发表论文而努力。现在,我坐在公司的工位上,周围的每个人都或多或少在使用R。整个 研发部门一千多人,多半每天都会用到R语言。R语言已经是新员工技术培训的必修内容。 若干天前,同事们在讨论中描绘出一个宏大的愿景:用高效的数据分析手段,建立起海量生 物实验数据到所有生物表型的预测模型。如果成功,这将结束公元纪年。这个愿景的核心不是新 的生物实验技术,也不是如何采集样本,而是数据分析。 有点画大饼的意思了,就此打住。让我们翻开这本书,或许,公元纪年真的能在我们手中结束。 ——陈钢 2012年9月4日夜于深圳华大基因研究院 图灵社区会员 matrixvirus(matrixvirus@163.com) 专享 尊重版权
前 言 要是一本书里没有图画和对话,那还有什么意思呢? —爱丽丝,《爱丽丝梦游仙境》 它太神奇了,满载珍宝,可以让那些聪明狡猾和粗野胆大的人得到充分满足;但并不适合胆 小者。 Q,“QWho?”,《星际迷航:下一代》 在开始写这本书时,我花了很多时间搜索适合于开始本书的名言警句。最后,我找到了这两 句话。R是一个非常灵活的平台,是专用于探索、展示和理解数据的语言,因此我引用了《爱丽 丝梦游仙境》的句子来表示当今统计分析的潮流一一个探索、展示和理解的交互式过程。 第二句话反映了大部分人对R的看法:难学。但你完全没必要这样想。虽然R很强大,应用 广泛,不论你是新手还是略有经验的用户,众多的分析和绘图函数(超过50000个)都很容易让 你望而却步,但实际上并非无规律可循。只要有合适的指导,你就可以畅游其中,选择所需的工 具,用最优雅、最简洁、最高效的方式来完成工作一那真的很酷! 多年前,我在申请一个统计咨询职位时,第一次遇到了R。雇主在正式面试前发来的材料中 问我是否熟悉R。根据猎头的建议,我立马回答“是的,我很熟悉”,然后开始恶补R。在统计和 研究方面我有丰富的经验,作为SAS和SPSS程序员也有25年的工作经验,而且对各种编程语言也 颇为精通。学习R能有多难?但事与愿违。 在学习这门语言的过程中(因为要面试,我要尽可能地快),我发现这门语言无论是底层的 结构还是各种高级的统计方法,都是由各具体领域的专家为同行专家编写的。看在线帮助简直就 是折磨,那不是教程,都是参考手册。每当我觉得自己已经对R的结构和功能有足够把握时,就 会发现一些闻所未闻的新东西,它们让我感觉自己很渺小。 为了解决这些问题,我开始以数据科学家的角度学习R。我开始思考如何才能成功地处理、 分析和理解数据,包括: 口获取数据(从各种数据源将数据导入程序): 口整理数据(编码缺失值、修复或删除错误数据、将变量转换成更方便的格式): 口注释数据(以记住每段数据的含义): 图灵社区会员matrixvirus(matrixvirus@163.com))专享尊重版权
前 言 VII 1 2 3 4 5 10 6 7 8 9 前 言 要是一本书里没有图画和对话,那还有什么意思呢? ——爱丽丝,《爱丽丝梦游仙境》 它太神奇了,满载珍宝,可以让那些聪明狡猾和粗野胆大的人得到充分满足;但并不适合胆 小者。 ——Q,“Q Who?”,《星际迷航:下一代》 在开始写这本书时,我花了很多时间搜索适合于开始本书的名言警句。最后,我找到了这两 句话。R是一个非常灵活的平台,是专用于探索、展示和理解数据的语言,因此我引用了《爱丽 丝梦游仙境》的句子来表示当今统计分析的潮流——一个探索、展示和理解的交互式过程。 第二句话反映了大部分人对R的看法:难学。但你完全没必要这样想。虽然R很强大,应用 广泛,不论你是新手还是略有经验的用户,众多的分析和绘图函数(超过50 000个)都很容易让 你望而却步,但实际上并非无规律可循。只要有合适的指导,你就可以畅游其中,选择所需的工 具,用最优雅、最简洁、最高效的方式来完成工作——那真的很酷! 多年前,我在申请一个统计咨询职位时,第一次遇到了R。雇主在正式面试前发来的材料中 问我是否熟悉R。根据猎头的建议,我立马回答“是的,我很熟悉”,然后开始恶补R。在统计和 研究方面我有丰富的经验,作为SAS和SPSS程序员也有25年的工作经验,而且对各种编程语言也 颇为精通。学习R能有多难?但事与愿违。 在学习这门语言的过程中(因为要面试,我要尽可能地快),我发现这门语言无论是底层的 结构还是各种高级的统计方法,都是由各具体领域的专家为同行专家编写的。看在线帮助简直就 是折磨,那不是教程,都是参考手册。每当我觉得自己已经对R的结构和功能有足够把握时,就 会发现一些闻所未闻的新东西,它们让我感觉自己很渺小。 为了解决这些问题,我开始以数据科学家的角度学习R。我开始思考如何才能成功地处理、 分析和理解数据,包括: 获取数据(从各种数据源将数据导入程序); 整理数据(编码缺失值、修复或删除错误数据、将变量转换成更方便的格式); 注释数据(以记住每段数据的含义); 图灵社区会员 matrixvirus(matrixvirus@163.com) 专享 尊重版权
VIl 前 言 口总结数据(通过描述性统计量了解数据的概况): 口数据可视化(一图胜千言)方 口数据建模(解释数据间的关系,检验假设): 口整理结果(创建具有出版水平的表格和图形)。 然后,我试图用R来完成这些任务。通过教授别人来学习是最好的方式,所以我创建了一个 网站(www.statmethods.net),不断把我学到的东西放在上面。 大概一年后,Marjan Bace(Manning的出版人)打电话给我,问我是不是能写一本关于R的 书。那时我已经写了50篇期刊文章、4份技术手册,以及大量章节的内容,还写了一本关于研究 方法的书,所以,写一本关于R的书能有多难?结果依然是事与愿违。 你现在捧着的这本书是我多年来梦寐以求的。我试图提供一份R的指南,让你能尽快感受到 R的强大以及开源的魅力,不再感到沮丧和忧虑。我希望你能喜欢本书。 另外,虽然当年我成功地申请到了那个职位,但并未入职。不过,学习的经历改变了我的 职业方向,这是我未曾想到的。真可谓人生如戏。 致谢 很多人都对本书精益求精并付出了辛勤的劳动,在此让我对他们一一表示感谢。 口Marjan Bace,Manning出版人,最初劝说我撰写本书的人。 口Sebastian Stirling,进度编辑,花了大量时间与我电话沟通,帮我组织材料、理清概念, 帮我润色文字,在整个出版过程中给了我很多帮助。 口Karen Tegtmeyer,评审编辑,帮助寻找审稿人并协调评审进度。 口Mary Piergies及其团队成员Liz Welch、Susan Harkins和Rachel Schroeder,他们指导了本书 的出版过程。 口Pablo Dominguez 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 图灵社区会员matrixvirus(matrixvirus@163.com))专享尊重版权
VIII 前 言 总结数据(通过描述性统计量了解数据的概况); 数据可视化(一图胜千言); 数据建模(解释数据间的关系,检验假设); 整理结果(创建具有出版水平的表格和图形)。 然后,我试图用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 图灵社区会员 matrixvirus(matrixvirus@163.com) 专享 尊重版权
前 言 X 罗列了本书中涉及的软件包的作者。其中,我要特别感谢John Fox、Hadley Wickham、Frank E. Harrell、Deepayan Sarkar和William Revelle。我会尽可能准确地介绍他们的贡献,并为本书中所 有可能存在的错误或是误导性描述负责。 在本书开头,我还应该感谢我的妻子,同时她也是我的合作者:Carol Lynn。她对统计学和 编程都没有太多兴趣,但却反复阅读了每一章的内容,帮助纠正了很多问题并提出了大量建议。 为了他人而研读多元统计学实在是一件很有爱的事情。同样重要的是,她容忍我在深夜和周末编 写此书,给予我无限的包容、支持和关怀。我真的感到非常幸运。 我还要感谢两个人。一位是我父亲,他对科学的热爱影响了我,还让我认识到了数据的价值。 另一位是GayK.Burger一我读研究生时的导师。我有段时间觉得自己想成为一名医生,是Gary 引领我进入统计学和教育领域,这一切都是他赐予的。 图灵社区会员matrixvirus(matrixvirus@163.com))专享尊重版权
前 言 IX 1 2 3 4 5 10 6 7 8 9 罗列了本书中涉及的软件包的作者。其中,我要特别感谢John Fox、Hadley Wickham、Frank E. Harrell、Deepayan Sarkar和William Revelle。我会尽可能准确地介绍他们的贡献,并为本书中所 有可能存在的错误或是误导性描述负责。 在本书开头,我还应该感谢我的妻子,同时她也是我的合作者:Carol Lynn。她对统计学和 编程都没有太多兴趣,但却反复阅读了每一章的内容,帮助纠正了很多问题并提出了大量建议。 为了他人而研读多元统计学实在是一件很有爱的事情。同样重要的是,她容忍我在深夜和周末编 写此书,给予我无限的包容、支持和关怀。我真的感到非常幸运。 我还要感谢两个人。一位是我父亲,他对科学的热爱影响了我,还让我认识到了数据的价值。 另一位是Gary K. Burger——我读研究生时的导师。我有段时间觉得自己想成为一名医生,是Gary 引领我进入统计学和教育领域,这一切都是他赐予的。 图灵社区会员 matrixvirus(matrixvirus@163.com) 专享 尊重版权
关于本书 如果你翻开了本书,那么很有可能是因为要做一些数据的收集、总结、转换、探索、建模、 可视化或呈现方面的工作。如果确实如此,那么R完全能够满足你的需求!R已经成了统计、预 测分析和数据可视化的全球通用语言。它提供各种用于分析和理解数据的方法,从最基础的到最 前沿的,无所不包。 R是一个开源项目,在很多操作系统上都可以免费得到,包括Windows、Mac OS X和Linux。 R还在持续发展中,每天都在纳入新的功能。此外,R还得到了社区的广泛支持,这个社区里既 有数据科学家也有程序员,他们很乐于为R的用户提供帮助或建议。 以能创建漂亮优雅的图形而闻名,但实际上它可以处理各种统计问题。基本的安装就提供 了数以百计的数据管理、统计和图形函数。不过,R很多强大的功能都来自社区开发的数以千计 的扩展(包)。 但这些好处都是有代价的。对于新手来说,经常遇到的两个基本难题就是:R到底是什么以 及R究竟能做什么?甚至是经验丰富的R用户也常常发现一些他们之前闻所未闻的新功能。 本书是一本R指南,高度概括了该软件和它的强大功能。本书会介绍基本安装中最重要的函 数,以及90多个重要扩展包中的函数。整本书都是围绕实际应用展开的,你将学会理解数据并能 够与他人交流这种对数据的理解。通读本书,你应该会对R的原理和功能有基本的了解,并知道 从什么地方学习更多的相关知识。你将能用各种技术实现数据的可视化,还能解决各种难度的数 据分析问题。 读者对象 每一个要处理数据的人都应该读读本书,他们不需要任何统计编程或R语言知识背景。R语 言新手完全能够读懂本书,而有经验的R老手也能在本书中发现很多实用的新东西。 没有统计背景,但需要用R操作数据、总结数据、绘制图形的读者会觉得第1章~第6章、第 11章和第16章比较容易理解。第7章和第10章则需要读者学过一学期的统计学课程;第8章、第9 章和第12章~第15章则需要读者学过一学年的统计学课程。不过,我尽可能地让每一章都能同时 迎合数据分析新手和专家的需求,让所有人都能从中获益。 图灵社区会员matrixvirus(matrixvirus@163.com))专享尊重版权
X 关于本书 关 于 本 书 如果你翻开了本书,那么很有可能是因为要做一些数据的收集、总结、转换、探索、建模、 可视化或呈现方面的工作。如果确实如此,那么R完全能够满足你的需求!R已经成了统计、预 测分析和数据可视化的全球通用语言。它提供各种用于分析和理解数据的方法,从最基础的到最 前沿的,无所不包。 R是一个开源项目,在很多操作系统上都可以免费得到,包括Windows、Mac OS X和Linux。 R还在持续发展中,每天都在纳入新的功能。此外,R还得到了社区的广泛支持,这个社区里既 有数据科学家也有程序员,他们很乐于为R的用户提供帮助或建议。 R以能创建漂亮优雅的图形而闻名,但实际上它可以处理各种统计问题。基本的安装就提供 了数以百计的数据管理、统计和图形函数。不过,R很多强大的功能都来自社区开发的数以千计 的扩展(包)。 但这些好处都是有代价的。对于新手来说,经常遇到的两个基本难题就是:R到底是什么以 及R究竟能做什么?甚至是经验丰富的R用户也常常发现一些他们之前闻所未闻的新功能。 本书是一本R指南,高度概括了该软件和它的强大功能。本书会介绍基本安装中最重要的函 数,以及90多个重要扩展包中的函数。整本书都是围绕实际应用展开的,你将学会理解数据并能 够与他人交流这种对数据的理解。通读本书,你应该会对R的原理和功能有基本的了解,并知道 从什么地方学习更多的相关知识。你将能用各种技术实现数据的可视化,还能解决各种难度的数 据分析问题。 读者对象 每一个要处理数据的人都应该读读本书,他们不需要任何统计编程或R语言知识背景。R语 言新手完全能够读懂本书,而有经验的R老手也能在本书中发现很多实用的新东西。 没有统计背景,但需要用R操作数据、总结数据、绘制图形的读者会觉得第1章~第6章、第 11章和第16章比较容易理解。第7章和第10章则需要读者学过一学期的统计学课程;第8章、第9 章和第12章~第15章则需要读者学过一学年的统计学课程。不过,我尽可能地让每一章都能同时 迎合数据分析新手和专家的需求,让所有人都能从中获益。 图灵社区会员 matrixvirus(matrixvirus@163.com) 专享 尊重版权
关于本书 XI 本书结构 本书的目的是让读者熟悉R平台,重点关注那些能马上应用到数据操作、可视化和理解的方 法。全书共16章,分为4部分:“入门”、“基础方法”、“中级方法”和“高级方法”。在8个附录中 还有更多的相关内容。 第1章首先简要介绍了R,以及它作为数据分析平台的诸多特性。这一章主要介绍了R的获取, 以及如何用网上的扩展包增强R基本安装的功能。另外,它还介绍了用户界面,以及如何以交互 方式和批处理方式运行程序。 第2章介绍了向R中导入数据的诸多方法。这一章的前半部分介绍了R用来存储数据的数据结 构,以及如何用键盘输入数据。后半部分介绍了怎样从文本文件、网页、电子表格、统计软件和 数据库向R导入数据。 很多用户最初接触R都是为了绘制图形,我们在第3章会对此作介绍。这一章介绍了创建、修 改图形的方法,以及如何将图形保存为各种格式的文件。 第4章探讨了基本的数据管理,包括数据集的排序、合并、取子集,以及变量的转换、重编 码和删除。 在第4章的基础上,第5章涵盖了数据管理中函数(数学函数、统计函数、字符函数)和控制 结构(循环、条件执行)的用法。然后我们介绍如何编写自己的R函数,以及如何用不同的方法 整合数据。 第6章演示了创建常见单变量图形的方法,例如柱状图、饼图、直方图、密度图、箱线图和 点图。这些图形对于理解单变量的分布都很有用。 第7章首先演示了如何总结数据,包括使用描述统计量和交叉表。然后,这一章介绍了用于 分析两变量间关系的基本方法,包括相关性、检验、卡方检验和非参数方法。 第8章介绍了针对一个数值型结果变量与一系列数值型预测变量间的关系进行建模的回归方 法,详细给出了拟合模型的方法、适用性评价和含义解释。 第9章介绍了基于方差及其变体对基本实验设计的分析。此处,我们通常感兴趣的是处理方 式的组合或条件对数值结果变量的影响。这一章还介绍了如何评价分析的适用性,以及如何可视 化地展示分析结果。 第10章详细介绍了功效分析。这一章首先讨论了假设检验,重点是如何判断在给定置信度的 前提下需要多少样本才能判断处理的效果。这可以帮助我们安排实验和准实验研究来获得有用的 结果。 第11章扩展了第5章的内容,介绍了创建表现两个或多个变量间关系的图形。这包括各种2D 和3D的散点图、散点图矩阵、折线图、相关图和马赛克图。 第12章介绍了一些稳健的数据分析方法,它们能处理比较复杂的情况,比如数据来源于未知 或混合分布、有小样本问题、有恼人的异常值,或者依据理论分布设计假设检验非常复杂且在数 学上难以处理的情况。这一章介绍的方法包括重抽样和自助法一很容易在R中实现的需要大量 计算机资源的方法。 图灵社区会员matrixvirus(matrixvirus@163.com))专享尊重版权
关于本书 XI 1 2 3 4 5 10 6 7 8 9 本书结构 本书的目的是让读者熟悉R平台,重点关注那些能马上应用到数据操作、可视化和理解的方 法。全书共16章,分为4部分:“入门”、“基础方法”、“中级方法”和“高级方法”。在8个附录中 还有更多的相关内容。 第1章首先简要介绍了R,以及它作为数据分析平台的诸多特性。这一章主要介绍了R的获取, 以及如何用网上的扩展包增强R基本安装的功能。另外,它还介绍了用户界面,以及如何以交互 方式和批处理方式运行程序。 第2章介绍了向R中导入数据的诸多方法。这一章的前半部分介绍了R用来存储数据的数据结 构,以及如何用键盘输入数据。后半部分介绍了怎样从文本文件、网页、电子表格、统计软件和 数据库向R导入数据。 很多用户最初接触R都是为了绘制图形,我们在第3章会对此作介绍。这一章介绍了创建、修 改图形的方法,以及如何将图形保存为各种格式的文件。 第4章探讨了基本的数据管理,包括数据集的排序、合并、取子集,以及变量的转换、重编 码和删除。 在第4章的基础上,第5章涵盖了数据管理中函数(数学函数、统计函数、字符函数)和控制 结构(循环、条件执行)的用法。然后我们介绍如何编写自己的R函数,以及如何用不同的方法 整合数据。 第6章演示了创建常见单变量图形的方法,例如柱状图、饼图、直方图、密度图、箱线图和 点图。这些图形对于理解单变量的分布都很有用。 第7章首先演示了如何总结数据,包括使用描述统计量和交叉表。然后,这一章介绍了用于 分析两变量间关系的基本方法,包括相关性、t检验、卡方检验和非参数方法。 第8章介绍了针对一个数值型结果变量与一系列数值型预测变量间的关系进行建模的回归方 法,详细给出了拟合模型的方法、适用性评价和含义解释。 第9章介绍了基于方差及其变体对基本实验设计的分析。此处,我们通常感兴趣的是处理方 式的组合或条件对数值结果变量的影响。这一章还介绍了如何评价分析的适用性,以及如何可视 化地展示分析结果。 第10章详细介绍了功效分析。这一章首先讨论了假设检验,重点是如何判断在给定置信度的 前提下需要多少样本才能判断处理的效果。这可以帮助我们安排实验和准实验研究来获得有用的 结果。 第11章扩展了第5章的内容,介绍了创建表现两个或多个变量间关系的图形。这包括各种2D 和3D的散点图、散点图矩阵、折线图、相关图和马赛克图。 第12章介绍了一些稳健的数据分析方法,它们能处理比较复杂的情况,比如数据来源于未知 或混合分布、有小样本问题、有恼人的异常值,或者依据理论分布设计假设检验非常复杂且在数 学上难以处理的情况。这一章介绍的方法包括重抽样和自助法——很容易在R中实现的需要大量 计算机资源的方法。 图灵社区会员 matrixvirus(matrixvirus@163.com) 专享 尊重版权
XⅫ 关于本书 第13章扩展了第8章中介绍的回归方法,分析非正态分布的数据。这一章首先介绍了广义线 性模型,然后重点介绍了如何预测类别型变量(Logistic回归)或计数变量(泊松回归)。 多元数据分析的一个难点是简化数据。第14章介绍了如何将大量的相关变量转换成较少的不 相关变量(主成分分析),以及如何发现一系列变量中的潜在结构(因子分析)。这些方法涉及许 多步骤,每一步都有详细的介绍。 实际工作中面临的一一个普遍问题是数据值缺失,第15章介绍了一一个应对此问题的现代方法。 中有很多简捷的方法可以用来分析因各种原因导致缺失而生成的不完整数据。这一章对一些好 的方法都有介绍,还具体说明了在什么情况下应该用哪一种以及应该避免使用哪些方法。 第16章介绍了R中最先进、最有用的数据可视化方法,包括用lattice图形表现非常复杂的数据, 简要介绍新的g9P1ot2包,并对各种跟图形实时交互的方法做了综述。 后记中介绍了一些优秀的网站,有助于读者进一步学习R、加入R社区、获得帮助,并及时 获得R这个快速发展的软件的最新信息。 最后的内容也很重要,8个附录(从A到H)扩展了正文的一些内容,包括R中的图形用户界 面、自定义和升级R、导出数据到其他软件、创建出版级质量的输出、(像MATLAB一样)用R做 矩阵计算,以及处理大型数据集。 例子 为了让本书内容尽可能接近各个领域的实际情况,我从心理学、社会学、医学、生物、商业 和工程等诸多领域选取了一些例子。所有的这些例子都不需要读者具备这些领域的专业知识。 这些例子中所使用的数据集是经过精心挑选的,因为它们不仅提出了有趣的问题,而且比 较小。这样能让读者专注于技术,快速地理解所涉及的过程。在学习新方法时,数据集小是有好 处的。 这些数据集有些是基本安装中就有的,有些则可以通过网上下载软件包来获得。每个例子 的代码都可以从www.manning.com/RinAction下载。为了更好地理解本书中的内容,我建议读者 在阅读本书时试试这些例子。 经常听人引用这么一一句话:如果你问两个统计学家该如何分析一个数据集,你会得到三个答 案。反过来说,每个答案都能让你更好地理解数据集。对于一个问题,我不会说某种分析方式是 最好的,或者是唯一的。读者应该用本书中学到的技术动手分析数据,看看都能得到什么。R是 交互式的,最好的学习方法就是自己尝试。 排版约定 下面是本书的排版约定。 口等宽字体用于代码清单。 ①也可在图灵社区(www..ituring..com.cn)本书网页免费注册下载。一编者注 图灵社区会员matrixvirus(matrixvirus@163.com))专享尊重版权
XII 关于本书 第13章扩展了第8章中介绍的回归方法,分析非正态分布的数据。这一章首先介绍了广义线 性模型,然后重点介绍了如何预测类别型变量(Logistic回归)或计数变量(泊松回归)。 多元数据分析的一个难点是简化数据。第14章介绍了如何将大量的相关变量转换成较少的不 相关变量(主成分分析),以及如何发现一系列变量中的潜在结构(因子分析)。这些方法涉及许 多步骤,每一步都有详细的介绍。 实际工作中面临的一个普遍问题是数据值缺失,第15章介绍了一个应对此问题的现代方法。 R中有很多简捷的方法可以用来分析因各种原因导致缺失而生成的不完整数据。这一章对一些好 的方法都有介绍,还具体说明了在什么情况下应该用哪一种以及应该避免使用哪些方法。 第16章介绍了R中最先进、最有用的数据可视化方法,包括用lattice图形表现非常复杂的数据, 简要介绍新的ggplot2包,并对各种跟图形实时交互的方法做了综述。 后记中介绍了一些优秀的网站,有助于读者进一步学习R、加入R社区、获得帮助,并及时 获得R这个快速发展的软件的最新信息。 最后的内容也很重要,8个附录(从A到H)扩展了正文的一些内容,包括R中的图形用户界 面、自定义和升级R、导出数据到其他软件、创建出版级质量的输出、(像MATLAB一样)用R做 矩阵计算,以及处理大型数据集。 例子 为了让本书内容尽可能接近各个领域的实际情况,我从心理学、社会学、医学、生物、商业 和工程等诸多领域选取了一些例子。所有的这些例子都不需要读者具备这些领域的专业知识。 这些例子中所使用的数据集是经过精心挑选的,因为它们不仅提出了有趣的问题,而且比 较小。这样能让读者专注于技术,快速地理解所涉及的过程。在学习新方法时,数据集小是有好 处的。 这些数据集有些是R基本安装中就有的,有些则可以通过网上下载软件包来获得。每个例子 的代码都可以从www.manning.com/RinAction①下载。为了更好地理解本书中的内容,我建议读者 在阅读本书时试试这些例子。 经常听人引用这么一句话:如果你问两个统计学家该如何分析一个数据集,你会得到三个答 案。反过来说,每个答案都能让你更好地理解数据集。对于一个问题,我不会说某种分析方式是 最好的,或者是唯一的。读者应该用本书中学到的技术动手分析数据,看看都能得到什么。R是 交互式的,最好的学习方法就是自己尝试。 排版约定 下面是本书的排版约定。 等宽字体用于代码清单。 —————————— ① 也可在图灵社区(www.ituring.com.cn)本书网页免费注册下载。——编者注 图灵社区会员 matrixvirus(matrixvirus@163.com) 专享 尊重版权
关于本书 XⅢ 口等宽字体还用于在一般的正文中表示代码或之前定义的对象。 口代码清单中的斜体表示占位符。你应该用自己问题中的文本和值来替换它们。例如, path_to_y_file就应该用该文件在你自己电脑上的实际路径来替换。 口R是一种交互式语言,用提示符(默认是>)表示已经准备好读取用户的下一行输入。本 书中的很多代码清单都是从交互式会话中截取的。当你看到代码是以>开头时,不要输入 这个提示符。 口用行内注释作为代码注释(这是Manning图书的传统做法)。此外,有些注释会以有序项 目符号的形式出现(如①),它们对应稍后正文中对代码作出的解释。 口为了节约版面,让正文更紧凑,我们会在交互式会话的输出中加入一些空白,同时也会 删除一些与当前讨论问题无关的文字。 作者在线 在购买本书英文版的同时,你便获得了访问Manning出版社运营的私密Web论坛的权限,在 这里你可以发表图书评论、询问技术问题,还可以从作者或其他读者那里获得帮助。用浏览器访 问www.manning.com/RinAction就可以访问和订阅这个论坛。这个网页说明了注册后如何访问论 坛、能获得何种帮助以及论坛上的行为规范等信息。 Manning致力于为读者之间以及读者和作者之间提供一个良好的交流空间。作者对论坛的参 与完全是自愿的,他们对AO论坛的贡献都是(无偿的)志愿行为。我们建议读者向作者提一些 有挑战性的问题,作者对这样的问题会更有兴趣。 在本书英文版的整个销售期中,大家都可以从出版商的网站上访问AO论坛,阅读以前的 讨论。 图灵社区会员matrixvirus(matrixvirus@163.com))专享尊重版权
关于本书 XIII 1 2 3 4 5 10 6 7 8 9 等宽字体还用于在一般的正文中表示代码或之前定义的对象。 代码清单中的斜体表示占位符。你应该用自己问题中的文本和值来替换它们。例如, path_to_my_file就应该用该文件在你自己电脑上的实际路径来替换。 R是一种交互式语言,用提示符(默认是>)表示已经准备好读取用户的下一行输入。本 书中的很多代码清单都是从交互式会话中截取的。当你看到代码是以>开头时,不要输入 这个提示符。 用行内注释作为代码注释(这是Manning图书的传统做法)。此外,有些注释会以有序项 目符号的形式出现(如 ),它们对应稍后正文中对代码作出的解释。 为了节约版面,让正文更紧凑,我们会在交互式会话的输出中加入一些空白,同时也会 删除一些与当前讨论问题无关的文字。 作者在线 在购买本书英文版的同时,你便获得了访问Manning出版社运营的私密Web论坛的权限,在 这里你可以发表图书评论、询问技术问题,还可以从作者或其他读者那里获得帮助。用浏览器访 问www.manning.com/RinAction就可以访问和订阅这个论坛。这个网页说明了注册后如何访问论 坛、能获得何种帮助以及论坛上的行为规范等信息。 Manning致力于为读者之间以及读者和作者之间提供一个良好的交流空间。作者对论坛的参 与完全是自愿的,他们对AO论坛的贡献都是(无偿的)志愿行为。我们建议读者向作者提一些 有挑战性的问题,作者对这样的问题会更有兴趣。 在本书英文版的整个销售期中,大家都可以从出版商的网站上访问AO论坛,阅读以前的 讨论。 图灵社区会员 matrixvirus(matrixvirus@163.com) 专享 尊重版权