分享

学习经济学需要熟悉哪些编程语言?

 联合参谋学院 2014-09-05
 
1)坛友arthur_2006
处理和分析数据都用得到,最基本的是excel,如果你的VBA用得好的话会有很大的帮助,如果你要分析数据的话,比如你要建模那么SAS还是不错的,不过比较难掌握如果你没有语言方面的基础,其他还有很多软件也能做得到。很多银行证券期货企业都使用的是oracle或者DB2,一些小企业可能使用的是SQL, 所以如果想在这方面发展就要掌握数据库的知识,毕竟金融和计算机兼备的人才还是稀缺的,而且国内很多行业都是用的是这几大数据库比如电信医疗航空等等,不会分析金融数据恐怕称不上什么金融专家吧,至于你分析得准还是不准那就要看你的金融知识掌握的程度啦,尤其是投资专业的学生学习一些这方面的知识是必要的,很多人是应用金融学专业的偏向于财务,那就去考考CFA,ACCA什么的,也没必要在这上面花费太多精力而且工作中很可能用不到的,金融数学金融工程精算专业的同学花点时间研究一下还是很有必要的,总而言之一句话,首先要看你的兴趣再就是你的专业和发展方向。


2)编程爱好者任坤
做统计和计量的话,想要跟当今的国际学术界接轨,最好学R,至少我所知道的目前美国的统计学术界被R占领的趋势很明显了。

如果只是做简单地回归随便解读一下,那随便选个傻瓜软件就可以了。如果只是应用现成的成熟的计量模型来做实证研究,那么傻瓜软件一般也就可以了。如果要以统计、计量为研究领域或者专业领域,那么编程性的东西是少不了的,即使是做实证如果涉及较为复杂的数据结构,懂编程也能帮你大幅提高生产力。另外,R的社区比较活跃,能够较好地跟上前沿。

如果涉及到处理较大的数据,一种办法是用SAS,如果不想用SAS可以学数据库方面的东西,比如把数据放在SQLite数据库中然后用{RSQLite}访问数据库,或者用{sqldf}通过SQL操作环境中的data frame。

如果觉得执行某项任务R单核速度慢,那么可以使用{parallel}或者{parallelMap}做并行计算,也可以利用云计算来处理数据。

如果涉及到其他社区的东西在R社区中没有实现,例如Java的东西,可以用{rJava}来调用Java的对象,不过速度有些慢。

比较好的办法是我在想从事数据分析工作,学什么软件或语言最好? 提到的F#函数式编程语言,用RProvider可以直接调用R,用JavaProvider直接调用Jar打包的Java程序,用PythonProvider(即将发布)直接调用Python程序,等等,很容易将各大社区的资源整合在一起使用。

目前我在GitHub上面弄一个通过R学习统计、计量、非参、数据可视化、数据库的repo: renkun-ken/learnR on GitHub ,虽然目前还没什么内容,不过可以跟踪一下。

以上说得都是经济学相关的统计和计量方面所需要的编程。事实上统计和计量所需的「编程」较为简单,基本也就是处理数据、应用已经提供的计量模型,更多需要编程的是:一、如果涉及较为前沿的计量模型,可能还需要自己实现;二、一些蒙特卡罗模拟需要一些编程。

从经济学相关的一些新型领域来说,计算经济学(Computational Economics)、计算统计学(Computational Statistics)以及计算计量学(Computational Econometrics)则需要较强的编程能力,包括算法实现、算法分析等等。举个例子,计算经济学中目前做的一块研究是Agent-based computational finance,就是建立一个模拟的金融市场,里面有几种资产,每种资产的基本面由随机的红利决定,里面有许多遵循各种逻辑的投资者,投资者对于红利发放持有的信念不同,因而从各自的逻辑触发的交易行为不同。在一个复式竞价(double auction)的交易市场中,什么样的投资者组成或者行为方式、什么样的记忆长短,能够最大程度地复制出我们在现实金融市场中观测到的资产价格或者资产收益率规律,例如资产收益率尖峰肥尾、不对称性。此时,研究者就需要较扎实的金融知识来设计一个不过于简单而又不过于复杂的模拟金融市场,也需要相应的编程能力把模型用程序语言编写出来。这中间会设计许多编程技术,例如数据库(有时要跟踪许多变量,例如投资者现金流动、财富分布)、并行计算(CPU多核并行、多进程并行、集群上的并行甚至GPU计算)等等。这方面的研究从1990s年代才开始。


3)知乎网友Jichun Si
计量经济学也有很多小的门类,请对号入座。有很多软件,Stata, matlab, R, SAS是相对来说用的比较多的。

如果是做应用计量(特别是横截面数据、面板数据),Stata是不二之选,因为不管是管理数据还是跑回归,实在太太太方便了。现在主流期刊的应用微观计量文章里面能用到的模型stata几乎都有,而且其中的绝大多数都是用stata做的。而且最大的优点是,简单!

