作者:胡雨霄 (伦敦政治经济学院)
Stata 连享会: 知乎 | | 码云 | CSDN
Source: World Bank Stata GitHub: Other useful commands:
- 连享会推文集锦
- Stata连享会 精品专题 || 精彩推文
连享会计量方法专题……
连享会#金秋十月 @ 空间计量专题 (2019.10.24-27,成都)
本文介绍世界银行在 Github 公布的一系列有用的命令 (useful commands)。具体而言,包括 betterbar
,forest
,outwrite
,sumstats
,以及 makeid
命令。
1. 世界银行 DIME group 公布的 Stata 资源
世界银行的 Development Impact Evaluation (DIME) group 在 Github 上共享了许多用于影响评估的 Stata 命令,对于利用 Stata 进行实证研究的使用者,这是一个非常友好的学习平台。首先,本篇推文概括并总结了世界银行共享的资源,以供 Stata 使用者参考。
- DIME Wiki
DIME group 将影响评估的研究过程分为四个板块,研究设计 (Research Design),数据收集(Data Collection),数据分析(Analysis),以及发表(Publication)。基于这四个板块,DIME 进一步细化,并提供了相关的资源链接。
- Stata_Coding_Practices
该网页是影响评估的实用手册。DIME 公布了两个用于影响评估的 toolkit,iefiledkt
以及 ietoolkit
。这两个toolkit 包含系列用于影响评估的命令。
- DIME Github
该网页是 DIME 的 Github 主页,具体包括四个部分: Analytics Public Resources,DIME Analytics Code,DIME Analytics Blogposts,以及 Other useful commands。
本文主要介绍最后一个部分: Other useful commands。
2. betterbar 和 betterbarci 命令
该命令允许输出带有置信区间的条形图。其基本语法如下:
betterbar varlist [if] [in] [weight], [options] [twoway_options]
各选项含义如下:
-
by(varname)
是一级 (top-level) 分组方式 - `over(varname) 是二级 (bottom-level) 分组方式
-
bar
设定标注平均值
接下来我们使用 ssc install
命令安装 betterbar
命令的相关文件,并展示使用范例:
ssc install betterbar, replace //安装命令
sysuse "auto.dta" , clear //数据
xtile temp = rnormal(), n(4) //按照正态分布分成四个分位
label def temp 1 "I" 2 "II" 3 "III" 4 "IV"
betterbarci trunk mpg, over(foreign) ///
by(temp) bar format(%9.2f)
输出的条形图如下所示:
3. forest 命令
forest
命令可以在一张图中输出某个解释变量 (x) 在不同回归中对不同被解释变量 (y1, y2, ……) 的影响。其基本命令如下
forest estimator depvars = treatment [if] [in] , ///
[weight(weight)] [controls(varlist)]
[graphopts(twoway_options)]
其中,
-
depvars
列出被解释变量 -
treatment
列出独立变量 -
weight(weight)
允许加入权重 -
controls()
允许加入不同回归中的控制变量 -
[graphopts(twoway_options)]
允许对 graph 进行设定
通过 forest
命令,可以探究某一变量对不同 outcome 的影响。下图的例子中,三个回归均以 displacement 为解释变量,而分别以 mileage headroom 以及 trunk 为被解释变量。而上图则展示了着三个回归中 displacement 的系数以及置信区间。
/* 对graph的设定 */
global tw_opts ///
title(, justification(left) color(black) span pos(11)) ///
graphregion(color(white) lc(white) lw(med)) bgcolor(white) ///
ylab(,angle(0) nogrid) xtit(,placement(left) justification(left)) ///
yscale(noline) xscale(noline) legend(region(lc(none) fc(none)))
sysuse auto.dta , clear
forest reg mpg headroom trunk = displacement , graph($tw_opts)
结果如下图所示。从这张图中,研究者可以比较同一解释变量对不同被解释变量的解释力度。
3. outwrite 命令
outwrite
命令可以输出不同回归的结果,并将不同回归的结果整合为一张表格,最终以 .xlsx, .xls, .csv, 或者 .tex 的格式导出。
其基本语法为
outwrite estimates_1 estimates_2 [...] using "/path/to/output.[xlsx|xls|csv|tex]" ,
[replace stats() drop(varlist)] [tstat|pvalue] [format(format)]
[sheet(sheetname [,replace]) modify]
[rownames("list" "of" "names") colnames("list" "of" "names")]
其中,
estimate_[]
是利用estimates store
保存的回归结果stats()
允许在表格底部加入统计量,例如 N,r2 等。drop(varlist)
可以只保留必要留在输出表格中的变量tstat|pvalue
可以选择输出 t 统计量或者 p-valueformat()
规定输出数字的格式,通常默认为 %9.2frownames
规定了输出表格的行名colnames
则规定了输出表格的列名举例
sysuse auto.dta, clear
reg price i.foreign##c.mpg
est sto reg1
reg price i.foreign##c.mpg##i.rep78
est sto reg2
estadd scalar h = 4
reg price i.rep78
est sto reg3
estadd scalar h = 2.5
outwrite reg1 reg2 reg3 using "test.tex", ///
stats(N r2 h) replace col("TEST" "(2)") ///
drop(i.rep78) format(%9.3f)
运行该命令后,输出的表格如下图所示。
| | TEST | (2) | |
| ------------------------------------------------------- | ------------ | ------------- | ----------- |
| Car type=Foreign | -13.587 | 10778.100 | |
| | 2634.664 | 29479.229 | |
| Mileage (mpg) | -329.255*** | -123.167 | |
| | 74.985 | 610.350 | |
| Car type=Foreign * Mileage (mpg) | 78.888 | -306.273 | |
| | 112.481 | 920.727 | |
| Car type=Domestic * Repair Record 1978=1 | | | |
| | | | |
| Car type=Foreign * Repair Record 1978=3 | | -19235.155 | |
| | | 34136.560 | |
| Car type=Foreign * Repair Record 1978=4 | | -2139.158 | |
| | | 30896.784 | |
| Repair Record 1978=2 * Mileage (mpg) | | -507.656 | |
| | | 663.585 | |
| Repair Record 1978=3 * Mileage (mpg) | | -396.619 | |
| | | 622.879 | |
| Repair Record 1978=4 * Mileage (mpg) | | 7.265 | |
| | | 642.175 | |
| Repair Record 1978=5 * Mileage (mpg) | | 233.417 | |
| | | 1100.325 | |
| Car type=Foreign * Repair Record 1978=3 * Mileage (mpg) | | 689.032 | |
| | | 1180.072 | |
| Car type=Foreign * Repair Record 1978=4 * Mileage (mpg) | | 4.446 | |
| | | 1000.733 | |
| Constant | 12600.538 | 7151.000 | 4564.500 |
| | 1527.888 | 12947.485 | 2107.347 |
| N | 74.000 | 69.000 | 69.000 |
| r2 | 0.289 | 0.384 | 0.014 |
| h | | 4.000 | 2.500 |
4. sumstats 命令
该命令可以简便得制作描述性统计表格。其基本语法如下
sumstats (varlist_1 [if]) [(varlist_2 [if])] [...]
using "/path/to/output.xlsx" [weight], stats(stats_list) [replace]
其中,
varlist
设定变量名称[weight]
允许引入权重stats(stats_list)
明确要输出的统计量举例
sysuse auto.dta , clear
sumstats ///
(price mpg if foreign == 0) ///
(price displacement length if foreign == 1) ///
using "test.xlsx" , replace stats(mean sd)
输出表格如下所示。可以看出,该命令可以实现分组的描述性统计的分组输出。
| | mean | sd |
| ----------------------- | ------- | ------- |
| Subsample: foreign == 0 | | |
| Price | 6072.42 | 3097.10 |
| Mileage (mpg) | 19.83 | 4.74 |
| | | |
| Subsample: foreign == 1 | | |
| Price | 6384.68 | 2621.92 |
| Displacement (cu. in.) | 111.23 | 24.88 |
| Length (in.) | 168.55 | 13.68 |
5. makeid 命令
该命令允许创建 Unique ID。其基本命令为:
makeid varlist, generate(newvarname) project(Project Name)
需要注意的是,varlist 中的变量必须本身即是 unique 的,而不能有 duplicate。
- 举例
. ssc install makeid
. sysuse auto.dta , clear
(1978 Automobile Data)
. makeid foreign make , gen(uniqueid) project(Demo)
(data now sorted by foreign make)
(data now sorted by uniqueid)
. de uniqueid
storage display value
variable name type format label variable label
-----------------------------------------------------------------
uniqueid str4 %9s Demo ID: foreign + make
. list foreign make uniqueid in 1/5
+-------------------------------------+
| foreign make uniqueid |
|-------------------------------------|
1. | Domestic AMC Concord D101 |
2. | Domestic AMC Pacer D102 |
3. | Domestic AMC Spirit D103 |
4. | Domestic Buick Century D104 |
5. | Domestic Buick Electra D105 |
+-------------------------------------+
. list foreign make uniqueid in 53/57
+---------------------------------+
| foreign make uniqueid |
|---------------------------------|
53. | Foreign Audi 5000 D201 |
54. | Foreign Audi Fox D202 |
55. | Foreign BMW 320i D203 |
56. | Foreign Datsun 200 D204 |
57. | Foreign Datsun 210 D205 |
+---------------------------------+
连享会计量方法专题……
关于我们
- 【Stata 连享会(公众号:StataChina)】由中山大学连玉君老师团队创办,旨在定期与大家分享 Stata 应用的各种经验和技巧。
- 公众号推文同步发布于 CSDN-Stata连享会 、-Stata连享会 和 知乎-连玉君Stata专栏。可以在上述网站中搜索关键词
Stata
或Stata连享会
后关注我们。 - 点击推文底部【阅读原文】可以查看推文中的链接并下载相关资料。
- Stata连享会 精品专题 || 精彩推文
联系我们
- 欢迎赐稿: 欢迎将您的文章或笔记投稿至
Stata连享会(公众号: StataChina)
,我们会保留您的署名;录用稿件达五篇
以上,即可免费获得 Stata 现场培训 (初级或高级选其一) 资格。您也可以从 连享会选题平台 → [002_备选主题] 中选择感兴趣的题目来撰写推文。 - 意见和资料: 欢迎您的宝贵意见,您也可以来信索取推文中提及的程序和数据。
- 招募英才: 欢迎加入我们的团队,一起学习 Stata。合作编辑或撰写稿件五篇以上,即可免费获得 Stata 现场培训 (初级或高级选其一) 资格。
- 联系邮件: [email protected]
往期精彩推文
- Stata连享会推文列表
- Stata连享会 精品专题 || 精彩推文