阅读全文:Stata:可重复研究中的版本控制问题-require命令
作者: 李原 (厦门大学)
邮箱:liyuan_i@163.com
1. 引言
期刊发表公开代码已成为大势所趋。此前,连享会已经发布了一系列有关论文复现的推文:
- 连享会, 2020, 连享会:论文重现复现网站大全.
- 全禹澄, 2021, Stata的版本兼容性问题:可重复研究.
- 常丁祎, 2021, 公开重现资料时如何发布涉密数据.
- 汪蕾, 2020, 会计期刊论文的结果可重现吗?.
- 王维怡, 2021, Stata结果重现:dependencies命令-外部命令的版本控制.
- 秦范, 2022, Stata:论文重现代码模板.
- 秦范, 2022, 论文重现:外部命令的版本控制.
- 连享会, 2020, 直播-我的甲壳虫-论文精讲与重现.
- 连享会, 2021, 连享会公开课:论文复现的数据和代码-连玉君.
- 连玉君, 2023, Stata编程:快速查找Stata代码片段.
- 连玉君, 陈鑫梅, 2020, 可重复性研究:如何保证你的研究结果可重现?.
- 陈晓淇, 2023, 论文复现:装模做样的IV.
然而,当我们根据作者所提供的 do 文件在 Stata 中进行可重复研究时,可能面临外部命令版本不一致的问题,导致结果无法复现。这一问题也存在于不同电脑设备间的转换以及合作者间的共享交流过程中。Python (requirements
) 和 R (packrat
) 等语言均有管理程序包依赖关系的工具。而在 Stata 中,使用 ssc install
安装外部命令时,往往仅能一步到位地安装最新版本。
那么,有没有一个命令在 Stata 中实现外部命令的版本控制呢?本文介绍的 rquire
命令就可以实现这一目标。
2. require 命令
2.1 基本功能
require
命令可以管理 Stata 包依赖关系,用于 do-files 和 ado-files 文件中。给定 Stata 软件包列表,require
能够 验证系统中安装的每个命令包是否符合最低或确切的版本要求,并进行可选安装。这样一来,文件的使用方在运行特定外部命令时,能够确保命令版本的一致,从而保障了研究结果的可重现性。
该命令分三步执行:
- 首先,查找与包关联的主要 ado 文件。
- 其次,扫描 ado 文件寻找所谓的 “星行” ,即通常在文件开头以字符 *! 标注的代码,通常包含命令名称、版本、发布日期和作者。
- 最后,基于一组正则表达式从星行中提取包的版本和发布日期,验证是否满足要求。
2.2 基本语法
*命令安装
ssc install require
安装好命令之后,输入 help require
,查看相应的帮助文档:
* 基本语法
require package [, main options]
require package [ == | >=] version [, main options]
* 为了避免输入许多 `require...` 命令行,
* 我们可以把需要验证的命令写入一个名为 "requirements.txt"
* 的文件中,再统一读取执行
require using filename [, main options]
* list 帮助创建一个基于当前安装包的 "requirements.txt" 文件
require [using filename] [, list options]
主要选项 (options):
install
:安装命令包from (location)
:安装来源,可以为 URL、字典或 SSC (默认)adopath(dirname)
:安装路径
注意,由于 SSC 只存储每个包的最新版本,因此无法从 SSC 安装旧版本命令。有两种可能的解决方法:
-
其一,研究人员可以选择将自己的 adopath 作为可重复研究文件的一部分 (可结合
dependencies
命令使用)。有关dependencies
命令的介绍参见:- 王维怡, 2021, Stata结果重现:dependencies命令-外部命令的版本控制.
- 秦范, 2022, 论文重现:外部命令的版本控制.
-
其二,借助其余维护历史程序包的存储库,如 the Labor Dynamic Institute 自2021年以来维护的 SSC 镜像,以及 the Internet Archive 自2013 年以来维护的部分备份命令。
列表选项 (list):
adopath(dirname)
:包含已安装包的路径save
:相当于 "require using requirements.txt..."replace
:替换 "using" 文件exact
:列出精确版本 (==) 而不是最低版本 (>=)stata
:添加一行 Stata 安装版本的要求