如果做应用的时间序列,Eviews似乎是一个不错的选择。但是我一般不做这方面,也不是很有发言权。

如果做理论计量,stata eviews是没有现成的包的,而且即便Stata可以编程,可编程能力也是很差的,而且不稳健。所以懂R和Matlab就非常顺手。当然也可以用Python,最近Sargent就写了本用Python做计量的书。还有一个Julia,是这三种语言的混合,但是速度快很多,缺点是太过于小众。

如果对速度要求高,特别是金融计量很多对速度有要求的,可以考虑C、Fortran等语言。C和Fortran肯定是最快的。有一个叫做OX的,速度快,但是也很小众。但是这些语言的缺点是学习难度比较高,开发时间比较慢。Julia据说速度堪比C,而且语法特别像Matlab、Python(意味着容易学习),但是处于刚起步阶段,用的人太少了。

如果是金融计量领域,强烈建议学会SAS。SAS是最权威,速度也很快,当然最大的问题是昂贵,而且可编程能力不是多么好。但是金融里面数据量都非常非常非常大,一般的软件都瘫的时候,SAS就派上用场了。

像我自己,做应用的时候都是用stata整理数据,能用stata的坚决不用其他软件。但是因为有的时候做一些理论计量的工作,所以matlab也是必不可少的。我也在学习Julia,因为matlab的速度实在太慢。Python我一般不用来做科学计算,用的人不多,而且速度慢,一般是用来抓数据的。

最后还是补充一点吧,为什么我推荐matlab而不是其他的软件,也是有道理的。很多模型,比如空间计量模型(spatial econometrics)、贝叶斯估计、以及宏观计量里面的DSGE model、SVAR等模型,在stata、Eviews里面都是没有什么现成的东西可以用的,但是matlab提供了丰富的包,比如Dynare就是基于Matlab的,还有LeSage的空间计量软件包等等,也是基于matlab的。所以几乎你想用的模型matlab里面都能找到codes然后直接用。就算没有,你自己在matlab里面写,也不是什么难事。

最后想起一句话来,关于这些软件的选择(stata除外,因为stata在应用计量领域的地位是几乎不可替代的)可以用两句话来概括:如果你自己的时间比计算机的时间宝贵的话,学习matlab、R、甚至Python、Julia是最合适的,如果计算机的时间比你的时间宝贵的话,学习C、Fortran是必须的。然除非你的工作非常特殊(比如一些大型的结构模型的估计),一般来说,还是自己的时间更宝贵一点。

综上,做应用和做理论是不可能用一种软件解决的,建议根据自己的方向进行挑选。我觉着stata、matlab是比较推荐的,一个方便,一个灵活,都很强大,而且学习难度都不大,用的人都很多,交流起来相当方便。


4)网友张真实
数据,简单的用excel,直观,方便。复杂一些的…excel最多可以有6万多行,你确定你需要从那么大量的数据开始“学经济学么?

复杂的用R,各种模型,算法,实现,基本上R都有对应的软件包了,下载下来直接用即可,多读文档多练多用,半年左右就可以抛开excel直接用R作实战了。我博士论文全部回归和输出都是用R的,现在写的论文也都用它。替代品是Stata。也很好,但如果你和我一样是从0开始,那么强烈建议选R。

R的一个不足是没法作符号运算,这个免费的解决方案有python搭配scipy numpy等几个包,不过建议你用mathematica,它的符号计算功能最强大,输出格式也最好。你可以找个jacobian矩阵搞一下符号计算,比较一下结果就知道了。

Python这东西,熟悉了R之后,发现有功能是R实现不了的,到时候有实际需求了,再学也不迟。不是立刻就需要的。

此外,所有经济学研究(我是指empirics类型的,具体意思你懂的),都要会用latex,可以把它看做是一门编程语言。在word里排数学公式,用不了多久你就会疯掉。R中可以用ggplot2来绘图,输出到tex中。普通数据表用xtable包输出到tex,回归结果用stargazer输出到tex,都很方便。


5)网友bayes
首先要说的是R,绝对是目前国外学术界的主流,统计系基本除R以外没有其他了,计量作为和统计相关的方向,R也在逐渐渗透。所以推荐学习。

顺便说一句,R的学习曲线是比较陡峭的,所以我不太建议零基础的人从R开始,否则挫折感会比较强烈。而python会略好,所以我建议从python开始。

python并非是专用于统计或者计量的软件,而是一种非常流行的通用编程语言。经过多年发展,库也非常齐备。我试用过numpy,scipy和pandas等库,与其他通用编程语言相比,算是相当好用,不过个人感觉还是比不上R,比如画图,

ggplot2真心是神一般的存在,python的库还是略逊一筹。但是,除了数据处理之外,python可以干的事情太多了,也太牛了。我们主要要用到的,比如网页采集数据,需要正则表达式,解析网页等等。这些方面python就比R有优势多了。

