您的位置:首页 > 其它

合成控制法什么鬼? 因果推断的前沿方法指南

2021-04-01 23:15 615 查看

可有偿投稿计量经济圈,计量相关则可

邮箱:econometrics666@sina.cn

所有计量经济圈方法论丛的do文件, 微观数据库和各种软件都放在社群里.欢迎到因果推断研究小组交流访问.想要完整do file和数据集的请看文后获取方式.

今天,我们“因果推断研究小组”将为计量经济圈的圈友引荐一个用得比较多的因果推断方法“synthetic control method”(SCM)。我们听到最多的例子是,加州于1989年实施的禁烟法案, 希望看看该法案是否降低了烟草的消费量。因为这个禁烟法案只在加州范围内有政策效果,因此传统的DID方法就没有那么好用了,因为这里的实验组就只有一个成员——加州。

对于这种问题,我们迫切想要得到因果关系,因此合成控制法就出现了并且得到快速推广。SCM的基本思想是,使用其他38个未实施禁烟法案的州的加权平均来合成一个“加州”,通过对比真实的加州和合成的加州在1989年禁烟法案之后香烟消费量的差异来识别出政策效应。

在合成控制法中,有一些关键变量比较重要,因此值得我们提出来单独说一说。以下就是我们使用一个吸烟数据集,就加州1989年实施的禁烟法案对该州香烟消费量(销售量)的影响所做的合成控制法。

synth cigsale beer(1984(1)1988) lnincome retprice age15to24 cigsale(1988) cigsale(1980) cigsale(1975), trunit(3) trperiod(1989) fig replace keep(resout)

上面程序中的一些变量解释
1.因变量y:cigsale(人均香烟销售量,包/年;
2.自变量x:beer(人均啤酒消费量), lnincome(人均GDP), retprice(香烟零售价), age15to24 (15-24岁人口的比重), cigsale(1988),cigsale(1980), cigsale(1975)是1988,1980和1975年的人均香烟销售量;
3.trunit(3):咱们的政策影响组(加州), 数据中的3=california;
4.trperiod(1989):禁烟法案从1989年开始实施;
5.fig:把合成控制图展示出;

6.keep(resout):把最后的合成结果输出到directory

我们把通过SCM回归后所生成的结果数据展示出来。从中,我们可以看到,合成的加州人均香烟消费量是通过一定权重系数将其他对照州的人均香烟消费量组合起来的。我们看到colorado州给以的权重为0.285(最大),因为这个州与咱们的政策影响州(加州)在咱们的政策开始前的特征变量x上比较接近——代表了colorado州更加像政策影响组里的加州。

注意:实质上,SCM在政策实施之前寻找最优的权重系数的过程,实际上运用了我们之前常常运用的“Matching”方法。在寻找最优的weight过程,等于是在构造一个|Y1t(treated)-W*Yit(scm)|距离,然后让咱们的预测值在预测的过程中出现最小的均方误差值(MSPE)。

在没有使用合成控制法的时候,我们比较一下加州和其他州的人均香烟消费量的时间趋势图(其他州的值是取的平均值)。很明显,在1989年禁烟法案还没有出台之前,两者就出现了很大的差距,此时,我们不可能去识别出无噪音的因果关系。所以,我们需要通过匹配方法,去保证在1989年之前咱们的控制组与政策影响组几乎没有差别,这样才能够能够对后面的政策效应做出清晰的判断。

以下就是咱们最关心的图片,因为他能够最直观地告诉我们,在政策开始实施之前,在合成的加州里的人均香烟消费量与实际加州的人均香烟消费量几乎完美重合。一旦在政策实施的1989年之前,合成的加州与实际加州的人均香烟消费量较为一致,那么我们在1989年之后所出现的两者背离情形就意味着政策效应的显现。

图里面清楚地显示着,在1989年禁烟法案之后,实际加州的人均香烟消费量远比合成的加州的人均香烟消费量要低很多,且有随着时间有不断扩大的趋势。这就意味着,禁烟法案确实对于加州的人均香烟消费量起到了偌大的抑制作用。

上面的程序并没有完整地将scm展示出来,下面我们进一步添加二个新的option:xperiod和nested。对于这两个选项的详细用处,我们列在了下方。

synth cigsale beer lnincome retprice age15to24 cigsale(1988) cigsale(1980) cigsale(1975) , trunit(3) trperiod(1989) xperiod(1980(1)1988) nested

上面程序中的一些新变量解释
1.xperiod(1980(1)1988):取解释变量beer, lnincome, retprice, age15to24为1980,1981,....1988年的平均值;
2.nested:嵌套,能够帮助我们找到优化拟合,代价是长时间的计算

在SCM过程中,下方的结果比较重要,因为我们可从中知道很多重要信息,比如控制组,自变量,用来预测的年份等。

下面这个图是我们做的安慰剂检验:就是对这39个州(包括加州)分别做一个SCM,然后获得政策处理效应(实际的人均香烟消费量minus合成的香烟消费量)。这张图片里的黄颜色线条就是加州作为政策影响组所得到的政策效应。从图里,我们可以看到,在1989年之前,实际的cigsale与合成的cigsale几乎是一模一样的(gap围绕在0上下)。

然而,对于以其他38个州作为政策影响组的gap在1989年之前没有以加州作为政策影响组的gap小,况且加州作为政策影响组在1989年之后有明显的下降趋势,这不得不让我们思考是不是有什么政策效应出现,所以安慰剂检验意味着咱们的加州禁烟法案是有效的。

在1970-1989年期间(政策效应出现之前),当把其他38个州当作政策影响组时所得到的MSPE超过当加州作为政策影响组时所得到的MSPE 20倍时的所谓“outliers”剔除时,我们会得到如下看起来没有那么杂乱无章的政策效应趋势图。不过,还是这条黄颜色的线条非同寻常,因为在1989年政策出台之前,合成控制组与政策效应影响组差不多一致,而在政策出台后两者有向下的趋势,因此表明加州禁烟政策的出台确实抑制了人均的香烟消费量。

**安慰剂检验的程序-------------

forval i=1/39{

qui synth cigsale retprice cigsale(1988) cigsale(1980) cigsale(1975), ///

xperiod(1980(1)1988) trunit(`i') trperiod(1989) keep(synth_`i', replace)

}       //对所有39个州分别进行SCM(把39个州分别作为政策影响组)

forval i=1/39{

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

}               //得到SCM的政策效应

use synth_1, clear

forval i=2/39{

qui merge 1:1 years using synth_`i', nogenerate

}                    //把所有39个政策效应合并起来

local lp

forval i=1/39 {

local lp `lp' line tr_effect_`i' years, lcolor(gs12) ||

twoway `lp' || line tr_effect_3 years,  lcolor(orange) legend(off)   xline(1989, lpattern(dash))

}                        //直接画图就好

①还不是计量经济圈社群群友的,如果对这篇文章完整的do file和数据有需要,请先进入计量经济圈社群然后在里面联系获取。

②是计量经济圈社群的群友的,如果对这篇文章完整的do file和数据有需要,请将此文转发到朋友圈然后公众号后台联系获取。

因果推断研究小组保留权利

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: