R语言在经济学领域是否可靠?


64

我是经济学的研究生,最近从其他非常著名的统计软件包转换为R(我主要使用SPSS)。目前,我的小问题是我是班上唯一的R用户。我的同学使用Stata和Gauss,我的一位教授甚至说R是工程学的理想选择,而不是经济学的理想选择。他说,许多软件包是由对编程了解很多但对经济学了解不多的人构建的,因此并不可靠。他还提到了这样一个事实,因为构建R包实际上不涉及任何金钱,因此没有动机去正确地完成它(例如,与Stata不同),并且他使用R一段时间并在其中获得了一些“荒谬”的结果。他尝试估算一些东西。此外,他抱怨说自己在R中使用了随机数生成器,他说这是“

我使用R仅仅一个多月了,我必须说我爱上了它。我从教授那里听到的所有这些东西只是让我沮丧。

所以我的问题是:“ R在经济学领域是否可靠?”。


30
“许多软件包是由对编程了解很多,但对经济学不是很了解的人构建的”。软件包作者几乎总是科学家或学者,而程序员则是(很远)(最后)。实际上,我认为找到“程序员”创作的软件包将是一个挑战。
Brandon Bertelsen

9
我是否也可以邀请您和我们的其他统计经济学家加入Economics.stackexchange.com-我们将欢迎您提出的问题和有关经济学的答案
EnergyNumbers 2012年

18
看来您的教授的评论中还有些专业沙文主义。经济学家如何保证可靠性?我相当信任软件开发人员(这实际上是一种职业,没有任何特定经验或培训,任何人都无法做得很好)和统计学家会产生可靠的统计软件。
晚宴

23
因为可靠性,“对工程而言是完美的,但对经济而言却不是” 他宁愿摩天大楼倒塌也不愿经济破产?这个男人是个白痴。退出那所学校,找到一个没有白痴的学校。
Spacedman

10
商业软件可以是好是坏。开源软件可以是好是坏。重要的是您使用的软件是否有效。不要基于偏见和教条来决定。使用真实证据。
David Heffernan'4

Answers:


83

让我分享一个相反的观点。我是经济学家。我使用SAS进行了计量经济学方面的培训。我从事金融服务工作,今晚我更新了基于R的模型,明天将使用这些模型使数百万美元面临风险。

你的教授是完全错误的。但是他犯的错误非常普遍,值得讨论。您的教授似乎正在做的事情是将R软件(S语言的GNU实现)与R中实现的程序包(或其他代码)混合在一起。我可以使用SAS IML编写线性回归的废话实现。事实上,我已经做到了。这是否意味着SAS很烂?当然不是。SAS之所以胡扯,是因为它们的定价不透明,价格昂贵,而且他们的内部顾问对承诺,交付不足和娱乐溢价的收费过高。但是我离题了...

R的开放性是一把双刃剑:开放性允许任何Tom,Dick或Harry在经济体系的地下室抽烟时写出他们想出的任何算法的废话实现。相同的开放性允许实践中的经济学家公开共享代码并改进彼此的代码。使用R的许可规则意味着我可以编写并行代码以在亚马逊的云上并行运行R,而不必担心30节点集群的许可费用。这是基于模拟的分析的巨大胜利,这是我所做工作的重要组成部分。

您的教授的评论“毫无疑问,“许多程序包是由对编程了解很多但对经济学了解不多的人构建的”。但是CRAN上有3716个软件包。您可以确定其中许多不是经济学家写的。以同样的方式,您可以确定CPAN中的105,089个模块中的许多模块不是经济学家编写的。

仔细选择您的软件。确保您了解并测试了所使用的工具。另外,还要确保您了解选择哪种实施背后的真实经济学。锁定在封闭的软件解决方案中,不仅需要支付许可费用,而且成本更高。


感谢您的答复。那么,您是否建议我尝试学习其他东西?那你建议我学什么呢?
SavedByJESUS 2012年

