R是由Ross Ihaka和Robert Gentleman在1993年开发的一种编程语言,R拥有广泛的统计和图形方法目录。它包括机器学习算法、线性回归、时间序列、统计推理等。大多数R库都是用R编写的,但是对于繁重的计算任务,最好使用C、c++和Fortran代码。
R不仅在学术界很受欢迎,很多大公司也使用R编程语言,包括Uber、谷歌、Airbnb、Facebook等。用R进行数据分析需要一系列步骤:编程、转换、发现、建模和交流结果
R 语言是为数学研究工作者设计的一种数学编程语言,主要用于统计分析、绘图、数据挖掘。
如果你是一个计算机程序的初学者并且急切地想了解计算机的通用编程,R 语言不是一个很理想的选择,可以选择 Python、C 或 Java。
R 语言与 C 语言都是贝尔实验室的研究成果,但两者有不同的侧重领域,R 语言是一种解释型的面向数学理论研究工作者的语言,而 C 语言是为计算机软件工程师设计的。
R 语言是解释运行的语言(与 C 语言的编译运行不同),它的执行速度比 C 语言慢得多,不利于优化。但它在语法层面提供了更加丰富的数据结构操作并且能够十分方便地输出文字和图形信息,所以它广泛应用于数学尤其是统计学领域。
R 语言官方网站:https://cran.r-project.org/
官方镜像站列表:https://cran.r-project.org/mirrors.html
1、什么是R语言?
R是用于统计分析、绘图的语言和操作环境。R是属于GNU系统的一个*、免费、开源的软件,它是一个用于统计计算和统计制图的优秀工具。
R语言是主要用于统计分析、绘图的语言和操作环境。 R本来是由来自新西兰奥克兰大学的Ross Ihaka和Robert Gentleman 开发。 (也因此称为R)现在由“R开发核心团队”负责开发。 R是基于S语言的一个GNU项目,所以也可以当作S语言的一种实现,通常用S语言编写的代码都可以不作修改的在R环境下运行。 R的语法是来自Scheme。
2、R语言能干什么?
首先说靠不靠谱这件事,真的是有点老生常谈了,很多人习惯性的认为免费的东西就是不好的东西,这样一竿子打死所有,是不合理的,有点酸葡萄的心理。笔者曾经在PubMed上见到很多的文章都是用R语言做的统计分析,其中不乏*期刊,诸如Lancet,JCO这样的。上图,无图无真相。
窥一斑而见全豹。所以关于靠不靠谱这事,到此为止。
下面说说R能做啥。对于医学科研工作者来说,对于软件的需求其实真的不是很大,基本的统计分析基本能够满足我们。但是,当我们碰到复杂的数据时,也不要怕,从数据的预处理到数据的分析建模,以及后续的绘图,R都能帮你搞定。关于数据预处理和初步分析,在这里就不多说了,因为我没办法上图(可以浏览“医学方”所推出的“一本R书走天涯”推文教程和视频教程)。下面说说R的可视化功能。各位看官瞧好了。
1、R是科学计算的强大工具包。
2、R主要擅长统计分析方面工作。
3、R具有顶尖的绘图功能。
基本的统计图
火山图
地图
3D图
4、R的交互式数据分析功能强大且灵活。
5、R可以轻松地从多个数据源导入数据。
6、金融领域数据统计与计算的强大工具。
7、数据挖掘和机器学习领域的必备工具。
3、R语言有什么优势?
1、R是免费的。很多商业统计软件价格不菲,投入成千上万美元都是有可能的。可能国内一些人感觉不会很明显,因为很多人是使用单位或学校集体购买的软件,或者使用破解过的统计软件,而不是花自己钱。对于前者,并不是每个人都有机会享受这种福利。而对于破解过的统计软件,其计算结果的准确性很可能会被质疑。
2、R主要擅长统计分析方面工作。R最初是由两位统计学家开发的,其主要优势也在于统计分析方面。它提供了各种各样的数据处理和分析技术,几乎任何数据分析过程都可以在R中完成。与此相比较,SPSS、MINITAB、MATLAB等数据分析软件更加适合于已经处理好的、规范的数据,而对于还未完成处理过程,或者在分析中仍需大量与处理过程的数据而言,它们可能会显得繁琐一些。
3、R具有顶尖的绘图功能。尤其对于复杂数据的可视化问题,R的优势更加明显。一方面,R中各种绘图函数和绘图参数的综合使用,可以得到各式各样的图形结果,无论对于常用的直方图、饼图、条形图等,还是复杂的组合图、地图、热图、动画,以及自己脑子里突然想到的其他图形展现方式,都可以采用R语言实现。另一方面,从数值计算到得到图形结果的过程灵活,一旦程序写好后,如果需要修改数据或者调整图形,只需要修改几个参数或者直接替换原始数据即可,不用重复劳动。这对需要绘制大量同类图形的用户比较适用。例如,某用户需要观察某一因素与其他100个因素的交互关系,可以绘制100个条形图或走势图。配合R的循环和条形图功能,可以很快得到jpg、png、bmp、tiff、gif或postscript等格式的图形结果。
4、R的交互式数据分析功能强大且灵活。一个完整的数据分析过程可以大体包括以下几个步骤:(1)导入数据;(2)数据准备、探索和清洗;(3)拟合一个统计模型;(4)得到结果并进行评估;(5)如果结果的评估不理想,重新完成(3)步骤;(6)得到多个模型的结果,并进行交叉检验;(7)根据模型结果进行预测、分析等;(8)形成报告。R中每个步骤的所有“输出”都可以直接作为下一个步骤的“输入”,可以批量完成以上所有的(8)个步骤。这个优点主要与STATA、SPSS等统计软件相比而言的,STATA和SPSS的统计分析结果是一大串图表或统计量。如果只是一个或少数几个步骤的分析,这种出现一大串结果的批处理更加直观方便。但如果分析中涉及很多连串的模型,而且一些模型需要反复调用前面模型的结果,那么R的灵活性会更加凸显。
5、R可以轻松地从多个数据源导入数据,包括文本文件、数据库、其他统计软件等。这一点很多其他软件还难以做到。如readLines()、read.table()等函数可以导入文本数据,foreign包的read.spss()可以导入SPSS软件的sav格式数据,foreign包的read.dta()可以导入STATA软件的dta格式数据等等。其他有关数据导入导出的函数可以参见R帮助文档《R Data Import/Export》。
6、R的更新速度很快,包含最新的大量统计方法和案例。R社区由全球大量维护者共同维护,再加上R包的扩展性很强,几乎每天都有人为R社区贡献新的方法,提供其他软件中尚不可用的、新颖的统计计算案例。在本材料“R资源”部分会介绍一些常用的R资源获取途径。
7、R也可以很美。目前最基本的R软件(R2.15.2)只有一个编程窗口,看起来挺丑的。但它穿上衣服以后也可以很漂亮,它的衣服就是各式各样的GUI(Graphical User Interface,图形用户界面)工具。目前比较常用的GUI工具包括Rstudio、Rattle、Rattle、Red-R、Deducer、RKWard、JGR、R Commander、Tinn-R等。其中Rstudio可能是最受欢迎的。
补充
做过一点数据分析的人都知道,目前市场上最流行的统计分析软件是SPSS,不可否认,这个软件很好用,傻瓜式的点击操作,一目了然的表格式的结果,甚至也能画一些简单的图形。但是,相信在很多时候,当你使用SPSS进行数据分析时,你也会觉得束手无策,不是你不够聪明,而是SPSS实在是巧妇难为无米之炊。点击操作固然方便简单,但是在功能的灵活性上却大打折扣。故而,你想到了SAS。不过,在你使用SAS之前,请你先找一个正版的安装包(什么破解版就不推荐了,毕竟我们要推崇版权意识嘛),在你的Windows系统上装上它再说吧。SAS就是一个航空母舰,战斗力强大,但是却显得异常臃肿,我很好奇一个界面完全算不上好看的统计软件,是如何把自己的安装包一步一步升级到一个*飞车安装包的级别的。笔者不才,曾经试图两次安装SAS,但是由于并不精通计算机系统,故而两次均以失败告终,万般无奈之际,选择了R语言。
山重水复疑无路,柳暗花明又一村。R语言在前几年的名气远不及SPSS和SAS,甚至一度有很多人压根就看不上这样一个软件,认为它做出来的东西很有可能是错误的,压根就不靠谱。但是质疑声永远也不能阻止一个新生事物的快速发展。坦白说,我入了R的坑,从此SPSS和SAS是路人!
R是免费的!安装包仅有70M,而且安装异常简单,所需操作环境十分随意。就是这样一个十分亲民友好的软件,功能却是异常强大!我用的不是非常,而是异常!作为一名还不算资深的R粉,在我的数据清洗与数据分析的过程中,我深深的被R语言的简洁强大震撼到了。而且我十分赞赏R语言所推崇的“向量化操作”的理念:不写循环,但是能做循环一样的事儿。
关于R,难以一言以蔽之,它就像一个航母战斗群,不同的军舰承载着不同的任务,但是彼此和谐相处,毫不冲突。正如前言所说,R是为统计而生,但是随着这几年的快速发展,R的功能范围已经得到了极大的扩展,比如自然语言处理,机器学习领域,生物信息学领域等等。即便如此,也永远不要忘了,R语言自身的统计功能!
现如今,在R的队伍中,已经存在了超过12000个扩展包,这些扩展包来自不同领域的牛人之手。所以,只要你想得到,没有R做不到!因为你想到的,人家早就已经替你想过了。4、R语言编程工具
R语言安装时会自带一个GUI工具,当然还有其他众多集成开发工具,如:Rstudio、Rattle、Rattle、Red-R、Deducer、RKWard、JGR、R Commander、Tinn-R等。其中Rstudio可能是最受欢迎的。
5、为什么使用R ?
数据科学正在塑造企业运营的方式,毫无疑问,远离人工智能和机器将导致公司的失败,最大的问题是应该使用哪种工具/语言?
市场上有很多工具可以用来进行数据分析,学习一门新语言需要一些时间。下图描述了与一种语言提供的业务能力相比的学习曲线,这种消极的关系意味着没有免费的午餐。如果你想从数据中获得最好的见解,那么你需要花一些时间学习合适的工具,也就是R。
在图的左上角,您可以看到Excel和PowerBI。这两个工具学习起来很简单,但是没有提供出色的业务功能,特别是在建模方面。在中间,您可以看到Python和SAS。
情景应用程序是一个专门用于运行业务统计分析的工具,但它不是免费的。SAS是一个点击并运行的软件,然而,Python是一种学习曲线单调的语言。Python是部署机器学习和人工智能的理想工具,但缺乏通信功能。由于具有相同的学习曲线,R是实现和数据分析之间的一个很好的权衡。
说到数据可视化(DataViz),您可能听说过Tableau。Tableau无疑是通过图形和图表发现模式的好工具,另外,学习Tableau也不是很耗时。数据可视化的一个大问题是,您可能永远找不到一个模式,或者只是创建大量无用的图表。Tableau是快速可视化数据或商业智能的好工具,当涉及到统计和决策工具时,R更合适。
Stack Overflow是一个很大的编程语言社区,如果您有编码问题或需要了解模型,Stack Overflow可以提供帮助。一年来,与其他语言相比,R语言的提问率大幅上升。这种趋势当然与数据科学蓬勃发展的时代高度相关,但也反映了R语言对数据科学的需求。
在数据科学中,有两种工具相互竞争,R和Python可能是定义数据科学的编程语言。
简而言之,R是探索和研究数据的好工具。使用R进行复杂的分析,例如聚类,相关性和数据缩减。这是最关键的部分,如果没有良好的特征工程和模型,则机器学习的部署将不会产生有意义的结果。
6、R语言学习路线图
1.初级入门
《An Introduction to R》,这是官方的入门小册子。其有中文版,由丁国徽翻译,译名为《R导论》。《R4Beginners》,这本小册子有中文版应该叫《R入门》。除此之外,还可以去读刘思喆的《153分钟学会R》。这本书收集了R初学者提问频率最高的153个问题。为什么叫153分钟呢?因为最初作者写了153个问题,阅读一个问题花费1分钟时间,全局下来也就是153分钟了。有了这些基础之后,要去读一些经典书籍比较全面的入门书籍,比如《统计建模与R软件》,国外还有《R Cookbook》和《R in action》。
2.高级入门
读了上述书籍之后,你就可以去高级入门阶段了。这时候要读的书有两本很经典的。《Statistics with R》和《The R book》。之所以说这两本书高级,是因为这两本书已经不再限于R基础了,而是结合了数据分析的各种常见方法来写就的,比较系统的介绍了R在线性回归、方差分析、多元统计、R绘图、时间序列分析、数据挖掘等各方面的内容,看完之后你会发现,哇,原来R能做的事情这么多而且如此简洁。
3.绘图与可视化
亚里斯多德说,“较其他感觉而言,人类更喜欢观看”。因此,绘图和可视化得到很多人的关注和重视。那么,如何学习R画图和数据可视化呢?再简单些,如何画直方图?如何往直方图上添加密度曲线呢?我想读完下面这几本书你就大致会明白了。
首先,画图入门可以读《R Graphics》,个人认为这本是比较经典的,全面介绍了R中绘图系统。该书对应的有一个网站,google之就可以了。更深入的可以读《Lattice:Multivariate Data Visualization with R》。上面这些都是比较普通的。当然,有比较文艺和优雅的——ggplot2系统,看《ggplot2:Elegant Graphics for Data Analysis》。还有数据挖掘方面的书:《Data Mining with Rattle and R》,主要是用Rattle软件,个人比较喜欢Rattle!当然,Rattle不是最好的,Rweka也很棒!再有就是交互图形的书了,著名的交互系统是ggobi,这个我已经喜欢两年多了,关于ggobi的书有《Interactive and Dynamic Graphics for Data Analysis With R and GGobi》,不过,也只是适宜入门,更多更全面的还是去ggobi的主页吧,上面有各种资料以及包的更新信息!
4.计量经济学
关于计量经济学,首先推荐一本很薄的小册子:《Econometrics In R》,做入门用。然后,是《Applied Econometrics with R》,该书对应的R包是AER,可以安装之后配合使用,效果甚佳。计量经济学中很大一部分是关于时间序列分析的,这一块内容在下面的地方说。
5.时间序列分析
时间序列书籍的书籍分两类,一种是比较普适的书籍,典型的代表是:《Time Series Analysis and Its Applications :with R examples》。该书介绍了各种时间序列分析的经典方法及实现各种经典方法的R代码,该书有中文版。如果不想买的话,建议去作者主页直接下载,英文版其实读起来很简单。时间序列分析中有一大块儿是关于金融时间序列分析的。这方面比较流行的书有两本《Analysis of financial time series》,这本书的最初是用的S-plus代码,不过新版已经以R代码为主了。这本书适合有时间序列分析基础和金融基础的人来看,因为书中关于时间序列分析的理论以及各种金融知识讲解的不是特别清楚,将极值理论计算VaR的部分就比较难看懂。另外一个比较有意思的是Rmetrics推出的《TimeSeriesFAQ》,这本书是金融时间序列入门的东西,讲的很基础,但是很难懂。对应的中文版有《金融时间序列分析常见问题集》,当然,目前还没有发出来。经济领域的时间序列有一种特殊的情况叫协整,很多人很关注这方面的理论,关心这个的可以看《Analysis of Integrated and Cointegrated Time Series with R》。最后,比较高级的一本书是关于小波分析的,看《Wavelet Methods in Statistics with R》。
6.金融
金融的领域很广泛,如果是大金融的话,保险也要被纳入此间。用R做金融更多地需要掌握的是金融知识,只会数据分析技术意义寥寥。我觉得这些书对于懂金融、不同数据分析技术的人比较有用,只懂数据分析技术而不动金融知识的人看起来肯定如雾里看花,甚至有人会觉得金融分析比较低级。这方面比较经典的书籍有:《Advanced Topics in Analysis of Economic and Financial Data Using R》以及《Modelling Financial Time Series With S-plus》。金融产品定价之类的常常要用到随机微分方程,有一本叫《Simulation Inference Stochastic Differential Equations:with R examples》的书是关于这方面的内容的,有实例,内容还算详实!此外,是风险度量与管理类。比较经典的有《Simulation Techniques in Financial Risk Management》、《Modern Actuarial Risk Theory Using R》和《Quantitative Risk Management:Concepts, Techniques and Tools》。投资组合分析类和期权定价类可以分别看《Portfolio Optimization with R》和《Option Pricing and Estimation of Financial Models with R》。
7.数据挖掘
这方面的书不多,只有《Data Mining with R:learing with case studies》。不过,R中数据挖掘方面的包已经足够多了,参考包中的帮助文档就足够了。
7、R语言参考资料
相关书籍推荐:
《R in Action》(R语言实战)
《The Art of_R Programming》(R语言编程艺术)
《An Introduction to R》(R导论)
《R Cookbook》
《R in a Nutshell》
《Statistics with R》