r统计数据分析程序(数据统计分析及r语言编程)
大家好!今天让创意岭的小编来大家介绍下关于r统计数据分析程序的问题,以下是小编对此问题的归纳整理,让我们一起来看看吧。
开始之前先推荐一个非常厉害的Ai人工智能工具,一键生成原创文章、方案、文案、工作计划、工作报告、论文、代码、作文、做题和对话答疑等等
只需要输入关键词,就能返回你想要的内容,越精准,写出的就越详细,有微信小程序端、在线网页版、PC客户端
创意岭作为行业内优秀的企业,服务客户遍布全球各地,如需了解SEO相关业务请拨打电话175-8598-2043,或添加微信:1454722008
本文目录:
一、python和r数据分析哪个更好
2012年的时候我们说R是学术界的主流,但是现在Python正在慢慢取代R在学术界的地位。不知道是不是因为大数据时代的到来。
Python与R相比速度要快。Python可以直接处理上G的数据;R不行,R分析数据时需要先通过数据库把大数据转化为小数据(通过groupby)才能交给R做分析,因此R不可能直接分析行为详单,只能分析统计结果。所以有人说:Python=R+SQL/Hive,并不是没有道理的。
Python的一个最明显的优势在于其胶水语言的特性,很多书里也都会提到这一点,一些底层用C写的算法封装在Python包里后性能非常高效
(Python的数据挖掘包Orange canve
中的决策树分析50万用户10秒出结果,用R几个小时也出不来,8G内存全部占满)。但是,凡事都不绝对,如果R矢量化编程做得好的话(有点小难度),会
使R的速度和程序的长度都有显著性提升。
R的优势在于有包罗万象的统计函数可以调用,特别是在时间序列分析方面,无论是经典还是前沿的方法都有相应的包直接使用。
相比之下,Python之前在这方面贫乏不少。但是,现在Python有了
pandas。pandas提供了一组标准的时间序列处理工具和数据算法。因此,你可以高效处理非常大的时间序列,轻松地进行切片/切块、聚合、对定期
/不定期的时间序列进行重采样等。可能你已经猜到了,这些工具中大部分都对金融和经济数据尤为有用,但你当然也可以用它们来分析服务器日志数据。于是,近
年来,由于Python有不断改良的库(主要是pandas),使其成为数据处理任务的一大替代方案。
做过几个实验:
1. 用python实现了一个统计方法,其中用到了ctypes,multiprocess。
之后一个项目要做方法比较,又用回R,发现一些bioconductor上的包已经默认用parallel了。(但那个包还是很慢,一下子把所有线程都用掉了,导致整个电脑使用不能,看网页非常卡~)
2. 用python pandas做了一些数据整理工作,类似数据库,两三个表来回查、匹配。感觉还是很方便的。虽然这些工作R也能做,但估计会慢点,毕竟几十万行的条目了。
3. 用python matplotlib画图。pyplot作图的方式和R差异很大,R是一条命令画点东
西,pylot是准备好了以后一起出来。pyplot的颜色选择有点尴尬,默认颜色比较少,之后可用html的颜色,但是名字太长了~。pyplot
的legend比R 好用多了,算是半自动化了。pyplot画出来后可以自由拉升缩放,然后再保存为图片,这点比R好用。
总的来说Python是一套比较平衡的语言,各方面都可以,无论是对其他语言的调用,和数据源的连接、读取,对系统的操作,还是正则表达和文字处
理,Python都有着明显优势。
而R是在统计方面比较突出。但是数据分析其实不仅仅是统计,前期的数据收集,数据处理,数据抽样,数据聚类,以及比较复杂的数据挖掘算法,数据建模等等
这些任务,只要是100M以上的数据,R都很难胜任,但是Python却基本胜任。
结合其在通用编程方面的强大实力,我们完全可以只使用Python这一种语言去构建以数据为中心的应用程序。
但世上本没有最好的软件或程序,也鲜有人能把单一语言挖掘运用到极致。尤其是很多人早先学了R,现在完全不用又舍不得,所以对于想要学以致用的人来说,如果能把R和Python相结合,就更好不过了。
二、常用统计分析软件汇总
我们在工作过程中或者更在找工作的过程中,常常发现大家数据分析的软件或统计分析的软件有很多。我们这里对常用的统计分析软件做一个简单的介绍。
Excel是我们最常见的办公工具,对于数据量并不是很大的数据,Excel可以很灵活便捷的处理。其便利程度甚至高于以下提及的任何一个软件。所以Excel一定要学好,不仅要掌握好Excel基本的功能,还要熟练使用Excel公式、Excel图表等功能。
可以说是目前最标准的最权威的统计学软件。SAS是一个程序化的软件,这么说是因为在SAS中用程序写比用菜单要简便快捷。广泛应用于银行、金融行业、生物医药等行业。
SAS既可以处理横截面数据、时间序列数据,也可以处理面板数据。
擅长处理横截面数据。SPSS的界面和菜单做的很优秀(除了翻译不标准很让人无奈之外),其外观基本上和Excel很像。在SPSS的使用过程中,我们可以用菜单很方便快捷进行操作。这很方便初学者进行学习,而不用特意去学习编写程序。广泛应用于电信行业、市场咨询行业。如果数据量在几千万行,用SPSS和SAS处理时长差不多。但是对于更大的数据量(亿以上级别),SAS就会比SPSS在处理速度上凸显优势。
擅长处理时间序列数据,计量经济学方向应用广泛。
擅长处理面板数据。和SPSS用户群重叠度比较高。
R语言对于横截面数据、时间序列数据、面板数据都能处理。其特点在于R软件是开源的软件,其中有异常丰富(约有1万多个)的可以调用的“包”。
本身不是统计学软件,但是其中有统计工具箱。工程领域用的多。
其实作为一名数据分析师来说,以上的分析软件并不需要每一个都掌握,我们只需要精通最擅长的一门,同时掌握另外一门作为辅助也就可以了。这就像是武侠小说里面的大侠,一定有最擅长的一门兵器,但是同时呢,肯定也有其他能够使得上手的兵器。而关于到底使用什么软件呢?一定要根据以上提及的软件的特点,结合上行业的特点来决定。任何脱离行业和业务的数据分析都无从谈起。
另外,这里不得不提及一个问题,以上的各个数据分析软件是否有高低贵贱之分呢?我个人认为是没有的。其道理就像是,我们在选择不同的工具,其出发点都在于这个工具一定可以最快捷方便的解决目前的问题。杀鸡焉用牛刀,杀鸡用杀鸡刀,宰牛当然用牛刀。
三、怎么学习用 R 语言进行数据挖掘
什么是R语言?应该如何开始学习/使用R语言呢?
学习R有几个月了,总算是摸着了一点门道。
写一些自己的心得和经验,方便自己进一步鼓捣R。如果有人看到我写的东西而得到了帮助,那就更好了。
什么是R?R的优点何在?
R是一个数据分析软件。简单点说,R可以看做MATLAB的“替代品”,而且具有免费开源的优势。R可以像MATLAB一样解决有关数值计算的问题,而且具有强大的数据处理,绘图功能。
R拥有大量的统计分析工具包,我的感觉是——只有我们没听说过的工具,绝对没有R没有的工具包。配合着各种各样的工具包,你可以毁灭任何关于数据和统计的问题。因为数据包的数量庞大,所以查找自己需要的数据包,可能很烦恼。
如果有以下技能,学R会很方便:
1.已经了解些高级程序语言(非常重要)
2.英语不坏
3.概率统计理论基础
4.看数据不头疼
5.看cmd or terminal 也不头疼
你需要一本适合你的R语言教材
我开始学习R的时候,找到了这个帖子
非常强大的关于R语言教材综述。我非常感谢原帖作者。你可以参考这个帖子选一本适合你的教材。
我这里在说一下我主要使用的几本教材的心得:
1. 统计建模与R软件(薛毅著):非常优秀的R语言入门教材,涵盖了所有R的基础应用&方法,示例代码也很优秀。作为一本中文的程序语言教材,绝对是最优秀的之一。但是要看懂这本书,还是需要“已经了解些高级程序语言”。PS:我亲爱的吉林大学图书馆,有两本该教材流通,我常年霸占一本。
2. R in Nutshell:从讲解内容上看,与上一本差别不大,在R语言的应用上都是比较初级的入门,但是有些R软件&语言上的特性,写得比薛毅老师的教材深刻。这本书最大的优点就是工具书,方便开始入门时候,对有些“模棱两可”的东西的查询。PS:我将这本书打印了出来,简单的从头到尾翻过,最大的用途就是像一本字典一样查询。
3. ggplot2 Elegant Graphics for Data:这是一本介绍如何使用ggplot2包,进行绘图的书。ggplot2包,非常强大的绘图工具,几乎可以操作任何图中的元素,而且是提供添加图层的方式让我们可以一步步的作图。提到ggplot2包,应该提到一个词——“潜力无穷”,每一个介绍
ggplot2的人,都会用这个形容词。这本书最大的作用也是当做一本绘图相关的工具书,书中讲解详细,细致,每个小参数的变动都会配图帮你理解。PS:这本书我也打印出来了,非常适合查询。
几个可以逐步提高R能力的网站
1.R-bloggers: 这里有关于R和数据的一切讨论,前沿的问题,基础的问题,应有尽有。可以说这些家伙们让R变得越来越强大。我RSS了这个网站,每天都看一下有什么我感兴趣的方法和话题,慢慢的积累一些知识,是一个很有意思的过程。
2.统计之都: 这是一个有大量R使用者交流的论坛,你可以上去提问题,总有好心人来帮助你的。
3.R客: 是关于R的一个博客,更新不快,偏重国内R的一些发展。
R的使用环境
如果你看见terminal or cmd就打怵的话,一定要使用Rstudio。Rstudio的优点是,集成了Rconsole、脚本编辑器、可视化的数据查询、历史命令、帮助查询等,还有的完美的脚本和console的互动。毕竟是可视化的界面,有许多按钮可以用。R 的脚本编辑器很蛋疼,就比记事本多了个颜色高亮吧,不适合编写脚本,但适合调试脚本。
最后,说一下,刚开始学习R或者其他什么语言,都有一个通病,就是一些小细节的不知道,或者是记得不清楚,往往一个蛋疼的bug就可以耗掉大量的时间,这是一个让人想砸电脑的过程。我往后,会在博客里记录一些让我蛋很疼的小细节。本文分为6个部分,分别介绍初级入门,高级入门,绘图与可视化,计量经济学,时间序列分析,金融等。
1.初级入门
《An Introduction to R》,这是官方的入门小册子。其有中文版,由丁国徽翻译,译名为《R导论》。《R4Beginners》,这本小册子有中文版应该叫《R入门》。除此之外,还可以去读刘思喆的《153分钟学会R》。这本书收集了R初学者提问频率最高的153个问题。为什么叫153分钟呢?因为最初作者写了153个问题,阅读一个问题花费1分钟时间,全局下来也就是153分钟了。有了这些基础之后,要去读一些经典书籍比较全面的入门书籍,比如《统计建模与R软件》,国外还有《R Cookbook》和《R in action》,本人没有看过,因此不便评论。
最后推荐,《R in a Nutshell》。对,“果壳里面的R”!当然,是开玩笑的,in a Nutshell是俚语,意思大致是“简单的说”。目前,我们正在翻译这本书的中文版,大概明年三月份交稿!这本书很不错,大家可以从现在开始期待,并广而告知一下!
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中数据挖掘方面的包已经足够多了,参考包中的帮助文档就足够了。
四、R数据科学(五)探索性数据分析
明确概念:探索性数据分析(exploratory data analysis, EDA),一般过程为:
(1) 对数据提出问题。
(2) 对数据进行可视化、转换和建模,进而找出问题的答案。
(3) 使用上一个步骤的结果来精炼问题,并提出新问题。
确定变量是分类变量还是连续变量,要想检查分类变量的分布,可以使用条形图:
条形的高度表示每个 x 值中观测的数量,可以使用 dplyr::count() 手动计算出这些值:
要想检查连续变量的分布,可以使用直方图:
可以通过 dplyr::count() 和 ggplot2::cut_width() 函数的组合来手动计算结果. binwidth 参数来设定直方图中的间隔的宽度,该参数是用 x 轴变量的单位来度量的。
在同一张图上叠加多个直方图, 用geom_freqploy()代替geom_histogram(),用折线表示。
相似值聚集形成的簇表示数据中存在子组。
coord_cartesian() 函数中有一个用于放大 x 轴的 xlim() 参数。 ggplot2 中也有功能稍有区
别的 xlim() 和 ylim() 函数:它们会忽略溢出坐标轴范围的那些数据。
如果带有异常值和不带异常值的数据分别进行分析,结果差别较大的话要找出异常值的原因,如果差别不大,可以用NA代替。
5.3.4 练习
(1)研究 x、 y 和 z 变量在 diamonds 数据集中的分布。你能发现什么?思考一下,对于一条
钻石数据,如何确定表示长、宽和高的变量?
(2)研究 price 的分布,你能发现不寻常或令人惊奇的事情吗?(提示:仔细考虑一下
binwidth 参数,并确定试验了足够多的取值。)
(3) 0.99 克拉的钻石有多少? 1 克拉的钻石有多少?造成这种区别的原因是什么?
(4)比较并对比 coord_cartesina() 和 xlim()/ylim() 在放大直方图时的功能。如果不设置
binwidth 参数,会发生什么情况?如果将直方图放大到只显示一半的条形,那么又会发
生什么情况?
数据中有异常值,可以将异常值去掉:
一般不建议去掉,建议使用缺失值来代替异常值。
ifelse函数参数1放入逻辑判断,如果为T,结果就是第二个参数的值,如果为F,就是第三个参数的值。
ggplot2会忽略缺失值:
练习
(1) 直方图如何处理缺失值?条形图如何处理缺失值?为什么会有这种区别?
(2) na.rm = TRUE 在 mean() 和 sum() 函数中的作用是什么?
移除缺失值再进行统计
按分类变量的分组显示连续变量分布的另一种方式是使用箱线图
练习
(1) 前面对比了已取消航班和未取消航班的出发时间,使用学习到的知识对这个对比的可视
化结果进行改善。
(2) 在钻石数据集中,哪个变量对于预测钻石的价格最重要?这个变量与切割质量的关系是
怎样的?为什么这两个变量的关系组合会导致质量更差的钻石价格更高呢?
(3) 安装 ggstance 包,并创建一个横向箱线图。这种方法与使用 coord_flip() 函数有何区别?
(4) 箱线图存在的问题是,在小数据集时代开发而成,对于现在的大数据集会显示出数量极
其庞大的异常值。解决这个问题的一种方法是使用字母价值图。安装 lvplot 包,并尝试
使用 geom_lv() 函数来显示价格基于切割质量的分布。你能发现什么问题?如何解释这
种图形?
(5) 比较并对比 geom_violin()、分面的 geom_histogram() 和着色的 geom_freqploy()。每种方法的优缺点是什么?
(6) 对于小数据集,如果要观察连续变量和分类变量间的关系,有时使用 geom_jitter() 函数是特别有用的。 ggbeeswarm 包提供了和 geom_jitter()相似的一些方法。列出这些方法
并简单描述每种方法的作用。
两个分类变量的关系肯定要先计数,可以用geom_count()函数
d3heatmap 或 heatmaply 包可以生成交互式图
练习
(1) 如何调整 count 数据,使其能更清楚地表示出切割质量在颜色间的分布,或者颜色在切
割质量间的分布?
(2) 使用 geom_tile() 函数结合 dplyr来探索平均航班延误数量是如何随着目的地和月份的
变化而变化的。为什么这张图难以阅读?如何改进?
(3) 为什么在以上示例中使用 aes(x = color, y = cut) 要比 aes(x = cut, y = color) 更好?
连续变量之间的关系一般用散点图来表示。geom_point()
对于大数据集,为了避免重合,可以用geom_bin2d() 和 geom_hex()函数将坐标平面分为二维分箱,并使用一种填充颜色表示落入
每个分箱的数据点。
另一种方式是对一个连续变量进行分箱,因此这个连续变量的作用就相当于分类变量。
cut_width(x, width) 函数将 x 变量分成宽度为 width 的分箱。参数 varwidth = TRUE 让箱线图的宽度与观测数量成正比。
cut_number() 函数近似地显示每个分箱中的数据点的数量
练习
(1) 除了使用箱线图对条件分布进行摘要统计,你还可以使用频率多边形图。使用 cut_
width() 函数或 cut_number() 函数时需要考虑什么问题?这对 carat 和 price 的二维分
布的可视化表示有什么影响?
(2) 按照 price 分类对 carat 的分布进行可视化表示。
(3) 比较特别大的钻石和比较小的钻石的价格分布。结果符合预期吗?还是出乎意料?
(4) 组合使用你学习到的两种技术,对 cut、 carat 和 price 的组合分布进行可视化表示。
(5) 二维图形可以显示一维图形中看不到的离群点。例如,以下图形中的有些点具有异常的
x 值和 y 值组合,这使得这些点成为了离群点,即使这些点的 x 值和 y 值在单独检验时
似乎是正常的。
ggplot(data = diamonds) +
geom_point(mapping = aes(x = x, y = y)) +
coord_cartesian(xlim = c(4, 11), ylim = c(4, 11))
数据中的模式提供了关系线索,用于探索两个变量的相关性。
模型是用于从数据中抽取模式的一种工具。
残差(预测值和实际值之间的差别)
阅读推荐:
生信技能树公益视频合辑:学习顺序是linux,r,软件安装,geo,小技巧,ngs组学!
B站链接: https://m.bilibili.com/space/338686099
YouTube链接: https://m.youtube.com/channel/UC67sImqK7V8tSWHMG8azIVA/playlists
生信工程师入门最佳指南: https://mp.weixin.qq.com/s/vaX4ttaLIa19MefD86WfUA
以上就是关于r统计数据分析程序相关问题的回答。希望能帮到你,如有更多相关问题,您也可以联系我们的客服进行咨询,客服也会为您讲解更多精彩的知识和内容。
推荐阅读: