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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值