Stata命令:世行发布的一组神奇命令

发布时间:2020-10-07 阅读 2714

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

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

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

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

作者:胡雨霄 (伦敦政治经济学院)


目录


本文介绍世界银行在 Github 公布的一系列有用的命令 (useful commands)。具体而言,包括 betterbarforestoutwritesumstats,以及 makeid命令。

1. 世界银行 DIME group 公布的 Stata 资源

世界银行的 Development Impact Evaluation (DIME) group 在 Github 上共享了许多用于影响评估的 Stata 命令,对于利用 Stata 进行实证研究的使用者,这是一个非常友好的学习平台。首先,本篇推文概括并总结了世界银行共享的资源,以供 Stata 使用者参考。

DIME group 将影响评估的研究过程分为四个板块,研究设计 (Research Design),数据收集(Data Collection),数据分析(Analysis),以及发表(Publication)。基于这四个板块,DIME 进一步细化,并提供了相关的资源链接。

该网页是影响评估的实用手册。DIME 公布了两个用于影响评估的 toolkit,iefiledkt 以及 ietoolkit。这两个toolkit 包含系列用于影响评估的命令。

该网页是 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)

输出的条形图如下所示:

Bar.png
Bar.png


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)

结果如下图所示。从这张图中,研究者可以比较同一解释变量对不同被解释变量的解释力度。

Effect of Displacement on Mileage, Headroom, and Trunk Space.png
Effect of Displacement on Mileage, Headroom, and Trunk Space.png


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-value

  • format() 规定输出数字的格式,通常默认为 %9.2f

  • rownames 规定了输出表格的行名

  • 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 |
     +---------------------------------+

相关课程

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

免费公开课:


课程一览

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

专题 嘉宾 直播/回看视频
最新专题 DSGE, 因果推断, 空间计量等
Stata数据清洗 游万海 直播, 2 小时,已上线
研究设计 连玉君 我的特斯拉-实证研究设计-幻灯片-
面板模型 连玉君 动态面板模型-幻灯片-
面板模型 连玉君 直击面板数据模型 [免费公开课,2小时]

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


关于我们

  • Stata连享会 由中山大学连玉君老师团队创办,定期分享实证分析经验。直播间 有很多视频课程,可以随时观看。
  • 连享会-主页知乎专栏,300+ 推文,实证分析不再抓狂。
  • 公众号推文分类: 计量专题 | 分类推文 | 资源工具。推文分成 内生性 | 空间计量 | 时序面板 | 结果输出 | 交乘调节 五类,主流方法介绍一目了然:DID, RDD, IV, GMM, FE, Probit 等。
  • 公众号关键词搜索/回复 功能已经上线。大家可以在公众号左下角点击键盘图标,输入简要关键词,以便快速呈现历史推文,获取工具软件和数据下载。常见关键词:课程, 直播, 视频, 客服, 模型设定, 研究设计, stata, plus, 绘图, 编程, 面板, 论文重现, 可视化, RDD, DID, PSM, 合成控制法

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

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

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

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