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

发布时间:2021-06-19 阅读 3371

Stata连享会   主页 || 视频 || 推文 || 知乎

温馨提示: 定期 清理浏览器缓存,可以获得最佳浏览体验。

New! lianxh 命令发布了:
随时搜索推文、Stata 资源。安装命令如下:
. ssc install lianxh
详情参见帮助文件 (有惊喜):
. help lianxh

课程详情 https://gitee.com/lianxh/Course

课程主页 https://gitee.com/lianxh/Course

⛳ Stata 系列推文:

PDF下载 - 推文合集

原文链接:Code and Data for the Social Sciences: A Practitioner’s Guide

作者:刘欣妍 (香港中文大学) 邮箱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 里,这要比重新建一个文档更加高效和方便。

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

相关推文

Note:产生如下推文列表的 Stata 命令为:
lianxh dofile 可重复
安装最新版 lianxh 命令:
ssc install lianxh, replace

相关课程

免费公开课

最新课程-直播课

专题 嘉宾 直播/回看视频
最新专题 文本分析、机器学习、效率专题、生存分析等
研究设计 连玉君 我的特斯拉-实证研究设计-幻灯片-
面板模型 连玉君 动态面板模型-幻灯片-
面板模型 连玉君 直击面板数据模型 [免费公开课,2小时]
  • Note: 部分课程的资料,PPT 等可以前往 连享会-直播课 主页查看,下载。

课程主页

课程主页

关于我们

  • Stata连享会 由中山大学连玉君老师团队创办,定期分享实证分析经验。
  • 连享会-主页知乎专栏,400+ 推文,实证分析不再抓狂。直播间 有很多视频课程,可以随时观看。
  • 公众号关键词搜索/回复 功能已经上线。大家可以在公众号左下角点击键盘图标,输入简要关键词,以便快速呈现历史推文,获取工具软件和数据下载。常见关键词:课程, 直播, 视频, 客服, 模型设定, 研究设计, stata, plus, 绘图, 编程, 面板, 论文重现, 可视化, RDD, DID, PSM, 合成控制法

连享会小程序:扫一扫,看推文,看视频……

扫码加入连享会微信群,提问交流更方便

✏ 连享会-常见问题解答:
https://gitee.com/lianxh/Course/wikis

New! lianxh 命令发布了:
随时搜索连享会推文、Stata 资源,安装命令如下:
. ssc install lianxh
使用详情参见帮助文件 (有惊喜):
. help lianxh