论文重现:外部命令的版本控制

发布时间:2022-04-29 阅读 244

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

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

New! lianxh 命令发布了:
随时搜索推文、Stata 资源。安装:
. ssc install lianxh
详情参见帮助文件 (有惊喜):
. help lianxh
连享会新命令:cnssc, ihelp, rdbalance, gitee, installpkg

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

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

⛳ Stata 系列推文:

PDF下载 - 推文合集

连玉君 (中山大学,arlionn@163.com )
秦 范 (北京大学,qf13032861571@163.com)


目录


建议在阅读本文之前,先看如下两篇推文,了解何为 Reproducible Research,良好的代码写作习惯,以及如何使用外部命令。

1. 引言

写作一篇论文的同时需要有效保留相应的数据、代码和程序,以备提交给编辑部或与同行分享。在此过程中,如何保证实证结果完全可重现是首要目的。然而,在此过程中将面临一个挑战:如果实证分析中使用的 Stata 命令在后期被更新(算法被优化甚至被大幅改变),则基于同一命令语句得到的实证结果与最初结果不同,导致实证结果看似不可重现。但实际上,通过合理的命令版本控制方法,能避免上述问题。本文将根据所使用的 Stata 命令类型,即官方命令或外部命令(由 Stata 用户编写的命令),分别讲述如何有效控制命令版本。

2. Stata 官方命令的版本控制

Stata 官方命令只需用version注明相应 Stata 版本号。

*-Title:论文标题
*-Author:
*-Aim:Effects of X on Y
*-v1:日期;v2:日期

version 16.1  // 该语句保证了使用的 Stata 官方命令始终按 16.1 版本执行

3. 外部命令的版本控制

外部命令的版本控制方法的基本逻辑是,将实证分析时使用的外部命令版本保存在一个文件夹中,此后执行论文的 dofile 时,调用最初实证分析时使用的外部命令版本,具体有两种实现方法。

3.1 dependencies

dependencies能将当前使用的外部命令的相关命令文件冻结到一个 zip 压缩文件夹中,分享 code 给他人时只需附带该 zip 文件夹,再用 option unfreeze解冻文件夹并使用对应的命令。这种处理方式相对严谨、自动化,但操作起来稍显复杂,具体参见 Stata 结果重现:dependencies 命令-外部命令的版本控制

3.2 独立保存外部命令

基于和dependencies相同的逻辑,将一篇论文所需的外部命令统一下载和存放在一个设定文件夹中,可用 net set 或者 adopath命令设定外部命令下载和存放路径,再依次下载外部命令,如:

net set ado "$path/adofiles"
* OR
adopath + "$path/adofiles"

ssc install winsor2,replaces

但是要注意,下载命令的相关 code 自行一遍后就不要再执行,否则会安装更新版本的外部命令,因为ssc install 是安装 Statistical Software Components (http://www.repec.org) 上的命令,只能安装最新版本。

或者直接用sysdir,设定PLUS路径,将外部命令下载、存放在该文件夹中,并从中调用相关命令。

global path ""

cd "$path"
cap mkdir data
cap mkdir adofiles

*-设定外部命令下载、存放和调用的路径
sysdir set PLUS "$path/adofiles"

*-下载所需外部命令于上述设定的adofiles路径中
local ssc_packages "winsor2 ivreg2 ivreghdfe estout" //使用暂元,有助于高效新增或减少所需下载的外部命令
if !missing("`ssc_packages'") {
	foreach pkg in `ssc_packages' {

		cap `pkg'
		if _rc == 199 {
		   dis "Installing `pkg'"
			ssc install `pkg', replace
		}
		which `pkg'
	}
}

*-命令调用
sysuse nlsw88, clear
su wage, detail
winsor2 wage, replace cuts(1 99)                //winsorize wage at 1th and 99th percentiles

4. 相关推文

lianxh 复现 重现 可重复,m

相关课程

免费公开课

最新课程-直播课

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

课程主页

课程主页

关于我们

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

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

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

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

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