5
不,我几乎完全使用R。您的教授或其他经济学家是否经常使用某些套餐?我不使用任何特定于econ的软件包。我使用plyr,matrix和许多其他软件包,但没有一个是专为经济学家设计的。
JD

那么,您是指“软件包”吗?您说我不应该被锁定在封闭的软件解决方案中吗?
SavedByJESUS 2012年

3
“开放性允许任何Tom,Dick或Harry编写任何算法的废话实现” –这与开放性无关,它纯粹是拥有许多封闭源产品都具有的公共API的结果(即,任何专有具有插件界面的软件)。很好的答案。
naught101 '04

3
“现在没有,也从来没有,也不会有任何一种编程语言,用它很难编写出不好的代码。”
ardave

33

它不比其他软件可靠多少。基本和推荐的R可能不如贡献的软件包那样容易出错,但这取决于作者。

但是R的最大优点是您可以检查自己是否!它是免费软件,不同于Stata或SPSS或类似软件。因此,即使它不可靠,也将最终被检测到。专有软件可能并非如此。您甚至可以帮助使其更加可靠。

对于您的教授的其余评论,他显然是错误的,并且散布了FUD。但是让我说,从使用的模型和假设以及该领域的预测来看,不可靠的软件应该是经济学家最不关心的问题。

如果愿意,请坚持使用R,也许您和教授甚至可以为开发用于经济学的优秀软件做出贡献。这是一个可能有趣的起点http://cran.r-project.org/web/views/Econometrics.htmlhttp://cran.r-project.org/web/views/TimeSeries.html


1
非常感谢你!我真的很想坚持使用R。我认为这是一个很棒的软件。另外,我一直是开源的忠实拥护者。
SavedByJESUS 2012年

17
+1表示我们这个时代的不幸真相。“不可靠的软件应该至少是经济学家所关心的,从该领域使用的模型和假设以及做出的预测来看。”
digitalmaps 2012年

2
我很欣赏这里的担忧语气,但可能会有些分歧。专有软件中的错误可以通过多种方式显示,例如,如果对R的结果有明显的异议,而这些结果看来是完全正确的。这里有一些关于专有软件的FUD,与关于R的愚蠢的FUD一样不适当。这是一个存在的功能,但是说您可以自己检查代码也有点夸张。请注意,对于Stata而言,许多代码对用户可见;只是可执行文件不是。
尼克·考克斯

23

您的教授提出了一些大胆的主张。我怀疑问题出在不熟悉R语言,而不是实际产生的结果。我在一家从事大量计量经济学建模的公司里工作,我们在R中做所有事情。我也将经济学家的同事转换为使用R。

就我个人经验而言,关于经济学领域,可靠性问题可能会反其道而行之。例如,使用面板数据时,EVIEWS版本5有一些奇怪的错误。它报告了合并OLS的常规Durbin-Watson统计信息,这在面板数据设置中是完全错误的。用于面板数据的R包也有其问题,但是这里的money参数强烈支持R。

最近,我正在学习非平稳面板时间序列方法。讲师使用了RATS软件。在演示一些代码时,他建议单击某些图标以多次清理工作区,以防万一。谈论可靠性。


20

我是经济学家,并且从事研究工作已有4年,主要从事应用计量经济学的研究。那里有很多计量经济学软件包,所有这些软件包都有空间。在我看来,在经济学中,除了时间序列外,Stata几乎用于所有其他内容,时间序列使用Rats,Eviews和Ox,Matlab和Gauss用于更底层的编程。

R的优点是它能够执行几乎其他程序所做的所有事情,并且它是免费的和开放的。它需要更多的编程,并且程序罐装的程序更少,但是最终却可以完成工作。我大多数时候都使用Stata,但是如果必须选择一种软件来完成所有工作,那么我会选择R。

