温馨提示: 定期 清理浏览器缓存,可以获得最佳浏览体验。
作者:何庆红(北京大学中国卫生经济研究中心)
目录
本推文介绍合成控制方法及其 Stata 的实现命令。合成控制方法(Synthetic Control Method)由 Abadie and Gardeazabal (2003) 提出。目前,该方法已被广泛使用。
经济学家常要评估某政策或事件的效应。此政策可能实施于某国家或地区(省、州或城市)。为此,常使用"鲁宾的反事实框架"(Rubin's counterfactual framework),即假想该地区如未受政策干预将会怎样,并与事实上受到干预的实际数据进行对比,二者之差即为"处理效应"(treatment effect,借用医学术语)。
常用解决方法是,寻找适当的控制组(control group),即在各方面都与受干预地区相似却未受干预的其他地区,以作为处理组(treated group,即受到干预的地区)的反事实替身(counterfactuals)。
比如,要考察仅在 A 市实施的某政策效果,自然会想到以之相近的 B 市作为控制地区;但 B 市毕竟与 A 市不完全相同。或可用其他城市(B 市、C 市、D 市)构成 A 市的控制组,比较 B 市、C 市、D 市与 A 市在政策实施前后的差别,此方法也称"比较案例研究"(comparative case studies)。但如何选择控制组通常存在主观随意性(ambiguity),而 B 市、C 市、D 市与 A 市的相似度也不尽相同。
为此,Abadie and Gardeazabal (2003)提出"合成控制法"(Synthetic Control Method)。其基本思想是,虽然无法找到 A 市的最佳控制地区,但通常可对若干大城市进行适当的线性组合,以构造一个更为优秀的"合成控制地区"(synthetic control region),并将"真实 A 市"与"合成 A 市"进行对比,故名"合成控制法"。合成控制法的一大优势是,可以根据数据(data-driven)来选择线性组合的最优权重,避免了研究者主观选择控制组的随意性。
合成控制方法(Synthetic Control Method)的优点如下:
原理介绍请看以下链接:
在 Stata 命令窗口中输入如下命令即可自动安装 synth
命令:
ssc install synth, replace
synth
的基本语法格式如下:
synth depvar predictorvars(x1 x2 x3) , trunit(#) trperiod(#) ///
[ counit(numlist) xperiod(numlist) mspeperiod() ///
resultsperiod() nested allopt unitnames(varname) ///
figure keep(file) customV(numlist) optsettings ]
具体解释如下:
Source:加州控烟案例简介
背景: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 (设为面板数据)
. synth cigsale retprice lnincome age15to24 beer ///
cigsale(1975) cigsale(1980) cigsale(1988), ///
trunit(3)trperiod(1989) xperiod(1980(1)1988) ///
figure nested keep(smoking_synth)
具体解释如下:
cigsale(1975)
cigsale(1980)
cigsale(1988)
分别表示人均香烟消费在 1975、1980 与 1988 年的取值。trunit(3)
" 表示第 3 个州(即加州)为 处理组 (实验对象)。trperiod(1989)
" 表示控烟法在 1989 年开始实施 (政策实施时点)。xperiod(1980(1)1988)
" 表示将预测变量在 1980-1988 年期间进行平均,其中 "1980(1)1988" 表示始于 1980 年,以 1 年为间隔,而止于 1988 年;其效果等价于 "1980 1981 1982 1983 1984 1985 1986 1987 1988",而前者的写法显然更为简洁。keep(smoking_synth)
"将估计结果存为 Stata 数据集 smoking_synth.dta (自动存放于当前工作路径下)。由 Table2 可知,大多数州的权重为 0,而只有以下五个州的权重为正,即 Colorado (0.161),Connecticut (0.068),Montana (0.201),Nevada (0.235) 与 Utah (0.335)。我们随后会用这五个州的实际香烟消费量的加权平均值作为 合成加州 的替代指标。
考察加州与合成加州的预测变量是否接近:
从上表 Table1 可知,加州与合成加州的预测变量均十分接近,故合成加州可以很好地复制加州的经济特征。然后比较二者的人均香烟消费量在 1989 年前后的表现:
从上图可知,在 1989 年控烟法之前,合成加州的人均香烟消费与真实加州几乎如影相随,表明合成加州可以很好地作为加州如未控烟的反事实替身。在控烟法实施之后,加州与合成加州的人均香烟消费量即开始分岔,而且此效应越来越大。
紧接着,调用前面已存的数据集 smoking_synth.dta,计算加州与合成加州人均香烟消费之差(即处理效应),然后画图:
. use smoking_synth.dta, clear //如不打开另一Stata程序,则此数据集将覆盖原有的数据集smoking.dta
. gen effect= _Y_treated - _Y_synthetic//定义处理效应为变量effect,其中"_Y_treated"与"_Y_synthetic"分别表示处理地区与合成控制的结果变量
. label variable _time "year"
. label variable effect "gap in per-capita cigarette sales (in packs)"
. line effect _time, xline(1989,lp(dash)) yline(0,lp(dash))
上图显示,加州控烟法对于人均香烟消费量有很大的负效应,而且此效应随着时间推移而变大。具体来说,在 1989-2000 年期间,加州的人均年香烟消费减少了 20 多包,大约下降了 25% 之多,故其经济效应十分显著(economically significant)。
研究背景请看 原文链接
. synth 工业相对产值 工业相对产值(2006(1)2010) 相对工资 ln人均GDP 财政支出占GDP比重 ln人口密度人平方公里 ///
ln年末金融机构存款余额万元 ln医院卫生院床位数张 ln国际互联网用户数户 工业相对产值(2006) 工业相对产值(2008) ///
工业相对产值(2010), trunit(26) trperiod(2011) nested fig
Synthetic Control Method for Comparative Case Studies
First Step: Data Setup
Data Setup successful
Treated Unit: 26
Control Units: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 27 28 29 30 31 32 33 34
Dependent Variable: 工业相对产值
MSPE minimized for periods: 2006 2007 2008 2009 2010
Results obtained for periods: 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015
Predictors: 工业相对产值(2006(1)2010) 相对工资 ln人均GDP 财政支出占GDP比重 ln人口密度人平方公里
ln年末金融机构存款余额万元 ln医院卫生院床位数张 ln国际互联网用户数户 工业相对产值(2006) 工业相对产值(20008) 工业相对产值(2010)
Unless period is specified
predictors are averaged over: 2006 2007 2008 2009 2010
Second Step: Run Optimization
Nested optimization requested
Starting nested optimization module
Optimization done
Optimization done
Third Step: Obtain Results
Loss: Root Mean Squared Prediction Error
---------------------
RMSPE | .028082
---------------------
Unit Weights:
-----------------------
Co_No | Unit_Weight
----------+------------
1 | 0
2 | .084
3 | 0
4 | 0
5 | 0
6 | .672
7 | 0
8 | 0
9 | 0
10 | 0
11 | 0
12 | 0
13 | .244
14 | 0
15 | 0
16 | 0
17 | 0
18 | 0
19 | 0
20 | 0
21 | 0
22 | 0
23 | 0
24 | 0
25 | 0
27 | 0
28 | 0
29 | 0
30 | 0
31 | 0
32 | 0
33 | 0
34 | 0
-----------------------
Predictor Balance:
------------------------------------------------------
| Treated Synthetic
-------------------------------+----------------------
工业相对产值(2006(1)2010) | 1.150089 1.150037
相对工资 | 1.619055 1.013639
ln人均GDP | 9.817525 10.73459
财政支出占GDP比重 | .18338 .1116527
ln人口密度人平方公里 | 5.977395 6.399682
ln年末金融机构存款余额万元 | 18.25113 17.72419
ln医院卫生院床位数张 | 11.27253 10.37265
ln国际互联网用户数户 | 14.7616 13.70787
工业相对产值(2006) | .9416254 .9369883
工业相对产值(2008) | 1.132921 1.150078
工业相对产值(2010) | 1.377864 1.325148
------------------------------------------------------
Abadie et al. (2010)认为,在比较案例研究中,由于潜在的控制地区数目通常并不多,故不适合使用大样本理论进行统计推断。为此,Abadie et al. (2010)提出使用"安慰剂检验"(placebo test)来进行统计检验,这种方法类似于统计学中的"排列检验"(permutation test),适用于任何样本容量。
在上图中,黑线表示加州的处理效应(即加州与合成加州的人均香烟消费之差),而灰线表示其他 38、34、29、19 个控制州的安慰剂效应(即这些州与其相应合成州的人均香烟消费之差)。显然,与其他州的安慰剂效应相比,加州的(负)处理效应显得特别大。假如加州的控烟法并无任何效应,则在这 39、35、30、20 个州中,碰巧看到加州的处理效应最大的概率仅为 1/39 = 0.0256,1/35 = 0.0286,1/30 = 0.0333,1/20 = 0.05,而这都小于常用的显著性水平 0.05,故初步可知黑线处理效应的确是加州控烟的效果。
****稳健性检验*****************************
//有效性检验(仅展示重庆房产税对工业相对产值影响的稳健性检验程序)
************************************稳健性检验一(工业相对产值为目标变量)************************************
//政策实施前均方预测误差的平方根
tempname resmat //设定一个临时矩阵叫做resmat
forvalues i = 1/35 { //这里的循环是指将1到4个州分别做一次合成控制,也就是把2-4州,分别当做处理组进行合成控制
synth 工业相对产值 相对工资 ln人均GDP 财政支出占GDP比重 ln人口密度人平方公里 ln年末金融机构存款余额万元 ///
ln医院卫生院床位数张 ln国际互联网用户数户 工业相对产值(2006) 工业相对产值(2008) 工业相对产值(2010), trunit(`i') ///
trperiod(2011) xperiod(2006(1)2010) mspeperiod
matrix `resmat' = nullmat(`resmat') \ e(RMSPE) //临时矩阵等于每个城市做处理进行合成控制时候的rmspe值
local names `"`names' `"`i'"'"' //设定暂元names 为 1 2 3 4 ''' 35
}
mat colnames `resmat' = "RMSPE" //临时矩阵的列名定义为RMSPE
mat rownames `resmat' = `names' // 临时矩阵的行名为names
matlist `resmat' , row("Treated Unit") //展示临时矩阵,并在行的打头表示为"treated unit"
** loop through units
** loop throu
//各城市预测误差分布图
forval i=1/35{
qui synth 工业相对产值 相对工资 ln人均GDP 财政支出占GDP比重 ln人口密度人平方公里 ln年末金融机构存款余额万元 ln医院卫生院床位数张 ln国际互联网用户数户 工业相对产值(2006) 工业相对产值(2008) 工业相对产值(2010), xperiod(2006(1)2010) trunit(`i') trperiod(2011) keep(synth_`i', replace)
}
forval i=1/35{
use synth_`i', clear
rename _time years
gen tr_effect_`i' = _Y_treated - _Y_synthetic
keep years tr_effect_`i'
drop if missing(years)
save synth_`i', replace
}
**
use synth_1, clear
forval i=2/35{
qui merge 1:1 years using synth_`i', nogenerate
}
**
**删除拟合不好的城市及上海市(干预组)
drop tr_effect_2 //删除天津
drop tr_effect_20 //删除武汉
drop tr_effect_35 //删除上海
local lp1
forval i=1/1 {
local lp1 `lp1' line tr_effect_`i' years, lpattern(dash) lcolor(gs8) ||
}
**
local lp2
forval i=3/19 {
local lp2 `lp2' line tr_effect_`i' years, lpattern(dash) lcolor(gs8) ||
}
local lp3
forval i=21/34 {
local lp3 `lp3' line tr_effect_`i' years, lpattern(dash) lcolor(gs8) ||
}
**create plot
twoway `lp1' `lp2' `lp3' || line tr_effect_26 years, ///
lcolor(black) legend(off) xline(2011, lpattern(dash))
连享会计量方法专题……
安慰剂检验的另一方式是直接将每个州"干预后的 MSPE"与"干预前的 MSPE"相比,即计算二者的比值。其基本逻辑如下。对于处理地区加州而言,如果控烟法有效果,则合成控制将无法很好地预测真实加州干预后的结果变量,导致较大的干预后 MSPE。然而,如果在干预之前,合成加州就无法很好地预测真实加州的结果变量(较大的干预前 MSPE),这也会导致干预后 MSPE 增大,故取二者的比值以控制前者的影响。如果加州控烟法确实有较大的处理效应,而其他州的安慰剂效应都很小,则应该观测到加州的"干预后 MSPE"与"干预前 MSPE"之比值明显高于其他各州,而这为下图所证实。
从上图可知,加州的干预后 MSPE 是干预前 MSPE 的大约 130 倍,高于所有其他 38 个州。如果加州控烟法完全无效,而由于偶然因素使得此比值在所有 39 州中最大的概率仅为 1/39 = 0.026。
Vanderbei, R.J. 1999. LOQO: An interior point code for quadratic programming. Optimization Methods and Software 11: 451-484.
连享会-直播课 上线了!
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