盘点:做数据分析必须学R的4个理由_第1页
盘点:做数据分析必须学R的4个理由_第2页
盘点:做数据分析必须学R的4个理由_第3页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

盘点:做数据分析必须学R的4个理由

本文提供了一位统计学家CatherineDalzell对R的价值的看法。为什么选择R?R可以执行统计。您可以将它视为SASAnalytics等分析系统的竞争对手,更不用提StatSoftSTATISTICA或Minitab等更简单的包。政府、企业和制药行业中许多专业统计学家和方法学家都将其全部职业生涯都投入到了IBMSPSS或SAS中,但却没有编写过一行R代码。所以从某种程度上讲,学习和使用R的决定事关企业文化和您希望如何工作。我在统计咨询实践中使用了多种工具,但我的大部分工作都是在R中完成的。以下这些示例给出了我使用R的原因:R是一种强大的脚本语言。我最近被要求分析一个范围研究的结果。研究人员检查了1,600篇研究论文,并依据多个条件对它们的内容进行编码,事实上,这些条件是大量具有多个选项和分叉的条件。它们的数据(曾经扁平化到一个Microsoft®Excel®电子表格上)包含8,000多列,其中大部分都是空的。研究人员希望统计不同类别和标题下的总数。R是一种强大的脚本语言,能够访问类似Perl的正则表达式来处理文本。凌乱的数据需要一种编程语言资源,而且尽管SAS和SPSS提供了脚本语言来执行下拉菜单意外的任务,但R是作为一种编程语言编写的,所以是一种更适合该用途的工具。R走在时代的前沿。统计学中的许多新发展最初都是以R包的形式出现的,然后才被引入到商业平台中。我最近获得了一项对患者回忆的医疗研究的数据。对于每位患者,我们拥有医生建议的治疗项目数量,以及患者实际记住的项目数量。自然模型是贝塔—二项分布。这从上世纪50年代就已知道,但将该模型与感兴趣的变量相关联的估算过程是最近才出现的。像这样的数据通常由广义估计方程式(generalestimatingequations,GEE)处理,但GEE方法是渐进的,而且假设抽样范围很广。我想要一种具有贝塔—二项R的广义线性模型。一个最新的R包估算了这一模型:BenBolker编写的betabinom。而SPSS没有。集成文档发布。R完美地集成了LaTeX文档发布系统,这意味着来自R的统计输出和图形可嵌入到可供发布的文档中。这不是所有人都用得上,但如果您希望便携异步关于数据分析的书籍,或者只是不希望将结果复制到文字处理文档,最短且最优雅的路径就是通过R和LaTeX。没有成本。作为一个小型企业的所有者,我很喜欢R的免费特定。即使对于更大的企业,知道您能够临时调入某个人并立即让他们坐在工作站旁使用一流的分析软件,也很不错。无需担忧预算。R是什么,它有何用途?作为一种编程语言,R与许多其他语言都很类似。任何编写过代码的人都会在R中找到很多熟悉的东西。R的特殊性在于它支持的统计哲学。一种统计学革命:S和探索性数据分析140字符的解释:R是S的一种开源实现,是一种用于数据分析和图形的编程环境。计算机总是擅长计算—在您编写并调试了一个程序来执行您想要的算法后。但在上世纪60和70年代,计算机并不擅长信息的显示,尤其是图形。这些技术限制在结合统计理论中的趋势,意味着统计实践和统计学家的培训专注于模型构建和假设测试。一个人假定这样一个世界,研究人员在其中设定假设(常常是农业方面的),构建精心设计的实验(在一个农业站),填入模型,然后运行测试。一个基于电子表格、菜单驱动的程序(比如SPSS反映了这一方法)。事实上,SPSS和SASAnalytics的第一个版本包含一些子例程,这些子例程可从一个(Fortran或其他)程序调用来填入和测试一个模型工具箱中的一个模型。在这个规范化和渗透理论的框架中,JohnTukey放入了探索性数据分析(EDA)的概念,这就像一个鹅卵石击中了玻璃屋顶。如今,很难想像没有使用箱线图(boxplot)来检查偏度和异常值就开始分析一个数据集的情形,或者没有针对一个分位点图检查某个线性模型残差的常态的情形。这些想法由Tukey提出,现在任何介绍性的统计课程都会介绍它们。但并不总是如此。与其说EDA是一种理论,不如说它是一种方法。该方法离不开以下经验规则:只要有可能,就应使用图形来识别感兴趣的功能。分析是递增的。尝试以下这种模型;根据结果来填充另一个模型。使用图形检查模型假设。标记存在异常值。使用健全的方法来防止违背分布假设。Tukey的方法引发了一个新的图形方法和稳健估计的发展浪潮。它还启发了一个更适合探索性方法的新软件框架的开发。S语言是在贝尔实验室由JohnChambers和同事开发的,被用作一个统计分析平台,尤其是Tukey排序。第一个版本(供贝尔实验室内部使用)于1976年开发,但直到1988年,它才形成了类似其当前形式的版本。在这时,该语言也可供贝尔实验室外部的用户使用。该语言的每个方面都符合数据分析的“新模型”:S是一种在编程环境操作的解释语言。S语法与C的语法很相似,但省去了困难的部分。S负责执行内存管理和变量声明,举例而言,这样用户就无需编写或调试这些方面了。更低的编程开销使得用户可以在同一个数据集上快速执行大量分析。从一开始,S就考虑到了高级图形的创建,您可向任何打开的图形窗口添加功能。您可很容易地突出兴趣点,查询它们的值,使散点图变得更平滑,等等。面向对象性是1992年添加到S中的。在一个编程语言中,对象构造数据和函数来满足用户的直觉。人类的思维始终是面向对象的,统计推理尤其如此。统计学家处理频率表、时间序列、矩阵、具有各种数据类型的电子表格、模型,等等。在每种情况下,原始数据都拥有属性和期望值:举例而言,一个时间序列包含观察值和时间点。而且对于每种数据类型,都应得到标准统计数据和平面图。对于时间序列,我可能绘制一个时间序列平面图和一个相关图;对于拟合模型,我可能绘制拟合值和残差。S支持为所有这些概念创建对象,您可以根据需要创建更多的对象类。对象使得从问题的概念化到其代码的实现变得非常简单。一种具有态度的语言:S、S-Plus和假设测试最初的S语言非常重视Tukey的EDA,已达到只能在S中执行EDA而不能执行其他任何操作的程度。这是一种具有态度的语言。举例而言,尽管S带来了一些有用的内部功能,但它缺乏您希望统计软件拥有的一些最明显的功能。没有函数来执行双抽样测试或任何类型的真实假设测试。但Tukey认为,假设测试有时正合适。1988年,位于西雅图的StatisticalScience获得S的授权,并将该语言的一个增强版本(称为S-Plus)移植到DOS以及以后的Windows®中。实际认识到客户想要什么后,StatisticalScience向S-Plus添加了经典统计学功能。添加执行方差分析(ANOVA)、测试和其他模型的功能。对S的面向对象性而言,任何这类拟合模型的结果本身都是一个S对象。合适的函数调用都会提供假设测试的拟合值、残差和p-值。模型对象甚至可以包含分析的中间计算步骤,比如一个设计矩阵的QR分解(其中Q是对角线,R是右上角)。有一个R包来完成该任务!还有一个开源社区大约在与发布S-Plus相同的时间,新西兰奥克兰大学的RossIhaka和RobertGentleman决定尝试编写一个解释器。他们选择了S语言作为其模型。该项目逐渐成形并获得了支持。它们将其命名为R。R是S的一种实现,包含S-Plus开发的更多模型。有时候,发挥作用的是同一些人。R是GNU许可下的一个开源项目。在此基础上,R不断发展,主要通过添加包。R包是一个包含数据集、R函数、文档和C或Fortran动态加载项的集合,可以一起安装并从R会话访问。R包向R添加新功能,通过这些包,研究人员可在同行之间轻松地共享计算方法。一些包的范围有限,另一些包代表着整个统计学领域,还有一些包含最新的技术发展。事实上,统计学中的许多发展最初都是以R包形式出现的,然后才应用到商用软件中。在撰写本文时,R下载站点CRAN上已有4,701个R包。其中,单单那一天就添加了6个R。万事万物都有一个对应的R包,至少看起来是这样。我在使用R时会发生什么?备注:本文不是一部R教程。下面的示例仅试图让您了解R会话看起来是什么样的。R二进制文件可用于Windows、MacOSX和多个Linux®发行版。源代码也可供人们自行编译。在Windows®中,安装程序将R添加到开始菜单中。要在Linux中启动R,可打开一个终端窗口并在提示符下键入R。您应看到类似图1的画面。图1.R工作区在提示符下键入一个命令,R就会响应。此时,在真实的环境中,您可能会从一个外部数据文件将数据读入R对象中。R可从各种不同格式的文件读取数据,但对于本示例,我使用的是来自MASS包的michelson数据。这个包附带了VenablesandRipley的标志性文本ModernAppliedStatisticswithS-Plus(参见参考资料)。michelson包含来自测量光速的流行的MichelsonandMorley实验的结果。清单1中提供的命令可以加载MASS包,获取并查看michelson数据。图2显示了这些命令和来自R的响应。每一行包含一个R函数,它的参数放在方括号([])内。清单1.启动一个R会话2+2#Rcanbeacalculator.Rresponds,correctly,with4.library("MASS")#Loadsintomemorythefunctionsanddatasetsfrom#packageMASS,thataccompaniesModernAppliedStatisticsinSdata(michelson)#Copiesthemichelsondatasetintotheworkspace.ls()#Liststhecontentsoftheworkspace.Themichelsondataisthere.head(michelson)#Displaysthefirstfewlinesofthisdataset.#ColumnSpeedcontainsMichelsonandMorleysestimatesofthe#speedoflight,less299,000,inkm/s.#MichelsonandMorleyranfiveexperimentswith20runseach.#Thedatasetcontainsindicatorvariablesforexperimentandrun.help(michelson)#Callsahelpscreen,whichdescribesthedataset.图2.会话启动和R的响应现在让我们看看该数据(参见清单2)。输出如图3中所示。清单2.R中的一个箱线图#Basicboxplotwith(michelson,boxplot(Speed~Expt))#Icanaddcolourandlabels.Icanalsosavetheresultstoanobject.michelson.bp=with(michelson,boxplot(Speed~Expt,xlab="Experiment",las=1,ylab="SpeedofLight-299,000m/s",main="Michelson-MorleyExperiments",col="slateblue1"))#Thecurrentestimateofthespeedoflight,onthisscale,is734.5#Addahorizontallinetohighlightthisvalue.abline(h=734.5,lwd=2,col="purple")#AddmodernspeedoflightMichelsonandMorley似乎有计划地高估了光速。各个实验之间似乎也存在一定的不均匀性。图3.绘制一个箱线图在对分析感到满意后,我可以将所有命令保存到一个R函数中。参见清单3。清单3.R中的一个简单函数MyExample=function(){library(MASS)data(michelson)michelson.bw=with(michelson,boxplot(Speed~Expt,xlab="Experiment",las=1,ylab="SpeedofLight-299,000m/s",main="Michelsen-MorleyExperiments",col="slateblue1"))abline(h=734.5,lwd=2,col="purple")}这个简单示例演示了R的多个重要功能:保存结果—boxplot()函数返回一些有用的统计数据和一个图表,您可以通过类似michelson.bp=…的负值语句将这些结果保存到一个R对象中,并在需要时提取它们。任何赋值语句的结果都可在R会话的整个过程中获得,并且可以作为进一步分析的主题。boxplot函数返回一个用于绘制箱线图的统计数据(中位数、四分位等)矩阵、每个箱线图中的项数,以及异常值(在图3中的图表上显示为开口圆)。请参见图4。图4.来自boxplot函数的统计数据公式语言—R(和S)有一种紧凑的语言来表达统计模型。参数中的代码Speed~Expt告诉函数在每个Expt(实验数字)级别上绘制Speed的箱线图。如果希望执行方差分析来测试各次实验中的速度是否存在显著差异,那么可以使用相同的公式:lm(Speed~Expt)。公式语言可表达丰富多样的统计模型,包括交叉和嵌套效应,以及固定和随机因素。用户定义的R函数—这是一种编程语言。R已进入21世纪Tukey的探索性数据分析方法已成为常规课程。我们在教授这种方法,而统计学家也在使用该方法。R支持这种方法,这解释了它为什么仍然如此流行的原因。面向对象性还帮助R保持最新,因为新的数据来源需要新的数据结构来执行分析。InfoSphere®Streams现在支持对与JohnChambers所设想的不同的数据执行R分析。R与InfoSphereStreamsInfoSphereStreams是一个计算平台和集成开发环境,用于分析从数千个来源获得的高速数据。这些数据流的内容通常是非结构化或半结构化的。分析的目的是检测数据中不断变化的模式,基于快速变化的事件来指导决策。SPL(用于InfoSphereStreams的编程语言)通过一种范例来组织数据,反映了数据的动态性以及对快速分析和响应的需求。我们已经距离用于经典统计分析的电子表格和常规平面文件很远,但R能够应付自如。从3.1版开始,SPL应用程序可将数据传递给R,从而利用R庞大的包库。InfoSphereStreams对R的支持方式是,创建合适的R对象来接收SPL元组(SPL中的基本数据结构)中包含的信息。InfoSphereStreams数据因此可传递给R供进一步分析,并将结果传回到SPL。R需要主流硬件吗?我在一台运行CrunchbangLinux的宏碁上网本上运行了这个示例。R不需要笨重的机器来执行中小规模的分析。20年来,人们一直认为R之所以缓慢是因为它是一种解释性语言,而且它可以分析的数据大小受计算机内存的限制。这是真的,但这通常与现代机器毫无干系,除非应用程序非常大(大数据)。R的不足之处公平地讲,R也

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论