温馨提示: 定期 清理浏览器缓存,可以获得最佳浏览体验。
作者:何庆红(北京大学中国卫生经济研究中心)
目录
连享会合成控制法 专题推文
合成控制方法(Synthetic Control Method)由 Abadie and Gardeazabal (2003) 提出。目前,该方法已被广泛使用。本文介绍合成控制法高效实现命令 synth_runner
。
在连享会此前发布的 「合成控制法 (Synthetic Control Method) 及 Stata 实现」 文中,我们已经介绍了当实验组只有一个对象(A市)时,可以使用 Abadie and Gardeazabal (2003) 提出的“合成控制法”(Synthetic Control Method) 来构造反事实框架。
其基本思想是,虽然无法找到 A 市的最佳控制地区,但通常可对若干大城市进行适当的线性组合,以构造一个更为优秀的“合成控制地区”(synthetic control region),并将 “真实 A 市” 与 “合成 A 市” 进行对比,故名 “合成控制法”。
合成控制法的一大优势是,可以根据数据(data-driven)来选择线性组合的最优权重,避免了研究者主观选择控制组的随意性。
然而,当实验组中有多个试点对象在不同的时间受到政策冲击时,「合成控制法 (Synthetic Control Method) 及 Stata 实现」 文中介绍的 synth
命令将无法实现。此时,synth_runner
命令是解决该问题的不二选择。该命令的优点包括:
原理介绍请看以下链接:
synth_runner
在 Stata 命令窗口中输入如下命令即可自动安装 synth_runner
命令:
ssc install synth_runner, replace
synth_runner
的基本语法格式如下:
synth_runner depvar predictorvars, {trunit(#) trperiod(#)|d(varname)}
[trends pre_limit_mult(real) training_propr(real) gen_vars
noenforce_const_pre_length ci max_lead(int)
n_pl_avgs(string) pred_prog(string) deterministicoutput
parallel pvals1s drop_units_prog(string)
xperiod_prog(string) mspeperiod_prog(string)
synthsettings]
trunit()
用于指定唯一的试点对象(trunit 表示 treated unit),必选项 trperiod()
用于指定试点时期(trperiod 表示 treated period)。d(varname)
为 0-1 变量,当试点对象在试点时期之后取值为1,否则取值为 0。trends
是指根据结果变量的时间顺序来匹配。具体而言,将研究对象的结果变量按照时间顺序排列,这样试点前一期的取值为1。链接: 加州控烟案例
1988 年 11 月美国加州通过了当代美国最大规模的控烟法(anti-tobacco legislation),并于1989年1月开始生效。该法将加州的香烟消费税(cigarette excise tax)提高了每包 25 美分,将所得收入专项用于控烟的教育与媒体宣传,并引发了一系列关于室内清洁空气的地方立法(local clean indoor-air ordinances),比如在餐馆、封闭工作场所等禁烟。Abadie et al. (2010) 根据美国 1970-2000 年的州际面板数据,采用合成控制法研究美国加州 1988 年 第 99 号控烟法(Proposition 99)的政策效果。
. sysuse smoking (打开数据集)
. xtset state year (设为面板数据)
panel variable: state (strongly balanced)
time variable: year, 1970 to 2000
delta: 1 unit
首先,运用
synth_runner
命令重现上一篇推文 「」基于synth
命令的结果
. synth_runner cigsale beer(1984(1)1988) ///
lnincome(1972(1)1988) retprice age15to24 ///
cigsale(1988) cigsale(1980) cigsale(1975), ///
trunit(3) trperiod(1989) gen_vars
Estimating the treatment effects
Estimating the possible placebo effects (one set for each of the 1 treatment periods)
| | Total: 38
.....................................| 26.00s elapsed.
Conducting inference: 5 steps, and 38 placebo averages
Step 1... Finished
Step 2... Finished
Step 3... Finished
Step 4... Finished
Step 5... Finished
Post-treatment results: Effects, p-values, standardized p-values
| estimates pvals pvals_std
-------------+---------------------------------
c1 | -7.887098 .1315789 0
c2 | -9.693599 .1842105 0
c3 | -13.8027 .2105263 0
c4 | -13.344 .1315789 0
c5 | -17.0624 .1052632 0
c6 | -20.8943 .0789474 0
c7 | -19.8568 .1315789 .0263158
c8 | -21.0405 .1578947 0
c9 | -21.4914 .1052632 .0263158
c10 | -19.1642 .1842105 .0263158
c11 | -24.554 .1052632 0
c12 | -24.2687 .1052632 .0263158
上表显示,加州控烟法对于人均香烟消费量有很大的负效应,而且此效应随着时间推移而变大,且统计上显著。具体来说,在 1989-2000 年(C1-C12)期间,加州的人均年香烟消费逐年减少。
其次,绘制图形查看合成效果,并绘制加州与合成加州人均香烟消费之差(即处理效应)。
. single_treatment_graphs, trlinediff(-1) effects_ylabels(-30(10)30) ///
effects_ymax(35) effects_ymin(-35)
(13 real changes made)
(3 real changes made)
. effect_graphs, trlinediff(-1)
最后,进行统计推断:
. pval_graphs
上面两幅图显示,加州控烟法对于人均香烟消费量的负效应是显著的。
. capture drop D
. program my_pred, rclass
1. args tyear
2. return local predictors "beer(`=`tyear'-4'(1)`=`tyear'-1') lnincome(`=`tyear'-4'(1)`=`tyear'-1')"
3. return local predictors "beer(`=`tyear'-4'(1)`=`tyear'-1') lnincome(`=`tyear'-4'(1)`=`tyear'-1')"
4. end
. program my_drop_units
1. args tunit
2. if `tunit'==39 qui drop if inlist(state,21,38)
3. if `tunit'==3 qui drop if state==21
4. end
. program my_xperiod, rclass
1. args tyear
2. return local xperiod "`=`tyear'-12'(1)`=`tyear'-1'"
3. end
. program my_mspeperiod, rclass
1. args tyear
2. return local mspeperiod "`=`tyear'-12'(1)`=`tyear'-1'"
3. end
* 除了加州,假定佐治亚州在1988年也实施了烟草法案
. generate byte D = (state==3 & year>=1989) | (state==7 & year>=1988)
. synth_runner cigsale retprice age15to24, d(D) pred_prog(my_pred) ///
trends training_propr(`=13/18') drop_units_prog(my_drop_units)) xperi
> od_prog(my_xperiod) mspeperiod_prog(my_mspeperiod)
Estimating the treatment effects
Estimating the possible placebo effects (one set for each of the 2 treatment periods)
| | Total: 37
....................................| 45.00s elapsed.
| | Total: 37
....................................| 44.00s elapsed.
Conducting inference: 6 steps, and 1369 placebo averages
Step 1... Finished
Step 2... Finished
Step 3... Finished
Step 4... Finished
Step 5... Finished
Step 6... Finished
Post-treatment results: Effects, p-values, standardized p-values
| estimates pvals pvals_std
-------------+---------------------------------
c1 | -.027493 .3002191 .0021914
c2 | -.0485773 .1775018 .0043828
c3 | -.0921521 .0394449 0
c4 | -.1017043 .0409058 0
c5 | -.1270111 .0241052 0
c6 | -.1352273 .0219138 0
c7 | -.141674 .0262966 0
c8 | -.196867 .0051132 0
c9 | -.1754307 .0124178 0
c10 | -.1833944 .0197224 0
c11 | -.1910038 .0233747 0
c12 | -.1889059 .0219138 0
上表显示,加州控烟法对于人均香烟消费量的负效应随着时间逐渐变大,且统计上显著。
其次,绘制图形查看合成效果,并绘制实验组与合成实验组人均香烟消费之差(即处理效应)。
最后,进行统计推断:
上面两幅图显示,加州控烟法对于人均香烟消费量的负效应是显著的。
连享会-直播课 上线了!
http://lianxh.duanshu.com
免费公开课:
直击面板数据模型 - 连玉君,时长:1小时40分钟 Stata 33 讲 - 连玉君, 每讲 15 分钟. 部分直播课 课程资料下载 (PPT,dofiles等)
支持回看,所有课程可以随时购买观看。
专题 | 嘉宾 | 直播/回看视频 |
---|---|---|
⭐ 最新专题 ⭐ | DSGE, 因果推断, 空间计量等 | |
⭕ Stata数据清洗 | 游万海 | 直播, 2 小时,已上线 |
研究设计 | 连玉君 | 我的特斯拉-实证研究设计,-幻灯片- |
面板模型 | 连玉君 | 动态面板模型,-幻灯片- |
面板模型 | 连玉君 | 直击面板数据模型 [免费公开课,2小时] |
Note: 部分课程的资料,PPT 等可以前往 连享会-直播课 主页查看,下载。
关于我们
课程, 直播, 视频, 客服, 模型设定, 研究设计, stata, plus, 绘图, 编程, 面板, 论文重现, 可视化, RDD, DID, PSM, 合成控制法
等
连享会小程序:扫一扫,看推文,看视频……
扫码加入连享会微信群,提问交流更方便
✏ 连享会学习群-常见问题解答汇总:
✨ https://gitee.com/arlionn/WD