合成控制法SCM案例–包含稳健性检验/安慰剂检验
synth命令详解
安装命令
- ssc install synth, replace
复制代码
使用命令
- synth depvar predictorvars , trunit(#) trperiod(#) [ counit(numlist) xperiod(numlist) mspeperiod() resultsperiod() nested allopt unitnames(varname) figure keep(file) customV(numlist) optsettings ]
在使用synth命令必须先使用tsset或xtset声明下是面板数据集
譬如使用smoking.dta的话是 tsset state year 或xtset state year
注意state只能是数字,不能是文字
depvar |
必填,结果变量(因变量) |
predictorvars |
必填,预测变量(自变量) |
trunit(3) |
必填,用于指定处理地区,smoking.dta中处理组对应的编号3(即Califonia) |
trperiod(1989) |
必填,指定政策干预开始的时期,smoking.dta中禁烟法案开始时间为1989年 |
counit(numlist) |
指定控制地区,默认是除处理地区以外的所有地区都是控制地区,一般可以不加这个选项 |
xperiod(numlist) |
指定将预测变量进行平均的期间,默认为政策干预开始之前的所有时期 |
mspeperiod() |
用于指定最小化均方预测误差(MSPE)的时期,默认为政策干预开始之前的所有时期 |
figure |
将处理地区与合成控制的结果变量画时间趋势图,通常是需要加上的 |
resultsperiod() |
用来指定figure画图的时间范围,默认是整个样本时期 |
nested |
使用嵌套的数值方法寻找最优的合成控制,会花更多时间,但更精确。在使用nested选项是,如果再加上allopt(即nested allopt),则比单独使用nested还要费时间,但精确度可能更高 |
keep(结果) |
把估计结果(合成控制的权重和结果变量)输出到”结果.dta”文件,以便后续计算 |
加州禁烟法案案例
以smoking.dta(加州禁烟法案)为例
- synth cigsale retprice lnincome age15to24 beer cigsale(1975) cigsale(1980) cigsale(1988),
- trunit(3) trperiod(1989) xperiod(1980(1)1988) figure nested allopt keep(结果)
复制代码
在没有使用合成控制法的时候加州和其他州的人均香烟消费量的时间趋势图
画处理效应的时间趋势图
安慰剂检验
Abadie et al. (2010)提出一种类似于统计学中的中秩检验(Rank Test)的排列检验(Permutation Test),叫做“安慰剂检验”。 “安慰剂”(placebo)一词来自医学上的随机实验,比如要检验某种新药的疗效。此时,可将参加实验的人群随机分为两组,其中一组为实验组,服用真药;而另一组为控制组,服用安慰剂(比如,无用的糖丸),并且不让参与者知道自己服用的究竟是真药还是安慰剂,以避免由于主观心理作用而影响实验效果,称为“安慰剂效应”(placebo effect)。
只保留干预前MSPE不超过处理地区干预前MSPE两倍的控制地区,如果干预前的拟合效果不理想,即使政策后期得到的较大的预测变量差值也不能反映政策的效果。(本例中是使用2倍以内,具体MSPE要筛选多少可以在代码中进行修改)本例中总共筛选了19个州
未筛选的代码中也有输出,这里就不展示了
包含两个处理组的案例(房产税试点)
示例数据
处理地区分别为上海和重庆
房产税政策开始时间为2011年
部分结果展示
重庆结果
上海结果
安慰剂检验
(只保留干预前MSPE不超过处理地区干预前MSPE两倍的控制地区,不包括其他干预组)
重庆
上海
附件内容