神刀安全网

现在看,在统计学或(理论/应用)计量经济学领域,python 能完美地代替 R 和 stata 吗?

我来分享一下自己关于Python和Stata的经验,算是抛砖引玉(我R用得很少就不讨论了)。我要强调一下,我对Stata和Python都只能算是入门,所以下面对二者的比较很可能限于我的水平而不够中肯。还望指正。

先说结论对于应用性的数据分析,从只使用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的时候,常常会有无力感,卡住了就卡住了,纠结很久只能靠读文档然后自己摸索。

---

补充: 有朋友问到我用什么做图。我就用Matplotlib. 虽然觉得算不上太好用,但是目前基本的功能也差不多够了。下面贴一些我一个经济史研究中的一些图。都是一些很基本的东西,只是为了让感兴趣的朋友大概了解一下我的使用情况。见笑啦:)

转载本站任何文章请注明:转载至神刀安全网,谢谢神刀安全网 » 现在看,在统计学或(理论/应用)计量经济学领域,python 能完美地代替 R 和 stata 吗?

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
分享按钮