R在大多数计量经济学问题上都非常可靠,但是我可以提供一些为R编写的不可靠的例程的示例。我在3SLS和需求系统估算例程方面遇到了问题。数值优化例程的稳定性不如Stata或Gauss。另一方面,R在分位数回归等问题上要好得多。尽管如此,凭借对R的良好使用知识,您可以在R的用户编写的例程中找出问题所在,进行修复,然后继续工作。因此,我认为某些特定例程中缺乏可靠性并不是完全不使用R的迫切原因。

我的建议是继续使用R,但要有您在该领域广泛使用的其他程序的经验,例如,Stata用于微计量经济学或Rats用于时间序列。


13

当我教研究生水平的统计时,我告诉我的学生:“我不在乎您使用什么软件包,您可以在家庭作业中使用任何软件包,因为我希望您能提供实质性的解释,如果我愿意的话,将会有所作为。看到 tr23y5m提交中的变量名。我可以很好地支持您在Stata中的学习,也可以在R中很好地支持您的学习。有了SAS,您就可以依靠自己,因为您声称自己已经参加了其中的课程。使用SPSS或Minitab,上帝保佑您。“我想,合理的雇主也会这么想。重要的是,根据项目成果,您的生产率。如果您可以在40小时的工作中达到R的目标,那就好了;如果您可以在40个小时的工作中用C ++做到这一点,很好;如果您知道如何在40个小时内用R做到这一点,但是您的主管希望您在SAS中做到这一点,那么您就不得不花费60个小时来学习一些基础知识以及分号所处的位置,那只能是在SAS中其余代码的大背景下才是明智的……然后,经理聘用R程序员并不是很明智。

从总成本的角度来看,“免费” R是一个夸大其词的神话。任何严肃的项目都需要自定义代码,即使仅用于数据输入和格式化输出,这也不是零的专业时间成本。如果此数据输入和格式化需要10个小时的SAS代码和20小时的R代码里面,R是一种更昂贵的软件在边际,作为一个经济学家会说,即,在附加成本方面产生给定片的功能。如果大型项目需要200个小时的R程序员时间和100个小时的Stata程序员时间来提供相同的功能,那么Stata 总体上会更便宜,甚至说明您需要购买的约$ 1K许可。看到这样的直接比较会很有趣;我参与了重写大量2Mb SPSS代码的工作,据说这些代码已经在大约10个人年内积累到大约150K的Stata代码中,并且运行速度差不多,可能会快一点。那是一个大约一年人的项目。我不知道这种10:1的效率比是否在SPSS:Stata比较中很典型,但是如果是这样,我不会感到惊讶。对我来说,由于搜索成本,使用R总是很昂贵的:我必须确定五个名称相似的软件包中的哪个做我需要做的事,并确定它是否足够可靠地被我使用。我的工作。这通常意味着对我来说,用更少的时间编写自己的Stata代码会比较便宜,因为我会花时间弄清楚如何使R在给定任务中工作。应该理解,这是我个人的特质;这个网站上的大多数人都比我更好用。

有趣的是,您的教授更喜欢Stata或GAUSS,而不是R,因为“ R不是经济学家写的”。Stata或GAUSS都不是;它们是由计算机科学家使用计算机科学家的工具编写的。如果您的教授从CodeAcademy.com上获得了有关编程的想法,那总比没有好,但是专业级软件开发与在CodeAcademy.com文本框中键入内容一样,因为驾驶货运卡车与骑自行车不同。(Stata最初是由一名劳动计量经济学家转换为计算机科学家,但是到目前为止,他已经从事这项劳动计量经济学工作已有25年之久了。)