当然,从趋势来看,未来似乎python比R更优。R是一群统计学家在编程序,python是一群计算机专家在争取搞数据处理。似乎python的基础更扎实。个人观点,仅供参考。

stata我认为是除了R以外最好的计量软件了,我两者均用过数年数个项目,但是依然感觉R更好用,整理和处理数据更方便。所以即使在楼上诸位所提到的微观计量领域,我依然更喜欢R。

除此以外spss,或者eviews等,感觉管理类学生用的更多,功能比较受限,不太推荐。这里不赘述。上述的几个软件,还有个问题,在于都是收费的,考虑到未来知识产权的保护,还是用免费的略靠谱。

R的主要缺点有两个:
1,面对大数据乏力。这方面sas确实有优势,但是不得不说,sas的语法太反人类了,完全接受不能。面对这个问题,我要说的是,你得看问题有多大。以我的经验,经济里面的数据量似乎还不足以超过R的处理上限很多。可能金融的高频数据会比较大,我个人没啥经验,如果遇到再补充。我尝试过10g的数据,最简单的办法,不是学sas,而是买16g的内存。:)以现在的内存价格,我觉得32g以下的问题不大。

2,性能不足。这方面python也有同样的问题,最好的解决方案是混合c/c++,不过这个就是无底洞了,耗时极多,都不见得能学好。建议的方法,还是买硬件,这个最简单。:)当然用并行包等,也是解决方法之一,我尝试过几次用机房的多台机器做集群,不是太成功。求高人指点。

上面诸位还提到过几个软件,我也略微说一下自己知道的一些软件的看法:

matlab:好东西,关键还是性能问题,同样可以靠c/c++来解决。但是我不喜欢比较大的软件,为了求个均值方差,等它启动就占了5分钟。。。

julia:好东西X2,目前关注中,可能还比较年轻,导致配套的库略少,不过看好未来发展,主要是吸取了matlab,python和c/c++的有点,写的快,运算的也快,未来看涨,紧密关注。

最后提一下函数式编程,是个好东西,但是不看好纯粹函数式编程的未来。它体现了一种颇先进的编程思想,但是在实际工作中,往往性能方面的问题较大。要解决这个问题,还是的混合函数式编程和其他方式,但这就是python,R等软件已经实现的方式,似乎又没有必要专门去学其他的函数式编程了。


6)上海财经大学博士 荣健欣
Stata微观计量中应用极多,主要是直接输命令回归,需要编程的地方不多。

至于编程,推荐R、Python.
R是非常好的统计分析软件,在计量经济学中的应用可以见Econometrics in R, Applied Econometrics with R Time Series Analysis with Applications in R这几本书

Python用来抓数据很好,并且有数学计算包SciPy可以部分替代Matlab之类科学计算的功能。


7)知乎网友justin
本科经济统计学,由于学校奇葩的课程设置,我们分别使用过:

EViews:计量经济学,时序和多元统计。
Stata:计量经济学。
SPSS:专门开的一门课,这个巨汗,权当复习了一遍统计学
Excel:大一的统计入门课使用的,这个也巨坑,就是简单的函数使用,一点没有涉及VBA。

Matlab:这个没有专门的课,是上完了C语言程序设计以后副产品,后来接触了R和Mathematica就基本抛弃了它。

R/S-Plus:在回归分析的时候使用了S-Plus,不过那时候我已经使用R语言很久了,而且S-Plus基本兼容,所以没有使用过S-Plus。

Minitab:质量控制课程上用的,基本的统计加上一些实验设计。

SAS:这个在实验室中自学过几次,直接被其奇葩的语法雷到了,据说我们学校的研究生有专门的SAS课程(类似于本科的SPSS课程),呵呵了~

我们系的妹(xue)纸(ba)就曾经抱怨说使用的软件太多了,完全被逼疯的感觉,还给我们亲爱的系主任提过意见。作为学渣也就这个问题问过系主任,她的意思是不同的软件在处理不同的数据时候是各有所长的,而且你们课程还是蛮轻松的,就多学点吧,另外不同的老师有不同的软件使用爱好,上课使用不同的软件是必然的。

学习经济学的同学,Excel和SPSS,EViews(或者Stata)就蛮好的了,Stata和EViews都可以写一些程序的,SPSS的界面化操作也是很友好的。本人使用的R,在上各种课中也都会在学了那些软件后再使用R来实现(其实绝大多数时候R都已经有现成的包了,我也大多是直接使用),R还是很不错的,推荐

很多前辈也提出了,经济学学生学习编程适可而止就好了,要不然就是一条不归路啊,面临着彻底转行的危险,本人就是一枚反面例子(泪~。所以什么Python啊,C++啊,Julia啊就不要接触了。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多