前 言
本书主要介绍有关数据分析的内容以及称为R的编程语言。它正迅速变成各专业事实上的标准,并且被应用到了从科学和医学到商业和工程学的每一个可以想象到的知识领域中。
R不仅是一个计算机程序,它还是一种统计编程环境和语言。R是免费和开源的,因此可供每一位使用计算机的用户所用。它非常强大且具有灵活性,但它也不同于你可能使用过的大多数计算机程序。你必须将命令直接输入程序中,并让它可用。由于这一点及其复杂性,掌握R是一项难度很大的任务。
本书会深入探究R语言并使用简单数据示例让其可用于探究其能力和多用性。在学习如何“使用R进行表述”的过程中,你要释放其潜力,并且即便在应对最复杂的数据分析任务时也能得到更好的见解。
本书读者对象
本书适合那些需要进行数据分析的读者,无论他们的专业和工作是什么。不管你是否在科学、商业、医学或工程学领域工作,你都需要分析数据并呈现结果。R功能强大且具有灵活性,并且是完全跨平台的。这意味着你可以将数据和结果分享给任何人。有一个规模庞大的项目团队支持R,所以免费并不意味着低劣!
如果你完全没有学习过R,那么本书将让你能够获得它并开始你的R学习之旅。开始学习R并不需要你预先具备与该程序有关的某方面的知识。如果你已经了解了R,那么你会发现本书是一本有用的参考书,你可以反复使用本书中的知识;第1章主要与安装R有关,所以你可能会希望跳转到第2章。
本书的重点并非统计分析,因此熟悉一些基础分析方法会有所助益(但这并非必需的)。本书主要介绍让R为你所用的方法;这意味着要学习的是R语言而非统计方法。一旦你熟悉了R,你将能使用它来执行各式各样的分析任务,而这并非一本书的内容能够全面介绍的。R还可以生成展示用的高质量图形,这本书将引导你全面掌握其复杂处理。
本书内容
R是一种计算机程序和统计编程语言/环境。它允许你使用各种分析方法并且会生成展示用的高质量图形。本书将全面介绍R语言并引导你更好地理解如何使用R完成所需的任务。本书不会过于着重介绍实际的统计检验;相反,R的灵活性是如此之大,它能够执行的检验列表非常长,要在像这样一本入门级书籍中完全介绍其检验方法是不现实的。更准确地说,本书的目的是让读者熟悉R语言并能执行一些常用的统计方法。这样一来,你就能进行自我学习并亲自探究R的全部潜力。
所以,本书重点放在R自身的操作上。跟随本书的学习过程,你将了解如何执行一系列通常会用到的统计方法,其中包括方差分析(ANOVA)以及线性回归分析,这两种分析方法被广泛应用于各行各业,因此掌握它们非常重要。你还将学习生成各种各样满足需求的图形的一系列方法。
本书涵盖了各个最新的R版本。随着新版本的发布,R程序时时刻刻都在保持着更新。不过,你需要掌握的大多数命令并没有变化,即便是较旧的版本也能运行良好。
本书的组织结构
本书具有循序渐进的特征,后一章的内容往往构建在你之前学习到的技能的基础上。因此如果你是一个初学者,那么你很可能会发现从本书开头开始学习并渐进式逐章阅读本书的方式是最有用的。如果你是一个经验较丰富的读者,那么你可能会希望使用所选的章节作为参考资料,以便提升你的技能。
没有任何一种学习R的方法是完全通用的,但我尽可能尝试提供了最合理的学习路径。例如,学习生成图形非常重要,但除非你知道可能需要呈现的分析类型,否则制作这些图形可能会比较乏味。因此,主要介绍图形的章节一般会放在主要介绍分析的章节之后。
总体而言,本书从如何获得并安装R以及如何访问帮助系统开始介绍。接着介绍数据的基础知识——例如,如何将数据放入R中。之后,你将了解如何处理数据,执行一些基础统计分析,并开始处理图形。其后你将学习一些更高级的分析方法并回到图形的内容介绍上面。最后,将介绍使用R创建你自己的程序的方法。
每一章的开头都会对你将要学习的主题进行概述。章节内容包含许多示例,并且是以“跟我学”的样式编写的。贯穿全文,所有的概念都在简单示例的引导下进行阐释。你可以从配套学习网站下载数据并在你阅读本书的过程中使用这些数据(稍后将详细介绍这一点)。本书包含各种建议你进行练习的活动;每一个练习活动都旨在帮助你理解一个重要主题。所有的章节结尾处都带有一系列练习题,它们会帮助你强化理解所学的内容(附录A中提供了答案)。最后,所有章节结尾都提供了你所学内容的简要汇总,以及一个揭示主题和一些要点的表格,这可用作参考材料。下面是每一章内容的简述。
第1章“R介绍:R是什么以及如何获得它”——在该章中,将介绍如何获得R并在你的计算机上安装它。你还将学习如何访问内置的帮助系统以及找出有用分析例程的附加包,你可以将这些附加包添加到R中。
第2章“出发:开始熟悉R”——该章将让你建立起使用R进行工作的一些了解,从介绍一些简单数学运算开始,到导出和制作你可以使用的数据对象(以及将数据保存到硬盘以供后续使用)为止。
第3章“出发:处理对象”——该章将介绍如何操作你已经创建或导入的数据。这些都是重要的任务,能够构成许多后续练习的基础。你在此处学到的技能将反复投入使用。
第4章“数据:描述统计和制表”——该章的内容都是关于数据汇总的。此处你将学习与基础汇总方法有关的内容,其中包括累计统计。你还将学习如何进行交叉制表以及如何创建汇总表格。
第5章“数据:分布”——该章将介绍使用图形方法可视化显示数据——例如直方图——以及数学方法。该章还会介绍一些关于随机数和不同分布类型(例如正态分布和泊松分布)方面的内容。
第6章“简单假设检验”——在该章中你将学习如何执行一些基础统计方法,比如t检验、相关分析和关联关系检验。学习如何执行这些检验有助于你执行更复杂的分析,并帮助你了解使用R的一系列技术。
第7章“图形分析介绍”——在该章中你将学习如何生成一系列图形,其中包括柱状图、散点图和饼状图。这是本书在制作图形方面的“首次介绍”,第11章将回到这一主题进行详细介绍,其中你将学习如何将你的图形从刚好合格提升为极佳效果。
第8章“公式符号与复杂统计”——当你的分析变得更为复杂时,你就需要一种更为复杂的方法告知R你希望做什么。该章主要关注R的一项重要元素:如何定义复杂情况。该章有两个主要部分。第一部分会介绍如何使用公式符号处理简单情况。第二部分会使用方差分析这一重要的分析方法作为内容阐释。该章的其余部分主要介绍ANOVA。该章很重要,因为定义复杂分析情况的能力在某些时候是必备的。
第9章“操作数据并提取组成部分”——该章构建在前一章的基础上。现在你已经了解了如何定义更复杂的分析情况,学习了如何制作并重新整理数据以便能够更轻易地对其进行分析。这些内容同样构建于你在第3章中所获得的知识的基础上。许多情况下,当你已经执行了一项分析时,你需要为特定分组提取数据;该章还将介绍更多你需要的工具,以便轻松执行复杂分析。
第10章“回归分析(线性建模)”——该章的内容都与回归分析有关。它构建在之前章节的基础上,涵盖了这一重要分析方法的方方面面。你将了解如何执行基础回归分析,以及复杂模型的构建和曲线回归分析。它也非常重要,因为它揭示了R的一些有用特性(例如,如何分析结果)。该章后半部分将介绍回归分析图形方面的内容,比如如何添加最佳拟合线和置信区间。
第11章“图形的更多相关介绍”——该章基于介绍图形的第7章以及关于回归分析的第10章的内容,介绍如何从你的数据中生成更符合自己需要的图形。例如,你要学习如何将文本添加到绘图和坐标轴,以及如何制作上标和下标文本以及数学符号。你将了解如何将图例添加到绘图,以及如何将误差线添加到柱状图或散点图。最后,你将学习如何将图形作为高质量图形文件导出到硬盘,以便适用于发布。
第12章“编写你自己的脚本:开始编程”——在该章中,你将学习如何开始生成能够自动化处理工作流程的自定义函数和简单脚本,以及让复杂和重复性任务的处理变得更为简单。
使用本书的前提条件
要学习本书的知识,你唯一需要的东西就是一台计算机和学习热情!R程序适用于所有操作系统,所以你可以使用(任何版本的)Windows、Macintosh或Linux。R甚至可以完美运行在古老的计算机上,因此你不需要特别专用的工具。有时候需要互联网连接,因为你需要从R项目网站获得R。不过,完全可以在另一台计算机上下载安装文件,并将这些安装文件转移到你的工作计算机上。
如果你已经拥有了某个版本的R,就不必非得获得最新版本了。R在持续更新和改进,但R的旧版本也非常有可能适用于本书介绍的内容,因为基础命令集的变化很小。话虽如此,我还是建议你将R更新到2009年之后的版本。
约定
为帮助你尽可能理解本书的内容并且能随时注意到当前正在介绍哪方面的内容,我们在本书中使用了很多约定。
显示由用户输入的命令行的每个示例都以>符号开始,它模拟了R的指针,就像这样:
>help()
以除>符号之外的内容开头的行表示来自R的输出(但要注意所输入的那些很长且分布于多行的内容),所以在以下示例中,第一行是由用户输入的,而第二行是结果:
> data1
[1] 3 5 7 5 3 2 6 8 5 6 9
试一试
“试一试”是你应该进行处理的练习题,请遵循书中的内容进行练习。
(1) 它们通常由多个步骤构成。
(2) 每个步骤都有一个编号。
(3) 使用你的数据库副本遵循这些步骤进行练习。
示例说明
在每一个“试一试”之后,都会详尽说明你所输入的代码。
警告:
此类特殊段落表示非常重要、不可遗忘的信息,这些信息与其周围的内容密切相关。
提示:
此类特殊段落表示提示、贴士、暗示、技巧以及当前内容的旁注。
代码有两种不同的表示方式:
● 我们使用非高亮的等线体类型来表示大多数代码示例。
● 我们使用粗体来强调在当前上下文中特别重要的代码。
勘误表
尽管我们已经尽了各种努力来保证文章或代码中不出现错误,但错误总是难免的,如果您在本书中找到了错误,例如拼写错误或代码错误,请告诉我们,我们将非常感激。通过勘误表,可以让其他读者避免受挫,当然,这还有助于提供更高质量的信息。
请给wkservice@vip.163.com发电子邮件,我们就会检查您的反馈信息,如果是正确的,我们将在本书的后续版本中采用。
要在网站上找到本书英文版的勘误表,可以登录http://www.wrox.com,通过Search工具或书名列表查找本书,然后在本书的细目页面上,点击Book Errata链接。在这个页面上可以查看到Wrox编辑已提交和粘贴的所有勘误项。完整的图书列表还包括每本书的勘误表,网址是www.wrox.com/misc-pages/booklist.shtml。
p2p.wrox.com
要与作者和同行讨论,请加入p2p.wrox.com上的P2P论坛。这个论坛是一个基于Web的系统,便于您张贴与Wrox图书相关的消息和相关技术,与其他读者和技术用户交流心得。该论坛提供了订阅功能,当论坛上有新的消息时,它可以给您传送感兴趣的论题。Wrox作者、编辑和其他业界专家和读者都会到这个论坛上来探讨问题。
在http://p2p.wrox.com上,有许多不同的论坛,它们不仅有助于阅读本书,还有助于开发自己的应用程序。要加入论坛,可以遵循下面的步骤:
(1) 进入p2p.wrox.com,点击Register链接。
(2) 阅读使用协议,并单击Agree按钮。
(3) 填写加入该论坛所需要的信息和自己希望提供的其他信息,单击Submit按钮。
(4) 您会收到一封电子邮件,其中的信息描述了如何验证账户,完成加入过程。
提示:
不加入P2P也可以阅读论坛上的消息,但要发布自己的消息,就必须加入该论坛。
加入论坛后,就可以张贴新消息,响应其他用户张贴的消息。可以随时在Web上阅读消息。如果要让该网站给自己发送特定论坛中的消息,可以单击论坛列表中该论坛名旁边的Subscribe to this Forum图标。
关于使用Wrox P2P的更多信息,可阅读P2P FAQ,了解论坛软件的工作情况以及P2P和Wrox图书的许多常见问题。要阅读FAQ,可以在任意P2P页面上单击FAQ链接。
源代码
在你理解本书中的示例时,你可能会选择手动输入所有的数据和代码或者使用本书提供的源代码和数据对象文件。本书中使用的所有数据和源代码都可以从http://www.wrox.com下载。另外,也可访问www.tupwk.com/downpage,输入本书中文书名或ISBN,下载源代码和文件。你会发现每个示例练习活动所需的数据集都具有一个下载图标和表明数据文件名称的注释,这样你就能知道它可供下载并能在下载文件中轻易找到。打开该站点后,只要找到本书的书名(使用搜索框或书名列表中的一个)并点击本书详情页面上的Download Code链接,以获得本书的所有源代码。
只有一个要下载的文件,名为Beginning.RData。这一文件包含全书所需的所有示例数据集和脚本。当你将文件下载到计算机后,就可以用几个方法中的一个将它加载到R中:
● 对于Windows或Mac,可将Beginning.RData文件图标拖放到R程序图标上;如果R还没有运行和加载该数据的话,这样就能打开R。如果已经打开了R,则该数据将附加到R中已经有的任意内容上;否则只会加载文件中的数据。
● 如果使用的是Windows或Macintosh,也可以使用菜单命令或在R中输入一个命令来加载该文件:
? 对于Windows,使用File | Load Workspace,或者在R中输入以下命令:
> load(file.choose())
? 对于Mac,使用Workspace | Load Workspace File,或者在R中输入以下命令(与Windows相同):
> load(file.choose())
? 如果使用的是Linux,则可以使用load()命令,但必须(在引号中)准确指定文件名,例如:
> load("Beginning.RData")
Beginning.RData文件必须位于你的默认工作目录中,如果不是这样,则必须将文件位置指定为文件名的一部分。
提示:
由于许多书都具有类似的书名,所以你可能会发现根据EISBN搜索是最简单的;本书的EISBN是978-1-118-16430-3。
或者,你也可以在http://www.wrox.com/dynamic/books/download.aspx上打开Wrox的代码下载主页面,以查看本书及所有其他Wrox书籍的可用代码。