温馨提示: 定期 清理浏览器缓存,可以获得最佳浏览体验。
New!
lianxh
命令发布了:
随时搜索推文、Stata 资源。安装命令如下:
. ssc install lianxh
详情参见帮助文件 (有惊喜):
. help lianxh
⛳ Stata 系列推文:
原文链接:Code and Data for the Social Sciences: A Practitioner’s Guide
作者:刘欣妍 (香港中文大学) 邮箱: liuxinyan@link.cuhk.edu.hk
我们每天都在写代码,但是细想起来,大多数的实证经济学者都是没有电脑编程基础的。我们从一开始接触 Stata 学习写代码,就没有人告诉过我们应该怎么样规划我们的代码,使得我们研究的效率得到提高。
大多数情况下,我们都是通过写一篇又一篇的论文,把遇到的坑都自己踩过一遍(比如:不小心修改了数据,使得我们无法重现文章之前的结果),才知道有一个良好的管理代码的习惯是多么重要。
有时,当你所做的项目较小时,可能无法感受到有一个好的管理习惯有多重要,但是之后,当你所接触的项目越来越大时,你才会慢慢发现,一个小小的代码习惯的改变,会让你的研究生活变得多么轻松。
因此,这篇推文,笔者将总结一些在我们实际写论文中会遇到的一些坑,以及我们该如何做才能避免这些坑,希望能够对大家未来的研究提供一些帮助。
连玉君老师之前也写过一篇类似的推文,参见 可重复性研究:如何保证你的研究结果可重现?。
首先,我们先模拟一个真实的研究场景。比如我们现在要研究一个问题:电视的出现是否提高了马铃薯片的销量。我们有两个 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, 就很值得我们学习。
我们有时候在做实证的时候,会不小心覆盖掉一个之前版本的数据,然后不知道为什么,发现自己再也复制不了之前得到的满意的结果了。这时,你就会发现自己非常非常需要一个撤回键,像 word 文档里的 undo 功能,可以一键回到自己之前需要的版本。
针对这个问题,目前能想到的最好的解决办法就是使用 dropbox、坚果云等可以查看文档历史版本的软件,通过这种软件,我们不仅可以看到这份文档的历史版本,还可以看到是谁进行修改的,非常适合和不同的合作者共同使用。同时,作者还介绍了在 windows 系统下合适的 SubVersion repository,感兴趣的同学可以自行研究。
通常情况下,我们从项目的开始到结束,会产生很多不同的数据文件。这时的一个建议是,我们需要将数据按照原始数据(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
一开始进行项目时,我们可能会有一个习惯就是建立一个文档,专门记录一些重要的内容,比如说数据的来源,以及我是怎么建立这个变量的等等。但是实际上,等项目越做越大之后,你会发现,那个文档将永远不会再更新,而你一直在用在看的只有你的 do file。
因此,在写 do file 时最好的建议是:为你的变量取一个好的名字,让你不管什么时候看到这个变量,都能知道这个变量代表了什么。比如当你要取一个变量的 log 值时,就将该变量成 log_var,这样不管过去过久,再次看到这个变量,你都会知道这个变量代表了什么。
同时,还有一个重要的经验就是,记得把重要的链接和参考文献直接放到 do file 里,这要比重新建一个文档更加高效和方便。
以上就是在大家实证过程中,为大家提供的一些可能的小意见,希望对大家有所帮助!
Note:产生如下推文列表的 Stata 命令为:
lianxh dofile 可重复
安装最新版lianxh
命令:
ssc install lianxh, replace
免费公开课
最新课程-直播课
专题 | 嘉宾 | 直播/回看视频 |
---|---|---|
⭐ 最新专题 | 文本分析、机器学习、效率专题、生存分析等 | |
研究设计 | 连玉君 | 我的特斯拉-实证研究设计,-幻灯片- |
面板模型 | 连玉君 | 动态面板模型,-幻灯片- |
面板模型 | 连玉君 | 直击面板数据模型 [免费公开课,2小时] |
⛳ 课程主页
⛳ 课程主页
关于我们
课程, 直播, 视频, 客服, 模型设定, 研究设计, stata, plus, 绘图, 编程, 面板, 论文重现, 可视化, RDD, DID, PSM, 合成控制法
等
连享会小程序:扫一扫,看推文,看视频……
扫码加入连享会微信群,提问交流更方便
✏ 连享会-常见问题解答:
✨ https://gitee.com/lianxh/Course/wikis
New!
lianxh
命令发布了:
随时搜索连享会推文、Stata 资源,安装命令如下:
. ssc install lianxh
使用详情参见帮助文件 (有惊喜):
. help lianxh