关于这个问题,整理几个同学的讨论观点,仁者见仁,智者见智!
babyquant:计算机专业的毕业生会远比统计系的毕业生多,但并不代表python比r的用户多。其实除了计算机、数学、工程等少量专业,绝大多数专业的学生编程能力都不强,一般都用stata/spss/sas等更简单实用的语言,要想让他们从这些语言直接到python,其实是有点跳跃,或许过渡到r是更现实的选择,因此很容易找到很多社会科学、经济、政治、生物的人用R写了各种各样的package,而python还是那几个pandas,numpy等基础包。
我倾向于认为社会的发展方向是分工越来越细,而不是要求人的技术水平越来越全面。懂一些编程对日常工作有没有帮助?肯定有!但为了这点帮助需不需要学习python?99%是不需要,或许R,甚至excel vba就足够了。社会不需要把所有人变成程序员。
至于在纯数据分析领域的R vs python问题,python在大规模数据处理上会有优势,直接点说就是“数据量大于内存”的时候会有优势。现在的内存都是8G、16G的水平,说实话,除了互联网有更大的数据量,很多领域都没有。运算速度大家一样的,Rcpp vs cython,半斤八两;你能并行我也能并行,这些都是一样的。
统计系的人在统计素养的训练上会强一些,但这属于soft skill,计算机专业的人一般认为自己coding这些hard skill强,也顺便推理到自己soft skill也强,这是最大的误区。计算机的人做数据分析,往往偏重于降低误差,比如cross validation之类的,会用比较暴力的方法,对t-stat, p-value, r^2其实概念其实是不懂的,Andrew Ng也没教...或许一个纯计算机背景的team,苦做1年,死劲把误差降低,但一个做统计的人路过一看,你这里犯了个小错误哦,这个东西不是平稳的喔,这个样本不能这么切,等等。。。或许一年的工作就是garbage in garbage out了。。。
毕益:R的一个优势是它是统计学家写的,R的劣势也是它是由统计学家写的。
在我的定义里,R/python/matlab,是基本可以相互替代的,越难选择越是说明都可以。我修ML的时候曾问过老师哪个最适合,老师回答皆可。不管统计计量还是时间序列,我一直用的是R,相当满意,毕竟玩统计的写给自己用的,知道自己需要什么,足够专业。
至于stata,我是与spss/eviews归为一类,称为计量软件,与R这种统计语言还是有本质区别的。
黄一飞:对于应用性的数据分析,从只使用Stata,到较为流利地使用Python,很可能会受益匪浅,并伴随着豁然开朗的愉悦体验。这些技能适用面比Stata更广,并且只要肯花些力气,学会基本的东西起来并不会有太多困难。加之Stack Overflow之类社区对学习效率的巨大提升,学习Python的投资回报率很高。
我是做应用微观的,大部分的研究项目不涉及任何高深的计量方法,基本上是走用心问问题,然后下苦功夫搜集一手数据的“苦情”路线(偏经济史方向的研究是从原始历史档案中搜集的数据,偏管理科学方面的研究是从用的一家公司的员工互相评价的绩效考核数据)。所以对软件的需求主要是数据清理、变换、可视化之类。
我最初是用Stata. 当时觉得Stata还是蛮方便的,特别是定义一下新变量(bysort: gen之类的语法很好用),以及跑跑OLS/Logit回归,然后输入表格到Latex. 这些基础功能Stata实现起来真是非常方便。不过,美中不足的是,一旦要自己写写函数,就开始不习惯Stata编程的方式了,所以代码不容易重复使用,Do File一长,慢慢就觉得有些乱。再就是矩阵操作和运算功能不太好用。
后来随着自己对data science和machine learning的兴趣,在edX, Coursera, Udacity等平台上了一些基于Python的课程。其中对实用工具的学习收获最大的是edX上MIT的两门Python课程(6.00.1x和6.00.2x),以及Udacity上的Intro to Data Science. 上了这些课以后,自己做了一些machine learning的小项目。当时学习的目的本不是为了应用到自己的经济学研究中去——那段时间里,除了一个博弈论的模型我无从下手分析,用Python做了一下agent-based simulation刻画了均衡的性质外,并没有真正拿来完整地做一个项目。
有意思的是几个月以后,我开始了一个新的项目,虽然仍然不需要高深的统计和计量,但是在数据的处理上,比之前更复杂——需要把数据汇总成一些转换矩阵 (transition matrix),然后做一些计算,以及做大量的数据可视化。有感于之前使用Stata的力不从心,开始新的项目的时候,我尝试着完全用Python Pandas来做数据操作(data manipulation)、用Matplotlib画图。另外一个原因是,当我开始用IPython Notebook以后,便欲罢不能了——代码和分析结果(图表)被整合在一个文档里(一块代码后面紧跟着输出结果),非常适合整理和分享。谁用谁知道。
最开始从Stata转到Python的时候,还是不太习惯Pandas DataFrame,特别是对于Reshaping, MultiIndex, pivot_table等功能。所以还是蛮怀念Stata. 后来慢慢感受到Pandas强大的数据操作功能。
简单来说,使用Python以后,我最满意的效率提高在于所有的分析都自动化了,从原始数据到最终所需要的图表、结果,不需要一些半自动化的手工调整。而且代码的可重复利用程度显著提升。另外就是,使用Python以后,得益于数据操作能力的增强,我变得比之前更频繁地将数据可视化,几乎所有的回归分析我都会做相应地描述性分析和可视化。
最后,不得不提的是Python相关社区的强大。我有不会的就Google,搜索出来的Stack Overflow的问答、以及一些技术博客里面的内容,基本上都能解决问题。然而,使用Stata的时候,常常会有无力感,卡住了就卡住了,纠结很久只能靠读文档然后自己摸索。(来源:知乎)
后台回复“入群”
即可加入“皮皮侠数据”干货交流群



