Stata: 外部命令的搜索、安装与使用

发布时间:2019-03-15 阅读 1004

作者:游万海 || 连玉君

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

连享会 - Stata 暑期班

线上直播 9 天:2020.7.28-8.7
主讲嘉宾:连玉君 (中山大学) | 江艇 (中国人民大学)
课程主页https://gitee.com/arlionn/PX | 微信版


目录


Stata 软件的一大特点是其开放性。用户可以修改 Stata 官方提供的命令 (其实就是一些以 .ado 为后缀的文本文件),为己所用。同时,全球的 Stata 用户也在日夜耕耘,共享他们编写的新命令——外部命令,比如大家熟悉的 outreg2 (Roy Wada),estout (Ben Jann) 和 winsor2 (Lian Yu-jun ) 等热门命令。

遗憾的是,这些外部命令分散在互联网的各个角落,我们需要一些海纳百川的本领。这就是本文地主要目的:大家介绍外部命令的搜索、安装及使用方法。

大家在演示教材中的例子时,经常发现为何相同的命令,教材可以得到结果,而自己运行却出现错误,如最常见是扎眼的红色信息 command fuzzydid is unrecognized

常用的外部命令来源:

  • Statistical Software Components (SSC) archive (http://www.repec.org)
  • Stata Journal ( https://www.stata-journal.com/)
  • Stata Technical Bulletin (STB) (https://www.stata.com/products/stb/)
  • github (https://github.com/)

一些最热门的命令:

输入 ssc hot, n(10) 可以查看 SSC 上最热门的 10 个命令:

SSC 上最热门的 10 个 Stata 外部命令
SSC 上最热门的 10 个 Stata 外部命令

输入 github hot, number(5) 可以查看 Github 上最热门的 5 个命令。

Github 上最热门的 5 个 Stata 外部命令
Github 上最热门的 5 个 Stata 外部命令

1. 路径设置

为了方便命令的管理,下面先介绍一些基本的设置。

下载的外部命令通常为 .ado 格式,为了将下载的命令与自编的命令放在不同的路径下,找到 Stata 的安装路径,可以看到一个 【ado 】文件夹。里面有【base】 文件、【plus】 文件及 【personal】 文件(后两个文件夹不一定有自带,可以自己手动创建)。

  • 【base】文件夹用于存储 Stata 自带的基础命令
  • 【plus】文件夹用于存储外部命令
  • 【personal】用于存储自己编写的命令和 dofiles。

为了达到这一目的,需要对系统默认路径进行一些简单的设置。在 Stata 的安装路径下(如:【D:\stata15】)新建一个 profile.do 文件,将如下命令放到此文件中:

  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
adopath + "D:\stata15\ado\plus"sysdir set PLUS "D:\stata15\ado\plus"          // 外部命令的存放位置sysdir set PERSONAL "D:\stata15\ado\personal"  // 个人文件夹位置cd `c(sysdir_personal)'

Note: 连老师在这里-连玉君的 profile.do 文档 分享了他的 profile.do 文档。https://gitee.com/arlionn/StataProfile )


2. 外部命令的下载

根据外部命令的来源不同,所使用的命令也不尽一致,这里主要介绍 sscsearch,netfinditgithub 等命令。

2.1 ssc 命令

ssc 是 Statistical Software Components (http://www.repec.org) 的缩写,用于操作存放在该网站上的外部命令,包括安装 ( ssc install)、移除 ( ssc uninstall )、描述 ( ssc describe)、显示最近更新 ( ssc new )、显示最热门 ( ssc hot )。例如:

  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
. ado dir  //显示已安装ado文件[1] package outreg2 from http://fmwww.bc.edu/repec/bocode/o      'OUTREG2': module to arrange regression outputs into an illustrative table[2] package estout from http://fmwww.bc.edu/repec/bocode/e      'ESTOUT': module to make regression tables
. ssc install winsor2, all replace //安装winsor2,基本用法:ssc install newprogramnamechecking winsor2 consistency and verifying not already installed...installing into D:\stata15\ado\plus\...installation complete.

若要查看某一具体命令是否安装,可以利用

  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
. ado, find(winsor2)
[3] package winsor2 from http://fmwww.bc.edu/repec/bocode/w 'WINSOR2': module to winsorize data

要查看 ssc 上最热门的命令,可以通过

  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
. ssc hot, n(10)  //显示排名前10的命令Top 10 packages at SSC        Aug 2018     Rank   # hits    Package       Author(s)  ----------------------------------------------------------------------     1  331271.0    findname      Nicholas J. Cox                              2  19504.6    outreg2       Roy Wada                                     3  18223.6    estout        Ben Jann                                     4  11066.7    distinct      Gary Longton, Nicholas J. Cox                5   7746.3    winsor        Nicholas J. Cox                              6   6881.7    winsor2       Lian Yu-jun                                  7   6598.7    ivreg2        Mark E Schaffer, Steven Stillman,  Christopher F Baum                           8   6579.3    ivreg210      Mark E Schaffer, Steven Stillman, Christopher F Baum                           9   6571.1    ivreg28       Mark E Schaffer, Steven Stillman,  Christopher F Baum                          10   6561.8    ivreg29       Christopher F Baum, Mark E Schaffer, Steven Stillman                           ----------------------------------------------------------------------  (Click on package name for description)

从上面结果可以看出,连老师编写的 winsor2 也榜上有名 (^^此处应有掌声)。另外,还有 ssc new , ssc describe , ssc typessc copy 等用法,具体可以通过 help ssc 查看相关例子。

2.2 search 命令

相比于 ssc 命令,search 搜索的范围更广,该命令语法如下:

  • ounter(line
. search word [word ...] [, search_options]

word 表示待搜索的关键词,比如想了解面板数据模型的相关命令,可以 search panel data model。对于怎么取关键词,可以 help searchadvice。可以看出,搜索结果中既有 Stata 手册中的命令,也有外部命令,甚至还包括 Stata 官方的培训、书籍、视频和 FAQ 等信息。

Stata 中的 search 命令-Stata连享会
Stata 中的 search 命令-Stata连享会

search 命令的选项 search_options 主要包括:allnetfaqmanualsj 等,对应上文提到的各种类型的信息,以便于我们实现精准搜索。

search + all

通常为默认选项,根据帮助文件的描述:

search, all is the best way to search for information on a topic across all sources, including the system help, the FAQs at the Stata website, the Stata Journal,and all Stata-related Internet sources including user-written additions

从上面的表述可以发现,当定义 all 时,其搜索范围很广,包括软件自带的系统文件,Stata 网站的常见问题集,Stata journal 期刊及其他网络相关资料。因此,与 ssc 不同,search 命令不仅可以搜索外部命令,也能搜索其他相关文档资料。

search + net

search + netnet search 等价,帮助文件中的介绍如下:

net search searches the Internet for user-written additions to Stata, including, but not limited to, user-written additions published in the Stata Journal (SJ) and in the Stata Technical Bulletin (STB)
从上述描述可知,通过该命令可以搜索发布在 Stata Journal (SJ) 和Stata Technical Bulletin (STB)上的相关资料。资料不仅包括 ado 命令 文件,还包括帮助文件 (help files) 和数据集 (datasets).

  • (3) search + sj: 仅搜索 Stata Journal 和 Stata Technical Bulletin 上的资源。
  • (4) search + faq: 仅搜索到发布在 Stata 官网 http://www.stata.com 中的 FAQS 条目下的资源。
  • (5) search + manual: 仅搜索 Stata 电子手册文档上的资源。 例子:
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
. search linear regression, all. search linear regression, net. search linear regression, sj. search linear regression, faq. search linear regression, manual

连享会计量方法专题……

2.3 net 命令

net 命令的用法与 search 相似,功能也较多,详细可以 help net 查看。本文主要介绍以下几种:

  • (1) net search word [word ...] [, search_options] 该命令与上面介绍的 search + net 等价;
  • (2) net install 语法如下:
  • ounter(line
. net install pkgname [, all replace force from(directory_or_url)]

该命令可以用于从特定的网站安装外部 ado 文件,比如

  • ounter(line
.net install github, from("https://haghish.github.io/github/")

运行上述命令得到

  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
. net install github, from("https://haghish.github.io/github/")checking github consistency and verifying not already installed...installing into D:\stata15\ado\plus\...installation complete.

使用 ado describe 命令可以查看已安装命令详情:

  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
. ado describe github
--------------------------------------------------------[4] package github from https://haghish.github.io/github--------------------------------------------------------
TITLE 'GITHUB': search, install, and uninstall Stata packages with a particular {break}
DESCRIPTION/AUTHOR(S) version (release) as well as their dependencies from {browse "http://www.github.com/haghish/github":GitHub} website Distribution-Date: 20161214INSTALLATION FILES f\findall.ado f\findall.sthlp g\github.ado g\github.dlg g\github.sthlp g\githubcheck.ado g\githubconfirm.ado g\githubdependency.ado g\githublist.ado g\githubmake.ado g\githuboutput.ado g\githubquery.ado g\githubsearch.ado g\githubsearchsteps.ado m\make.ado m\make.dlg
INSTALLED ON 1 Nov 2018--------------------------------------------------------
  • (3) net sj vol-issue [insert] 这个用法很强大,有时候我们想把 Stata Journal 某一期所涉及的外部命令都下载到本地,比如想安装 2018年第 3 期文中的所有文件,可以使用如下命令:
  • ounter(line
. net sj 18-3

这等价于

  • ounter(line
. net from "http://www.stata-journal.com/software/sj18-3"

2.4 findit 命令

findit + keyword 等价于 search keyword [keyword ...], all

可以搜索的资料包括: 系统文件 the system help, the FAQs, the Stata Journal, and all Stata-related Internet sources including user-written additions. 如我们想了解 Stata 中有关面板单位根检验方面命令与资料,可以执行如下命令:

  • ounter(line
. findit panel unit root
Stata 中的 findit 命令
Stata 中的 findit 命令

2.5 github命令

gitHub 是一个面向开源及私有软件项目的托管平台,因为只支持 git 作为唯一的版本库格式进行托管,故名 gitHub。在 GitHub 中,用户可以十分轻易地找到海量的开源代码。

目前,越来越多学者将程序托管到该平台,包括 Python,R 和 Stata 等各种软件。为了更方便地安装托管在github 上的命令,E. F. Haghish 开发了 github 命令。github 可以实现搜索、安装、移除等功能。

为了使用这一外部命令,首先要通过以下命令进行安装

  • ounter(line
. net install github, from("https://haghish.github.io/github/")

完成 github 安装,通过 help github,可以发现其语法如下

  • ounter(line
. github [ subcommand ] [ keyword | username/repository ] [, options]

这里主要介绍 github searchgithub install

  • (1) github search: 该命令可以对托管到 github 平台的 Stata 相关命令进行搜索,比如我们想知道在 github 平台上有哪些面板数据模型相关命令,可以输入:
  • ounter(line
. github search panel data model, in(all)
github search 命令
github search 命令

根据上面返回的结果,点击相应蓝色部分的命令可以在 github 上查看相应的项目,包括:仓库、作者主页等,点击 Install 可以在线安装该命令的相关文件。

  • (2) github install: 该命令主要用于安装托管于 github 平台的外部命令。比如我们想了解在 Stata 中是否有实现动态报告的相关命令(类似于 R 里面的 knitr 包),可以输入命令
  • ounter(line
. github search dynamic report, in(all)

此时,点击 Install 会自动安装最新版本,若想安装此前的某个版本,则可以使用 github install 命令的 version() 选项加以控制:

  • ounter(line
. github install haghish/MarkDoc , version("3.8.0")

之后在界面上可以看到

  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
. github install haghish/MarkDoc , version("3.8.0")checking markdoc consistency and verifying not already installed...installing into D:\stata15\ado\plus\...installation complete.
Checking package dipendenciesmarkdoc package has no dependency

这也是发布于 github 上的命令区别于 SSC 上的命令的主要区别:Github 可以非常高效地进行版本控制。

3. 总结

可将本部分内容归结为两点:

  • 其一,当知道外部包的具体命令写法时,通常可以利用 ssc install, net installgithub install 等命令直接安装;
  • 其二,若只知道该命令的大体功能或关键词,而不知道具体名称,可以通过 finditsearchgithub search 等命令进行搜索,在返回的结果中查找安装。
  • 其三,为了保证外部命令能够被 Stata 自动检索到,需要在 profile.do 文档中设定文件路径。

连享会 - 文本分析与爬虫 - 专题视频

主讲嘉宾:司继春 || 游万海

连享会-文本分析与爬虫-专题视频教程

连享会 - 效率分析专题

已上线:可随时购买学习+全套课件,课程主页 已经放置板书和 FAQs
主讲嘉宾:连玉君 | 鲁晓东 | 张宁
课程主页微信版https://gitee.com/arlionn/TE

连享会-效率分析专题视频
连享会-效率分析专题视频

   

相关课程

连享会-直播课 上线了!
http://lianxh.duanshu.com

免费公开课:


课程一览

支持回看,所有课程可以随时购买观看。

专题 嘉宾 直播/回看视频
Stata暑期班 连玉君
江艇
线上直播 9 天
2020.7.28-8.7
效率分析-专题 连玉君
鲁晓东
张 宁
视频-TFP-SFA-DEA
已上线,3天
文本分析/爬虫 游万海
司继春
视频-文本分析与爬虫
已上线,4天
空间计量系列 范巧 空间全局模型, 空间权重矩阵
空间动态面板, 空间DID
研究设计 连玉君 我的特斯拉-实证研究设计-幻灯片-
面板模型 连玉君 动态面板模型-幻灯片-
直击面板数据模型 [免费公开课,2小时]

Note: 部分课程的资料,PPT 等可以前往 连享会-直播课 主页查看,下载。


关于我们

  • Stata连享会 由中山大学连玉君老师团队创办,定期分享实证分析经验。直播间 有很多视频课程,可以随时观看。
  • 连享会-主页知乎专栏,300+ 推文,实证分析不再抓狂。
  • 公众号推文分类: 计量专题 | 分类推文 | 资源工具。推文分成 内生性 | 空间计量 | 时序面板 | 结果输出 | 交乘调节 五类,主流方法介绍一目了然:DID, RDD, IV, GMM, FE, Probit 等。
  • 公众号关键词搜索/回复 功能已经上线。大家可以在公众号左下角点击键盘图标,输入简要关键词,以便快速呈现历史推文,获取工具软件和数据下载。常见关键词:
    • 课程, 直播, 视频, 客服, 模型设定, 研究设计, 暑期班
    • stata, plus,Profile, 手册, SJ, 外部命令, profile, mata, 绘图, 编程, 数据, 可视化
    • DID,RDD, PSM,IV,DID, DDD, 合成控制法,内生性, 事件研究, 交乘, 平方项, 缺失值, 离群值, 缩尾, R2, 乱码, 结果
    • Probit, Logit, tobit, MLE, GMM, DEA, Bootstrap, bs, MC, TFP, 面板, 直击面板数据, 动态面板, VAR, 生存分析, 分位数
    • 空间, 空间计量, 连老师, 直播, 爬虫, 文本, 正则, python
    • Markdown, Markdown幻灯片, marp, 工具, 软件, Sai2, gInk, Annotator, 手写批注, 盈余管理, 特斯拉, 甲壳虫, 论文重现, 易懂教程, 码云, 教程, 知乎

连享会主页  lianxh.cn
连享会主页 lianxh.cn

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


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

✏ 连享会学习群-常见问题解答汇总:
https://gitee.com/arlionn/WD