更新:正如AndyW在下面评论的那样,您可以使用任何语言编写可怕的代码。成本问题就变成了哪种语言更容易调试。对我来说,这看起来像是输出的准确性和信息量以及语法本身的简单性和透明性的结合,当然,我对此没有很好的答案。例如,Python强制执行代码缩进,这是一个好主意。可以将Stata和R代码折叠在方括号中,而SAS无法使用。子例程的使用是一把两刃剑:在R中使用*apply()with ad-hoc function显然非常有效,但更难调试。同样,Stata local可以屏蔽几乎所有内容,并且默认为空字符串虽然有用,但也可能导致难以捕获的错误。


1
这是一个很好的答案,但是IMO泛化效果不是很好(您可以用几乎任何语言编写不好的代码或好的代码,Stata在执行好的编码标准方面并不是魔术师)。我很难看到2mb的SPSS代码是如何有效的以SPSS代码开头的(使用语法突出显示的新版本,甚至不建议在编辑器中打开这样的文件)。似乎很有可能花了很多时间来重写任何语言。
安迪W

1
我根本不编写SPSS代码,我的理解是,我使用的代码也不是编写为代码,而是从指向和单击界面保存的,然后可能会被刷掉。我可以想象SPSS会将所有默认值以及接口到代码的转换放进去,所以从一开始它并不是一个非常有效的代码。
StasK 2012年

12

我会非常谨慎地主张任何事实,但绝不提供任何实质性支持的人。

您可以轻松地扭转他的论点。

例如,由于人们期望他们的代码是正确的,因此获得报酬来编写代码的人们可能会少做些正确的事情,而典型的地下室居民希望做出承诺,从而给项目负责人留下深刻的印象。如果这意味着高质量的工作可以完成,也许他不关心自己花了多少额外的时间来免费花时间。

如果随机数生成器是“混乱的”(这是一个模糊的术语;可以轻松地替换一个真实的事实来支持他的论点),那么他应该能够证明这一点或向您展示可以的人。

如果他从包装中获得不一致的结果,则他应该能够指出为获得该结果而采取的步骤。如果这确实是一个错误,并且您具有良好的编程技能,则可以尝试为他修复此错误!

我知道我的回答没有直接回答您的问题(对不起)。仅从他说出观点的方式,您就可以看出背后没有肉。如果有的话,请随时在您的问题中对其进行编辑,以供此处的人员进一步讨论!


5

在我正在研究的ReplicationWiki中,您可以看到R是2000- 2013 年间在一些知名杂志上发表的2000项实证研究中最常使用软件包之一。似乎在最近几年中使用得更多。最多使用Stata(> 900次),其次是MATLAB(280),SAS(60),GAUSS(60),Excel(50),R(30),FORTRAN(30),Mathematica(19), EViews(18),z-Tree(16),dynare(15),RATS(12),C(8),C ++(6),python(5,最近的研究),SPSS(5)等。通常使用一个以上的包装。


这是有关软件使用情况的有趣证据。但是,除了提供清晰的指示表明R被广泛使用以外,它并没有直接涉及这个问题(R广受信赖的推断也与之相关)。
尼克·考克斯

2

我使用R已有六年了,还使用了SAS,SPSS,Calc,WEKA和其他一些工具。我从来没有像R那样享受过任何工具。基本上,R是针对那些独立思考并尝试自己学习的人的。当涉及统计时,它全都与方法有关。用户可能不知道方法是如何在商业软件中定义和建模的,它们可能是正确的还是错误的。R适用于那些希望定义方法并使用适合其需求的方法的人。这都是关于自由的。尽管花钱买了,但商业软件没有这种自由。知识是社区(社会)的财产,没有人可以声称拥有同一知识。研究全都在于寻找问题的解决方案。就R而言,用户不必担心方法的问题,因为用户可以自由定义和修改。例如,如果存在任何特定于模型的问题或错误定义的方法,可以通过修复或开发新代码来解决。这样,研究人员不仅可以发展知识,而且可以发展。

R的优点是不必是计算机程序员。统计方法都是关于仅使用控制语句和循环来编写函数的(首先,更高级别的内容将在后面介绍)。R为新手提供了非常简单的编程环境。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.