导师忠言:养成良好的实证研究习惯

作者:刘欣妍 (香港中文大学)邮箱:liuxinyan@link.cuhk.edu.hk

温馨提示: 文中链接在微信中无法生效。请点击底部「阅读原文」。或直接长按/扫描如下二维码,直达原文:

写在前面

我们每天都在写代码,但是细想起来,大多数的实证经济学者都是没有电脑编程基础的。我们从一开始接触 Stata 学习写代码,就没有人告诉过我们应该怎么样规划我们的代码,使得我们研究的效率得到提高。

大多数情况下,我们都是通过写一篇又一篇的论文,把遇到的坑都自己踩过一遍(比如:不小心修改了数据,使得我们无法重现文章之前的结果),才知道有一个良好的管理代码的习惯是多么重要。

有时,当你所做的项目较小时,可能无法感受到有一个好的管理习惯有多重要,但是之后,当你所接触的项目越来越大时,你才会慢慢发现,一个小小的代码习惯的改变,会让你的研究生活变得多么轻松。

因此,这篇推文,笔者将总结一些在我们实际写论文中会遇到的一些坑,以及我们该如何做才能避免这些坑,希望能够对大家未来的研究提供一些帮助。

连玉君老师之前也写过一篇类似的推文,参见 可重复性研究:如何保证你的研究结果可重现?。

好习惯 1:给你的 do file 编个顺序码

首先,我们先模拟一个真实的研究场景。比如我们现在要研究一个问题:电视的出现是否提高了马铃薯片的销量。我们有两个 excel 表格的原始数据(1) 每个县出现电视的时间 (2) 马铃薯片在 1940-1970 年间的销量。这时我们可以跑一个回归,将马铃薯片的销量对数和出现电视的虚拟变量回归,再控制年份和县级的固定效应。

在整个项目中,我们会拥有很多格式的不同数据(excel 原始数据,Stata do file, Stata 数据,latex 文稿等),如下图所示

在一段时间内,你可能记得清楚,哪个文件是由原始数据产生的,哪个数据是我们的结果表,哪个又是我们的最终版本。但是试想,当这个项目已经搁置了 2 年,你就很难再记清楚,这一大堆的文件都是怎么产生的。

为了让我们的研究更加轻松,即使两三年后重看这个项目,我们依旧可以得到之前文章里的结果,我们就需要为我们的文档编一个码。其实这个方法在 AER 很多期刊里给出的 replication files 里也经常遇到,作者会提供一个 master.do 的文档,告诉你第一步应该跑哪个 do file,第二步应该跑哪个 do file。又或者可以按照文章的表格和图形出现的顺序,建立一个 master file, 比如 AER 这篇The Separation and Reunification of Germany给出的参考 do file, 就很值得我们学习。

好习惯 2:为你的 do file 加一个撤回功能

我们有时候在做实证的时候,会不小心覆盖掉一个之前版本的数据,然后不知道为什么,发现自己再也复制不了之前得到的满意的结果了。这时,你就会发现自己非常非常需要一个撤回键,像 word 文档里的 undo 功能,可以一键回到自己之前需要的版本。

针对这个问题,目前能想到的最好的解决办法就是使用 dropbox、坚果云等可以查看文档历史版本的软件,通过这种软件,我们不仅可以看到这份文档的历史版本,还可以看到是谁进行修改的,非常适合和不同的合作者共同使用。同时,作者还介绍了在 windows 系统下合适的 SubVersion repository,感兴趣的同学可以自行研究。

好习惯 3:为你的数据建立不同的文件夹

通常情况下,我们从项目的开始到结束,会产生很多不同的数据文件。这时的一个建议是,我们需要将数据按照原始数据(raw data), 清理好的数据(clean data),和输出数据(output data)分别建立不同的文档。

这样做的好处是,我们有时候做到另外一个项目时,需要用到这个项目已经清理好的数据,就可以直接去 clean data 里寻找,而不需要再次重跑代码,做到了不同项目之间的快速连接。

Chen et al. (2020, AER) 这篇文章的文件夹设定就非常值得借鉴:

Chen Y, Fan Z, Gu X, et al. Arrival of Young Talent: The Send-Down Movement and Rural Education in China[J]. American Economic Review, 2020, 110(11): 3393-3430. -PDF-,-Data and Codes-

仓库地址为:https://www.openicpsr.org/openicpsr/project/119690/version/V1/view

好习惯 4:为你的变量取一个好名字

一开始进行项目时,我们可能会有一个习惯就是建立一个文档,专门记录一些重要的内容,比如说数据的来源,以及我是怎么建立这个变量的等等。但是实际上,等项目越做越大之后,你会发现,那个文档将永远不会再更新,而你一直在用在看的只有你的 do file。

因此,在写 do file 时最好的建议是:为你的变量取一个好的名字,让你不管什么时候看到这个变量,都能知道这个变量代表了什么。比如当你要取一个变量的 log 值时,就将该变量成 log_var,这样不管过去过久,再次看到这个变量,你都会知道这个变量代表了什么。

同时,还有一个重要的经验就是,记得把重要的链接和参考文献直接放到 do file 里,这要比重新建一个文档更加高效和方便。

以上就是在大家实证过程中,为大家提供的一些可能的小意见,希望对大家有所帮助!

#artContent h1{font-size:16px;font-weight: 400;}#artContent p img{float:none !important;}#artContent table{width:100% !important;}

(0)

相关推荐