版权归原作者所有,如有侵权,请联系我们

[科普中国]-R代码

科学百科
原创
科学百科为用户提供权威科普内容,打造知识科普阵地
收藏
简介

R代码是指使用R语言时书写的代码。R是一套完整的数据处理、计算和制图软件系统。其功能包括:数据存储和处理系统;数组运算工具(其向量、矩阵运算方面功能尤其强大);完整连贯的统计分析工具;优秀的统计制图功能;简便而强大的编程语言:可操纵数据的输入和输出,可实现分支、循环,用户可自定义功能。

历史

R是统计领域广泛使用的诞生于1980年左右的S语言的一个分支。可以认为R是S语言的一种实现。而S语言是由贝尔实验室开发的一种用来进行数据探索、统计分析和作图的解释型语言。最初S语言的实现版本主要是S-PLUS。S-PLUS是一个商业软件,它基于S语言,并由MathSoft公司的统计科学部进一步完善。后来新西兰奥克兰大学的Robert Gentleman和Ross Ihaka及其他志愿人员开发了一个R系统。由“R开发核心团队”负责开发。R可以看作贝尔实验室(AT&T BellLaboratories)的RickBecker,JohnChambers和AllanWilks开发的S语言的一种实现。当然,S语言也是S-Plus的基础。所以,两者在程序语法上可以说是几乎一样的,可能只是在函数方面有细微差别,程序十分容易地就能移植到一程序中,而很多一的程序只要稍加修改也能运用于R。

特点

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

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

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

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

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

5、如果加入R的帮助邮件列表一,每天都可能会收到几十份关于R的邮件资讯。可以和全球一流的统计计算方面的专家讨论各种问题,可以说是全世界最大、最前沿的统计学家思维的聚集地。

优势

21 世纪人类进入信息社会,传感器和社会网络产生海量数据,数据累积的量变引发质变,越来越多的企业、行业和国家以数据为资源进行知识和智力开发,挖掘了数据内在的阶值,逐步形成了大数据的概念。由于 R 语言并行计算存在令人诟病的“吃内存”弱点,所以很多观点认为 R 语言处理不了大数据。这里先不论大数据究竟是 GB 级还是 TB 或 PB 级的,甚至说处理不了的数据集才叫大,R 语言在处理 TB 级以上的数据集的确不是强项,可以说效率很低。

R 语言的优势在于其众多优秀的数据挖掘软件包,以及诸多非常强大的绘图软件包,如 ggplot2 之类,深得各行业数据分析人士的青睐。近些年数据挖掘和大数据等概念的流行,R 作为数据分析工具正逐渐被重视。借助于越来越多并行计算及大数据处理相关的 R 程序包,R 可以结合并行计算框架 Hadoop 来做大数据处理。R 语言的模型算法优势加上 Hadoop 处理大数据的优势,这种结合正慢慢地成为数据挖掘技术的主流1。

可视化应用

今天,随着数据量的不断增加,数据可视化成为将数字变成可用的信息的一个重要方式。R语言提供了一系列的已有函数和可调用的库,通过建立可视化的方式进行数据的呈现。在使用图表分析的时候,常用的有7种图表:散点图,直方图,柱状图和条形图,箱线图,面积图,热点图,相关图2。我们以超市的数据作为举例来介绍。

散点图

使用场景:散点图通常用于分析两个连续变量之间的关系。在超市数据中,如果我们想根据他们的成本数据来可视化商品的知名度,我们可以用散点图,两个连续的变量这里我们命名为Item_Visibility和Item_MRP。

这里使用R中的ggplot()和geom_point()函数。

library(ggplot2) // ggplot2 是R中的一个函数库

ggplot(train, aes(Item_Visibility, Item_MRP)) + geom_point() + scale_x_continuous("Item

Visibility", breaks = seq(0,0.35,0.05))+ scale_y_continuous("Item MRP", breaks = seq(0,270,by =

30))+ theme_bw()

直方图

使用场景:直方图用于连续变量的可视化分析。将数据划分,并用概率的形式呈现数据的规律。我们可以将分类根据需求进行组合和拆分,从而通过这种方式看到数据的变化。

继续使用上面我们引入的超市数据的例子,如果我们需要知道不同成本段的商品的数量,我们可以将所有数据画出一个直方图,Item_MRP作为横坐标。如下图所示:

下面是一个简单的画直方图的例子,使用的是R中的ggplot()和geom_histogram()函数。

ggplot(train, aes(Item_MRP)) + geom_histogram(binwidth = 2)+

scale_x_continuous("Item MRP", breaks = seq(0,270,by = 30))+

scale_y_continuous("Count", breaks = seq(0,200,by = 20))+

labs(title = "Histogram")

柱状图和条形图

使用场景:柱状图一般用于表现分类的变量或者是连续的分类变量的组合。

在超市数据的例子中,如果我们需要知道在每一年新开的超市的门店数量,那么柱状图就是一个很好的图形分析的方式。用“年”的信息作为坐标,如下图所示:

下面是一个简单的画柱状图的例子,使用的是R中的ggplot()函数。

ggplot(train, aes(Outlet_Establishment_Year)) + geom_bar(fill = "red")+theme_bw()+

