R语言不止可以做数据分析,还可以变着方法玩出花

640?wx_fmt=gif


640?wx_fmt=jpeg

▲ 长按图片保存可分享至朋友圈


作者:刘洋溢  R语言中文社区专栏作者

知乎ID:https://zhuanlan.zhihu.com/p/51396601


前言

很多人都为R语言贴上了数据分析的标签。这并不假,毕竟,它是由统计学家创造的,毕竟,它最大的优势是统计建模,尤其是前沿模型建模的便利性。但这些年,R也在与时俱进。如果现在仍然认为它仅仅是一门数据分析/统计建模语言,会不会太狭窄了呢?

我的的答案是,会,太狭窄了。


那些年,我用R做过的事

初次接触R

最早接触R语言,自然是在学校。自己做一点简单的数据分析,也作为助研,帮助老师做一点简单的分析工作。这些超级基础的应用,就不多提了。

后来,我们开始了量化交易之旅。这个过程中,做研究的小伙伴,有的选择了matlab,也有的和我一样,选择了R。利用R,我们开始对各种各样的行情数据进行分析,试图从中找出价格和价差的规律。分析手段不一而足,从基本的描述性统计、绘图,到各类回归分析,以及更为复杂的各类时间序列与波动率模型的建模与测试。与此同时,我们也会对宏观经济数据建模,曾经计量课本里那些看似遥远的协整分析、VAR模型等,也都逐渐派上用场。此外,在研究投资组合构建时,各类优化算法也派上了用场。

当然,在这个过程中,我也帮助我们的IT小伙伴,分担一部分数据处理工作,即把IT收集整理好的行情数据和其他数据,按照做策略研究的小伙伴的需求,将数据整理为他们需要的格式。举个例子,有小伙伴研究商品期货的跨品种对冲套利,需要对数据进行变换。一个商品期货品种有很多个合约,且随着时间流逝,不断有合约到期,和新合约挂牌交易。我们的原始数据为每个合约一个文件,存放其每个交易日的开高低收价格和成交量数据。而小伙伴要的数据形式是,一个品种一个文件,第一列为日期,第2-4列为1/5/9三个月份的合约的收盘价,最后一列为主力合约的月份。利用dplyr等packages,我快速地写好了R程序,每天自动帮小伙伴便利、高效地生成他需要的数据。

因此同时,还有一些其他好玩的事情。彼时网络上可以下载几乎所有的上市公司公告和研究报告,而一个小伙伴想每天收集、阅读感兴趣的公司,在当天的公告和研报,于是,我去分析了网络链接,写了个小程序,每天自动爬取、下载公告和研报,并按照日期和公司分别保存,供小伙伴参考。这个工作,也是用R做的。虽然通常爬虫用python做得更多,但事实上,R也可以同样出色地完成大部分此类工作。


R的深入研究

再后来,因为个人原因,我回到了家乡,加入了一家初创的金融科技公司。一开始,我们的工作聚焦在对银行理财产品的量化研究上,其中一些有趣的问题包括理财产品收益率曲线的构建,理财市场平均收益率的预测,理财产品与银行画像,等等。这其中,涉及更多的数据处理(异常值和缺失值处理,分组统计,聚类分析,插值计算,以及基于list类型数据的分组研究,等等),通过利用R提供的一系列packages,这些工作都得以高效地完成,并与IT小伙伴们合作,部署到了我们的产品系统中。其中,在理财产品画像部分,我们还利用R的Echarts接口,很便利地生成了收益率地图,供用户直观地对不同区域的产品收益率进行比较。

与此同时,我们也在推进着量化投资方面的研究,首当其冲的是量化大类资产配置。特别地,我们以及诸多业内同行都很感兴趣的一个问题是,是否可能基于经济周期的变换,来动态进行资产配置决策。美林时钟是这方面的一项经典研究。但在国内的市场环境下,表现并不是非常理想,被戏称为美林电风扇。我们则充分挖掘了我们团队的统计背景和R在统计建模与机器学习方面的潜能,通过引入PCA、regime switching/structural changes以及收益率均值与协方差矩阵的shrinkage estimator等算法,构建起了一套基于宏观经济周期的资产配置方法。
事实上,不止如此,类似的研究套路,也被我们进一步应用到基金投资等领域的研究中,也取得了不错的效果。此外,我们也在文本挖掘方面进行了一些探索,虽然考虑到数据量,最终的系统里,我们没有使用R,但在前期的研究阶段,R也是我们常用的工具之一。

当然,我们不应该忘记R在可视化方面的良好表现,甚至可以说是优异体验。ggplot2的惊艳感自不必说,近年越来越多的拓展库,也大大优化了其体验,可以更加简单、便利地加以利用。plotly库则进一步弥补了R自身的工具包不能很好地提供动态可视化的缺憾。此外,highcharter、REMap等提供了highcharts和ECharts等经典JS绘图库的API,进一步拓展了R的可视化性能。shiny则打开了一扇大门,可以直接利用R搭建动态网络服务。虽然产品化的直接应用大概不会很多,但对于原型开发,也有着很好的帮助。

再者,rmarkdown及在此基础上的大发展,使得RStudio在报告制作方面,可能能提供不逊于甚至优于jupyter notebook的体验。一方面,rmarkdown的语法日益完善,且内置的各种模板和设定,使得可以便利地将rmarkdown文档便以为html、pdf和word,乃至beamer和ppt。另一方面,进一步的拓展库bookdown和blogdown,甚至支持直接建立Rproject来撰写、发布电子书或维护自己的博客。而reticulate package则进一步提供了在R环境里使用python的便利,也进一步提升了rmarkdown的吸引力。我自己在研究中虽然也在某些时候更多使用python,但在报告和文章写作方面,则坚持使用R。这篇文章,以及其他所有专栏文章,以及电子书,甚至学术文章,初稿都是用rmarkdown写作的。

最后,Rcpp及相关packages的完善,也给了R使用者一个需要高性能时的解决方案,将耗时的模块用C++写,然后再调用。当然,我自己是不太乐意去用C++的,所以如果必要,我会找专业的小伙伴帮我写这部分,再行调用。


结语

所以,结合我自己的使用经历来看,R已经远非数据分析工具那么简单。它能支持相当多的日常研究活动,值得进一步探索。当然,与此同时,掌握一些新的高效工具,可能也是必要的。毕竟,说到底,工具永远是服务于我们的目的的,用的舒服,就是最好的



640?wx_fmt=jpeg

公众号后台回复关键字即可学习

回复 爬虫            爬虫三大案例实战  
回复 
Python       1小时破冰入门

回复 数据挖掘     R语言入门及数据挖掘
回复 
人工智能     三个月入门人工智能
回复 数据分析师  数据分析师成长之路 
回复 机器学习      机器学习的商业应用
回复 数据科学      数据科学实战
回复 常用算法      常用数据挖掘算法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值