之前给大家推送了合成控制法(SCM)的Stata操作,但是那篇推送里安慰剂检验被我简化了,做的结果其实不是那么好。这次还是借加州控烟案例给大家介绍合成控制法安慰剂检验的内容,就这么一个安慰剂检验的代码还有人在经管之家上卖四五十块。合成控制法估计处理效应的操作我就不再介绍,大家可以看之前“[color=var(--weui-LINK)]从加州控烟案例学会合成控制法的Stata操作”这篇推文(我的公众号【功夫计量经济学】)。
首先还是提一句什么是安慰剂检验?为什么要做安慰剂检验?这是网上和论文中都使用的一个标准定义:“安慰剂”(placebo)一词来自医学上的随机实验,比如要检验某种新药的疗效。此时,可将参加实验的人群随机分为两组,其中一组为实验组,服用真药;而另一组为控制组,服用安慰剂(比如,无用的糖丸),并且不让参与者知道自己服用的究竟是真药还是安慰剂,以避免由于主观心理作用而影响实验效果,称为“安慰剂效应”(placebo effect)。具体到我们加州控烟法的案例,我们想知道的是,使用合成控制法所估计的控烟效应,是否完全由偶然因素所驱动?换言之,如果从控制地区中随机抽取一个州(不是加州)进行合成控制估计,能否得到类似的效应?
学界常用的方法是Abadie et al. (2010) 在加州控烟这篇论文中提出的一种类似于统计中秩检验的排序检验方法,用来判断是否还有其他地区出现和加州同样的情况, 概率有多大。这一检验的思想是假设所有控制组的州在1989年开始实施控烟法, 使用合成控制法构造相应州的合成控制对象, 估计在假设情况下的政策效果,然后比较加州实际产生的政策效果和控制组的州假设情况下产生的政策效果。如果两者的政策效果差距足够大, 那么我们就有理由相信控烟法的政策效果是显著的。
这一方法要求在政策实施前各州的合成控制对象具有良好的拟合效果, 如果一个州1989年前的拟合效果不理想, 即MSPE(均方预测误差)或者RMSPE(均方预测误差的平方根)值比较大, 即使政策后期得到的较大的预测变量差值也不能反映该政策的实施效果。因此, 当一个州的合成控制对象在政策实施前的拟合效果不好时, 我们就需要对其进行剔除。这么做的理由是, 如果合成控制对象没能拟合好实施控烟法前的预测变量值, 最后得到的预测变量差值很可能是拟合效果不好所导致的, 与控烟法无关。
Abadie et al. (2010)在文中分别剔除了1989年之前MSPE值超过加州MSPE值20倍、5倍和2倍的州。在这里,我就以剔除20倍为例,STATA提供的是RMSPE值(MSPE的平方根)。通过计算,我们可以发现1989年之前MSPE值超过加州MSPE值20倍的有Delaware、Kentucky、New Hampshire、North Carolina、Rhode Island、Utah、Vermont、Wyoming这8个州。
- use smoking,clear
- xtset state year
- **对每一个州进行合成控制估计
- tempname resmat
- forval i=1/39{
- qui synth cigsale retprice lnincome age15to24 beer cigsale(1975) cigsale(1980) cigsale(1988),trunit(`i') trperiod(1989) xperiod(1980(1) 1988) keep(smoking_synth_`i',replace)
- matrix `resmat' = nullmat(`resmat') \ e(RMSPE) //矩阵用来存放每个州进行合成控制的rmspe值
- local names `"`names' `"`i'"'"'
- }
- mat colnames `resmat' = "RMSPE" //矩阵的列名定义为RMSPE
- mat rownames `resmat' = `names' //矩阵的行名为names
- matlist `resmat' , row("Treated Unit")
- forval i=1/39{
- use smoking_synth_`i', clear
- rename _time years
- gen tr_effect_`i' = _Y_treated - _Y_synthetic
- keep years tr_effect_`i'
- drop if missing(years)
- save smoking_synth_`i', replace
- }
- **匹配到一张表
- use smoking_synth_1, clear
- forval i=2/39{
- qui merge 1:1 years using smoking_synth_`i', nogenerate
- }
- **删除拟合不好的州
- drop tr_effect_6 //删除Delaware
- drop tr_effect_13 //删除Kentucky
- drop tr_effect_22 //删除New Hampshire
- drop tr_effect_24 //删除North Carolina
- drop tr_effect_29 //删除Rhode Island
- drop tr_effect_34 //删除Utah
- drop tr_effect_35 //删除Vermont
- drop tr_effect_39 //删除Wyoming
- **处理效应图
- local lp1
- forval i=1/2 {
- local lp1 `lp1' line tr_effect_`i' years, lpattern(dash) lcolor(gs8) ||
- }
- local lp2
- forval i=4/5 {
- local lp2 `lp2' line tr_effect_`i' years, lpattern(dash) lcolor(gs8) ||
- }
- local lp3
- forval i=7/12 {
- local lp2 `lp2' line tr_effect_`i' years, lpattern(dash) lcolor(gs8) ||
- }
- local lp4
- forval i=23/23 {
- local lp2 `lp2' line tr_effect_`i' years, lpattern(dash) lcolor(gs8) ||
- }
- local lp5
- forval i=25/28 {
- local lp2 `lp2' line tr_effect_`i' years, lpattern(dash) lcolor(gs8) ||
- }
- local lp6
- forval i=30/33 {
- local lp2 `lp2' line tr_effect_`i' years, lpattern(dash) lcolor(gs8) ||
- }
- local lp7
- forval i=36/38 {
- local lp2 `lp2' line tr_effect_`i' years, lpattern(dash) lcolor(gs8) ||
- }
- twoway `lp1' `lp2' `lp3' `lp4' `lp5' `lp6' `lp7'|| line tr_effect_3 years, ///
- lcolor(black) legend(off) xline(1989, lpattern(dash)) yline(0,lp(dash))
在上图中,实线表示加州的处理效应(即加州与合成加州的人均香烟消费之差),而虚线表示MSPE值低于加州MSPE值20倍的30个控制州的安慰剂效应(即这些州与其相应合成州的人均香烟消费之差)。显然,与其他州的安慰剂效应相比,1989年后加州的(负)处理效应显得特别大。但是在这个图中,仍然有几条线与1989年控烟法案前的零差距线有很大的偏离。所以,接下来还需要使用更加严格的标准剔除MSPE值偏大的州,就请大家自己探索吧!需要本篇推文的数据和Stata代码的朋友,请在微信公众号【功夫计量经济学】后台回复“安慰剂”。
参考资料:
[1]Abadie, A., A.Diamond, and J.Hainmueller.Synthetic Control Methods for Comparative Case Studies: Estimating the Effect of California’s Tobacco Control Program[J].Journal of the American Statistical Association, 2010, 105 (490) :493-505.
[2]刘友金,曾小明.房产税对产业转移的影响:来自重庆和上海的经验证据[J].中国工业经济,2018(11):98-116.
[3]赵西亮.基本有用的计量经济学[M].北京:北京大学出版社,2017.