购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.1 R语言概述

R是一种用于统计分析、绘图的语言和操作环境。R是属于GNU系统的一个自由、免费、源代码开放的软件,它是一个用于统计计算和统计制图的优秀工具。

1.1.1 R语言的诞生

R诞生于1980年左右的S语言的一个分支,可以认为R是S语言的一种实现,被广泛使用于统计领域。S语言是由贝尔实验室(AT&T Bell Laboratories)开发的一种用来进行数据探索、统计分析和作图的解释型语言。最初S语言的实现版本主要是S-PLUS。

S-PLUS是一个商业软件,它基于S语言,并由Mathsoft公司的统计科学部进一步完善。后来新西兰奥克兰大学的Robert Gentleman和Ross Ihaka及其他志愿人员开发了一个R系统。

R可以看作贝尔实验室的Rick Becker、John Chambers和Allan Wilks开发的S语言的一种实现。因此,两者在程序语法上几乎一样,可能只是在函数方面有细微差别,程序十分容易移植到R程序中,而很多S程序只要稍加修改也能运用于R。

1.1.2 R语言的特点

R作为一种统计分析软件,是集统计分析与图形显示于一体的。它可以运行于UNIX、Windows和Macintosh操作系统上,而且嵌入了一个非常方便实用的帮助系统,相比于其他统计分析软件,R还有以下特点:

(1)R是一种开放性软件。这意味着它是完全免费、开放源代码的。可以在它的网站及其镜像中下载任何有关的安装程序、源代码、程序包及其文档资料。标准的安装文件自身就带有许多模块和内嵌统计函数,安装之后可以直接实现许多常用的统计功能。

(2)R是一种可编程的语言。作为一个开放的统计编程环境,R的语法通俗易懂,是很容易学会和掌握语言的语法。掌握之后,便可以编制自己的函数来扩展现有的语言。这也是它的更新速度比一般统计软件(如SPSS、SAS等)快得多的原因。大多数最新的统计方法和技术都可以在R中直接得到。

(3)R的函数和数据集集成在程序包中。只有当一个包被载入时,它的内容才可以被访问。一些常用的、基本的程序包已经被收入了标准安装文件中,随着新的统计分析方法的出现,标准安装文件中所包含的程序包也随着版本的更新而不断变化。在新版安装文件中,已经包含的程序包有:base(R的基础模块)、mle(极大似然估计模块)、ts(时间序列分析模块)、mva(多元统计分析模块)、survival(生存分析模块)等。

(4)R语言拥有强大的数据分析功能。R是专门为统计和数据分析开发的语言。基于免费开源的特点,R语言已经形成了强大的社区,各行各业的优秀研究者无时无刻地贡献着自己编写的功能强大的包(研究成果),这些包涵盖各行各业前沿的分析方法,使用时如同站在巨人的肩膀上。从统计分析到机器学习再到深度学习,从金融分析到生信分析,从文本挖掘到社交网络分析再到并行计算等,R语言无所不“包”。

(5)R语言拥有强大的数据可视化能力。R语言的绘图能力非常强大,尤其是ggplot2及其扩展包包含各种各样方便实用的绘图方法,便于研究者更清楚地理解自己所面对的数据。R还包括多重可交互的数据可视化包,如plotly可直接将ggplot2的图像进行可交互地呈现。

(6)R具有很强的互动性。除图形输出是在其他窗口外,它的输入输出是在同一个窗口中进行的,如果输入语法中出现错误,马上会在窗口中得到提示,对以前输入过的命令有记忆功能,可以随时再现、编辑修改以满足用户的需要。输出的图形可以直接保存为JPG、BMP、PNG等图片格式,还可以直接保存为PDF文件。另外,R与和其他编程语言和数据库之间有很好的接口。

由于R语言的第三方包非常多,难免会存在一些质量较差的包,还有一些包的更新跟不上R版本的更新。作为一种解释性的高级语言,使用者有时会认为它的计算速度较慢。随着计算机硬件不断提升、R并行计算包的出现以及apply函数族强大的并行计算能力,会逐渐满足使用者在运行速度上的需求。

1.1.3 R语言绘图系统

