Stata结果重现:dependencies命令-外部命令的版本控制

发布时间:2021-07-24 阅读 235

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下载 - 推文合集

作者: 王维怡 (厦门大学)
E-mail: wangwyda@163.com


目录


1. 简介

我们在用 Stata 进行数据分析时经常需要使用到外部命令。为了保证结果可重复,需要确保外部命令的版本一致。使用 ssc install 安装外部命令时,仅能安装该命令的最新版本。因此,当你把 dofile 转发给别人的时候,他们安装的外部命令版本可能与你安装的版本不一致,导致他们无法重现你的结果。

dependencies 命令就是来帮我们解决这个问题的。其将指定的外部命令当前版本冻结到当前工作路径下的一个 zip 文件中。我们在转发 dofile 时一同将这个 zip 文件转发给对方,这样一来,对方在 Stata 里使用该指定外部命令时,命令版本一致,确保了研究结果可重现。

2. dependencies 命令介绍

2.1 命令安装

安装该命令,既可以使用 Stata 的官方命令 ssc install ,也可以使用连享会最新推出的国内镜像 cnssc install 命令。

安装方法1: Stata 官方安装 ssc

. ssc install dependencies, replace

安装方法2: 国内镜像 cnssc

. ssc install cnssc, replace    // 使用 cnssc 命令的话,需要事先安装好此命令
. cnssc install dependencies, replace

cnssc 安装外部命令时是访问的国内镜像,因此安装速度要快上不少。

2.2 命令语法

安装好命令之后,可以输入 help dependencies ,查看 dependencies 的帮助文档:

. dependencies subcommand [ using filename.zip ], [ adolist(string) all replace ]
  • subcommand 必须从以下 4 个子命令中选择一个:
    • freeze 冻结 adolist(string) 中指定的外部命令到 filename.zip 文件中
    • unfreeze 解压 filename.zip 到优先界别最高的 adopath 中
    • which 展示所冻结外部命令的版本
    • remove 移除已经解冻的外部命令
  • using filename.zip 指定存放外部命令的压缩文件名称,使用 freezeunfreeze 子命令时必须填写
  • adolist(string) 指定将某个 (或多个) 外部命令进行冻结
  • all 将全部外部命令进行冻结,不能和 adolist(string) 同时使用
  • replace 覆盖 filename.zip 文件

3. Stata 实操

dependencies 的工作原理分为 2 步 :

  • Step 1 将指定的外部命令的当前版本安装包冻结到当前工作路径下的一个 zip 文件里;
  • Step 2 随后调用该外部命令时,将此 zip 文件解压到具有最高优先级的 adopath 中。

3.1 冻结命令

我们以外部命令 ietoolkit 的 6.3 版本为例,示范如何适用 dependecies 冻结和解冻外部命令。

ietoolkit 命令组包含多个命令 ( 查看此命令的介绍:Stata数据处理:ietoolkit命令组介绍-T207 )。

*- 冻结命令
. dependencies freeze using "ietoolkit63.zip", adolist(ietoolkit) replace

Freezing files...
... 22 files from 1 packages in D:/stata/plus/
Successfully frozen dependencies in C:\Users\Desktop\ietoolkit63.zip

以上代码将 6.3 版本的 ietoolkit 命令组下的全部命令冻结到 ietoolkit63.zip 文件中,此 zip 文件储存在当前工作路径下。

也可以选择仅冻结 ietoolkit 其下的几个命令,例如 iegraphiematch

. dependencies freeze using ietoolkit63.zip, adolist(iegraph iematch) replace

Freezing files...
... 0 files from 0 packages in D:/stata/plus/
... 4 stand-alone files
Successfully frozen dependencies in C:\Users\Desktop\ietoolkit63.zip

3.2 解冻命令

将上述冻结的 zip 文件与项目代码储存在一起,后续在此项目中使用 ietoolkit 命令前先解冻命令:

*- 解冻命令
. dependencies unfreeze using "ietoolkit63.zip"

The 4 ado files in ietoolkit63.zip were unfrozen in c:\ado/dependencies.
*! dependencies frozen in 14 Jul 2021

以上代码将 ietoolkit63.zip 解压到一个具有最高优先级的 adopath 中,例如存在 c:\ado/dependencies 路径下。

3.3 冻结命令的维护

如果需要查看已冻结的外部命令是哪一版本,可以使用:

*- 查看外部命令版本
. dependencies which

*! dependencies frozen in 14 Jul 2021

Ado files (*.ado) currently in c:\ado/dependencies:

c:\ado/dependencies\iegraph.ado
*! version 6.3 5NOV2019 DIME Analytics dimeanalytics@worldbank.org
c:\ado/dependencies\iematch.ado
*! version 6.3 5NOV2019 DIME Analytics dimeanalytics@worldbank.org

使用完 ietoolkit 外部命令后,使用以下代码移除解冻的外部命令,确保下次冻结新版本的 ietoolkit 时不会混淆:

*- 移除解冻的外部命令
. dependencies remove

Successfully removed dependencies ado-path and all its contents (c:\ado/dependencies).

4. 相关推文

Note:产生如下推文列表的 Stata 命令为:
lianxh 重现 外部命令 ietoolkit

安装最新版 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