前 言 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) 专享 尊重版权