在用R语言绘图时,首先会使用由grDevices包提供的一系列基本绘图函数,如颜色、字体和图形输出格式等。在grDevices包的基础上有多种绘图选择。

一般来说,R语言包括传统绘图系统和网格绘图系统两种主要的绘图系统。这两种绘图系统相互独立,以不同的方式进行绘图。这两种绘图系统对应R语言核心包的graphics包和grid包。

(1)graphics包是R语言的内置绘图包,每次启动R语言都会自动加载。它可以生成多种类型的图表,并且提供了许多美化图形细节的函数。

(2)grid包则提供了一系列不同的绘图函数。grid包并没有提供一套完整的绘图函数,通常不能直接用于绘图。因此,在grid包的基础上又发展出了lattice和ggplot2两个应用广泛的程序包。其中,lattice包由D.Sarkar根据Cleveland的格子图发展而来,ggplot2包由H.Wickham根据L.Wilkson的图形语法发展而来。

这两个绘图系统还衍生出了许多其他的绘图工具。例如,搭载于传统绘图系统之上的maps、diagram、plotrix、gplots和poxmap等扩展包,以及搭载于网格绘图系统之上的vcd和grImport扩展包等。另外,还有一些扩展包提供了R语言与第三方绘图系统的接口。

R语言绘图系统提供的绘图函数可以分为高级绘图函数和低级绘图函数,前者能够绘制出完整的图形,而后者是在已有图形上添加额外的图形。

(1)graphics包既提供了高级绘图函数,又提供了低级绘图函数。

(2)grid包仅提供低级绘图函数,高级绘图函数则留给建立在其基础之上的lattice、ggplot2以及其他扩展包。

1.1.4 图形语法

一张统计图形是从数据到几何对象的图形属性的一个映射。图形中还可能额外包含数据的统计变换,最终绘制在某个特定的坐标系中,并通过分面来生成数据不同子集的图形。也就是说,一张统计图形是由以下独立的图形部件所组成的。

(1)数据(data)。图形最基础的部分是想要可视化的数据(data)以及一系列将数据中的变量对应到图形属性(aesthetic attributes,aes)的映射(mapping)。

(2)图层(layler)。由几何元素和统计变换组成。

(3)几何对象(geometric object,geom)。在图形中实际看到的图形元素,如点、线、多边形等。

(4)统计变换(statistical transformation,stats)。对数据进行的某种汇总,如分组计数、线性回归等。统计变换为可选部分,但很有用。

(5)标度(scale)。将数据的取值映射到图形空间,如用颜色、大小或形状来表示不同的取值。展现标度的常用方式为绘制图例和坐标轴,它们实际上是从图形到数据的一个映射,从图形中可以读取原始数据。

(6)坐标系(coordinate system,coord)。描述数据如何映射到图形所在的平面,同时提供读图所需的坐标轴和网络线。通常使用笛卡儿坐标系,也可以变换为极坐标和地图投影等其他类型。

(7)分面(facet)。将绘图窗口划分为若干子窗口,描述如何将数据分解为各个子集,以及如何对子集作图并联合进行展示。分面也称为条件作图或网格作图。

(8)主题(theme)。主题控制着各点的精细显示,如字体、背景、颜色、网格线等。虽然ggplot2的默认设置基本满足需求,但有时需要进行调整来绘制自己想要的图形。

本书重点介绍ggplot2包,其语法特点如下:

(1)采用图层的设计架构,以ggplot()函数开始,图层之间通过“+”进行叠加,后面叠加的图层在前面的图层上方。一般通过geom_...()函数或stat_...()函数添加图层。

(2)将表征数据和图形细节分开,能快速将图形展示出来。通过stat_...()函数可以将常见的统计结果添加到图形中。

(3)拥有丰富的扩展包,创建的图形更加美观。通过调整颜色(color)、字体(font)和主题(theme)等辅助包可以帮助读者快速定制个性化的图表。 9WTkZOCVXJ3OH6K72N2Z0vGpdTlKpGNtFxn7f0Khw3B8HfXbrepDAD5VVI9NHSGL

点击中间区域
呼出菜单
上一章
目录
下一章
×