SAS or R:谁更适合你?

2020-10-23 16:28:07 浏览数 (1)

在前面

大家好!新一期的大猫课堂又和大家见面啦。这次开篇先和大家说两件事:首先是感谢各位老板的打赏(好多天饭钱T_T)。大猫一开始只是对打赏这个功能很好奇,于是自己先打赏了自己一次,想看看微信后台是如何运行的。没想到后来竟然有好多老板跟着也打赏了大猫,大猫简直惊讶得合不拢嘴——只能在心里一遍遍感谢各位恩主……

第二件事是关于这次的大猫课堂。善于挖坑的大猫本期将开一个新的系列:《SAS or R:谁更适合你?》。作为一个七年的SASor,大猫对SASR,甚至是Python爬虫数据库等也都小有心得,也曾在2015年的时候将这些心得综合成一篇万字长文《你需要什么样的统计软件——SAS or R?》发在人大论坛上。两年过去了,大猫在学习过程中也有了许多新的体会,这次便打算将原来的这篇心得修改后分多期连载在《大猫课堂中》。

好了,进入正文!

大猫的目的很简单:希望大家不要走大猫走过的弯路,开心学习,开心研究,将写代码变成乐趣而不是负担。

笔缘由

最近常常被院里(经济学院)的本科生问起究竟应该选择那种统计软件,例如R/SAS/STATA/Matlab/Eviews/SPSS,比较极客一点本科生甚至考虑学习numpy/scipy/pandas这种基于python的数据处理包(似乎暂时还没遇到想学Julia的,如果有的话请受大猫一拜)。另外,随着最近互联网金融大热,许多人对于网络爬虫产生了兴趣,总是想着能从淘宝之类的网站爬点数据研究研究,但爬虫对于完全没有编程基础的经济学学生而言学习曲线却很陡。大猫对数据处理和爬虫方面的问题也算小有心得,但是总觉得当时给学弟学妹的回答不够全面,怕误人子弟,所以决心专门开一贴把自己这么多年来使用统计软件的心得给好好总结一下。

此外,经济学研究中遇到的编程工作基本上都是I/O(Input/Output) Intensive以及Interactive的(这两个词很重要!大猫会在下一期具体讲这两个词),这和一般的生产环境编程需求很不一样,大猫所有的编程和计算机知识都是自学的,因而知道对于一个非计算机科班出身的经济学人来说,什么东西最该学,什么东西最难学。当然大猫深知吾生有涯而知无涯,本帖的目的主要是给那些对于统计软件、爬虫、数据库等感兴趣的学弟学妹分享经验。大猫既非计算机科班出身,在这发帖已经做好了被打脸的准备……

猫的学术背景

牢记:你写代码的目的是进行研究,而不是写出一款商业化的软件

要掌握计算机技能其实并非一定要计算机科班出身才行,重要的是你有学习的意愿以及大量的实践。大猫从本科到博士都经济学上来的,从本科开始算起,使用SAS已经有7年了,SAS常见的不常见的模块(ACCESS/EM/IML/HPA等)也都玩过,但是最近完全投入到了R的怀抱,几乎所有数据处理都使用R(偶尔会用Python)。此外,基于兴趣和研究需要,大猫还涉猎了爬虫(Python/Scrapy)、数据挖掘(Java/Weka,Python/Scikit-learn)、数据库(MySQL,MongoDB)等领域。在项目上,基本上各种奇葩的数据类型也都处理过,自己也在实验室搭建了具有几十亿条观测的数据库,爬虫——数据清洗——入库——文本挖掘——可视化也能一个人搞定。当然以上全部工程都基于Academic Research的需求,真正生产环境的项目大猫并没接触过,不过对于大多数做研究的小伙伴们而言,有多少人写代码的最终目标是开发一款商业化的软件呢?

猫的性格与曾走过的“弯路”

性格和编程能力本无关系,但在学习上,有时一点点完美主义能够让你比别人学得更加深刻。秉承处女座光荣的完美主义传统,大猫在遇到问题时总是竭尽全力希望弄个明白而不是似懂非懂能用就行,写程序也不断追求更加efficient的版本,这也部分导致大猫对软件的原理与背景比别人钻研的更深一些(对,大猫知道“局部优化是恶魔”,你不用再提醒我了)。例如,大猫一开始学习SAS,花了大量的时间在了解PDV(Program Data Vector)的工作原理上,虽然起步看似慢了,但掌握PDV是成为SAS高手的必经之路。又如大猫学习R, 最初看的是“The art of R programming”,初看之后觉得R弱爆了,每次引用一个data.frame的变量都要带上data.frame的名字,例如“df$myvar”,而且由于R本身的Inner Copy机制,performance貌似比SAS要低很多。然而大猫此时并没有放弃,而是继续花大量时间在Stackoverflow等论坛上翻阅R相关的帖子,最终发现了RevolutionAnalytics开发的RRO(现在被微软收购后已经改名为MRO,Microsoft R Open),以及data.table、dplyr、doParalle等简直可以称作“life-saver”的包,顿时觉得R不仅在语法上比SAS灵活太多,而且performance也惶不多让!再例如,MySQL语法其实非常简单,可能一天就能熟练运用了(感兴趣的小伙伴可以去看“Sam teaches you MySQL in 24 hours”,入门最佳没有之一),但数据库的精髓在优化,学习一些数据库优化的知识能让工作事半功倍(有兴趣的同学可以参考“High Performance MySQL”)。举个例子,如果稍微懂一点SQL中索引的B-tree原理,那么很多时候你就知道什么时候该建索引什么时候不该建,这对程序的performance至关重要,而且对于你学习其他软件具有巨大的帮助。

总之,大猫这段说了这么多,核心思想就是处女座其实挺好的……

期预告

这一期大猫仅为本系列开了个头,在下一期中,大猫将进入实质性内容,深入SAS和R的核心区别,并指出I/O(Input/Output) Intensive以及Interactive这两大原则如何指导我们进行统计软件的选择。

我是大猫,咱们下一期见!

考文献

大猫在人大经济论坛上的原帖请见

http://bbs.pinggu.org/thread-3861040-1-1.html

0 人点赞