scale_x_continuous("Establishment Year", breaks = seq(1985,2010)) +

scale_y_continuous("Count", breaks = seq(0,1500,150)) +

coord_flip()+ labs(title = "Bar Chart") + theme_gray()

箱线图

使用场景:箱线图一般用于相对复杂的场景,通常是组合分类的连续变量。这种图表应用于对数据延伸的可视化分析和检测离值群。主要包含数据的5个重要节点,最小值,25%,50%,75%和最大值。

在我们的案例中,如果我们想要找出每个折扣店每个商品销售的价格的情况,包括最低价,最高价和中间价,箱线图就大有用处。除此之外,箱线图还可以提供非正常价格商品销售的情况,如下图所示。

图中,黑色的点为离值群。离值群的检测和剔除是数据挖掘中很重要的环节。

下面是一个简单的画箱线图的例子,使用的是R中的ggplot()和geom_boxplot函数。

ggplot(train, aes(Outlet_Identifier, Item_Outlet_Sales)) + geom_boxplot(fill = "red")+

scale_y_continuous("Item Outlet Sales", breaks= seq(0,15000, by=500))+

labs(title = "Box Plot", x = "Outlet Identifier")

面积图

使用场景:面积图通常用于显示变量和数据的连续性。和线性图很相近,是常用的时序分析方法。另外,它也被用来绘制连续变量和分析的基本趋势。

超市案例中,当我们需要知道随着时间的推移,折扣店商品的品种走势,我们可以画出如下的面积图,图中呈现了折扣店商品的成交量的变化。

下面是一个简单的画面积图的例子,用于分析折扣店商品成交数量的走势,使用的是R中的ggplot()和geom_area函数。

ggplot(train, aes(Item_Outlet_Sales)) + geom_area(stat = "bin", bins = 30, fill = "steelblue") +

scale_x_continuous(breaks = seq(0,11000,1000))+

labs(title = "Area Chart", x = "Item Outlet Sales", y = "Count")

热点图

使用场景:热点图用颜色的强度(密度)来显示二维图像中的两个或多个变量之间的关系。可对图表中三个部分的进行信息挖掘,两个坐标和图像颜色深度。

超市案例中,如果我们需要知道每个商品在每个折扣店的成本,如下图中所示,我们可以用三个变量Item_MRP,Outlet_Identifier和Item_type进行分析。

暗的数据表示Item_MRP低于50,亮的数据表示Item_MRP接近250。

下面是R代码,使用了ggplot()函数做简单的热点图。

ggplot(train, aes(Outlet_Identifier, Item_Type))+

geom_raster(aes(fill = Item_MRP))+

labs(title ="Heat Map", x = "Outlet Identifier", y = "Item Type")+

scale_fill_continuous(name = "Item MRP")

关系图

使用场景:关系图用作表示连续变量之间的关联性。每个单元可以标注成阴影或颜色来表明关联的程度。颜色越深,代表关联程度越高。正相关用蓝色表示,负相关用红色表示。颜色的深度随着关联程度的递增而递增。

超市案例中,用下图可以展现成本,重量,知名度与折扣店开业的年份和销售价格之间的关系。可以发现,成本和售价成正相关,而商品的重量和知名度成负相关。

下面是用作简单关系图的R代码,使用的是corrgram()函数。

install.packages("corrgram")

library(corrgram)

corrgram(train, order=NULL, panel=panel.shade, text.panel=panel.txt,

main="Correlogram")

R包介绍

R语言的使用,很大程度上是借助各种各样的R包的辅助,从某种程度上讲,R包就是针对于R的插件,不同的插件满足不同的需求,截至2013年3月6日,CRAN已经收录了各类包4338个。例如用于经济计量、财经分析、人文科学研究以及人工智能。

安装包

1、通过选择菜单:

程序包->安装程序包->在弹出的对话框中,选择你要安装的包,然后确定。

2、使用命令

install.packages("package_name","dir")

package_name:是指定要安装的包名,请注意大小写。

dir:包安装的路径。默认情况下是安装在..\library 文件夹中的。可以通过本参数来进行修改,来选择安装的文件夹。

3、本地来安装

如果你已经下载的相应的包的压缩文件,则可以在本地来进行安装。请注意在windows、unix、macOS操作系统下安装文件的后缀名是不一样的:

1)linux环境编译运行:tar.gz文件

2)windows 环境编译运行 :.zip文件

3)MacOS环境编译运行:.tgz文件

加载包

包安装后,如果要使用包的功能。必须先把包加载到内存中(默认情况下,R启动后默认加载基本包),加载包命令:

Library(“包名”)

Require(“包名”)

查看包的相关信息

1、查看包帮忙

library(help="package_name")

主要内容包括:例如:包名、作者、版本、更新时间、功能描述、开源协议、存储位置、主要的函数

help(package = "package_name")

主要内容包括:包的内置所有函数,是更为详细的帮助文档

2、查看当前环境哪些包加载

find.package() 或者 .path.package()

3、移除包出内存

detach()

4、把其它包的数据加载到内存中

data(dsname, package="package_name")

5、查看这个包里的包有数据

data( package="package_name")

6、列出所有安装的包

library()