Stata:合成控制法 (Synthetic Control Method)操作及应用
The following article is from 数量经济学 Author 数量经济学
ssc install synth
synth depvar predictorvars , trunit(#) trperiod(#) ///
[counit(numlist) xperiod(numlist) mspeperiod() ///
resultsperiod() nested allopt unitnames(varname) ///
figure keep(file) customV(numlist) optsettings ]
depvar 表示结果变量(outcome variable)
predictorvars为预测变量(predictors)( the list of predictor variables)( By default, all predictor variables are averaged over the entire pre-intervention period, which ranges from the earliest time period available in the panel time variable specified in tsset timevar to the period immediately prior to the intervention specified in trperiod. Missing values are ignored in the averages.)
trunit(#)用于指定处理地区(trunit表示 treated unit)。trunit(#) the unit number of the unit affected by the intervention as given in the panel id variable specified in tsset panelvar(表示需要前期进行面板数据设定); see tsset. Notice that only a single unit number can be specified. If the intervention of interest affected several units the user may chose to combine these units first and then treat them as a single unit affected by the intervention.(表示一次只能一个地区受到影响,若是有多个地区受到影响,需要前期把其合成)
trperiod(#)用于指定政策干预开始的时期(trperiod表示 treated period)(the time period when the intervention occurred)。
counit(numlist)用于指定潜在的控制地区(即donor pool,其中counit表示 control units),默认为数据集中的除处理地区以外的所有地区。
xperiod(numlist)用于指定将预测变量(predictors)进行平均的期间,默认为政策干预开始之前的所有时期(theentire pre-intervention period)。
mspeperiod()用于指定最小化均方预测误差(MSPE)的时期,默认为政策干预开始之前的所有时期。
figure表示将处理地区与合成控制的结果变量画时间趋势图,而选择项“resultsperiod()”用于指定此图的时间范围(默认为整个样本期间)。
nested表示使用嵌套的数值方法寻找最优的合成控制(推荐使用此选项),这比默认方法更费时间,但可能更精确。在使用选择项“nested”时,如果再加上选择项“allopt”(即“nested allopt”),则比单独使用“nested”还要费时间,但精确度可能更高。
keep(filename)将估计结果(比如,合成控制的权重、结果变量)存为另一Stata数据集(filename.dta),以便进行后续计算。
replace 表示将keep(filename) 中的data若是存在可以对其进行替换
keep(filename)中的数据主要包括如下内容:
_time: 一个变量,包含resultsperiod()中指定的所有时间段的相应时间段(来自tsset面板时间变量(timevar))。
_Y_treated: 对于resultsperiod()中指定的每个时间段,tr()中指定的处理单元的观察结果depvar。
_Y_synthetic: 估计合成控制单元的估计结果
_Co_Number: 包含在co()中指定的每个控制单元的单元号(来自tsset面板单元变量(panelvar))的变量。
_W_weight:包含co()中指定的每个控制单元的估计单位权重的变量。
更多选择项,详见help synth。
sysuse synth_smoking
2、面板数据设定
xtset state year
查看数据结果截图:
相关数据含义如下:
该研究的结果变量为cigsale(人均香烟消费量,包/年)
预测变量包括retprice(平均香烟零售价格)、lnincome(人均收入对数)、age15to24(15-24岁人口所占总人口比重,年轻人为吸烟主力)、beer(人均啤酒消费量,烟酒不分家)。这些预测变量均为1980-1988年的州平均值,另外还使用1975、1980与1988年的人均香烟消费量作为三个额外的预测变量。另外,面板变量为 state(州),而时间变量为 year(年)。
3、合成控制法操作
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)
上述代码全部为: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(放在Stata的当前工作路径)。估计结果如下。
上表显示,大多数州的权重为0,只有以下五个州的权重为正,即Colorado (0.161),Connecticut (0.068),Montana (0.201),Nevada (0.235)与Utah (0.335),此结果与Abadie et al. (2010)汇报的结果非常接近(细微差别或由于计算误差)。
上表显示了合成中的每个控件状态的权重,表中报告的权重表明:加州的吸烟趋势在提案通过之前最好是由这Colorado 、Connecticut、Montana、Nevada 与Utah表示。其他状态的w权值为零。
考察加州与合成加州的预测变量是否接近:
在表1中,比较了实际的加利福尼亚和合成的加利福尼亚的预测变量均十分接近,故合成加州可以很好地复制加州的经济特征。
然后比较二者的人均香烟消费量在1989年前后的表现:
上图显示了加州和合成加州在1970-2000年期间的人均烟草销售额。注意,合成加州的人均销售量非常好的拟合追踪了加州整个99号提案前的变化趋势。
高程度的拟合表明,在1989年控烟法之前,合成加州的人均香烟消费与真实加州几乎如影相随,表明合成加州可以很好地作为加州如未控烟的反事实替身。在控烟法实施之后,加州与合成加州的人均香烟消费量即开始分岔,而且此效应越来越大。
我们估计第99号提案对香烟消费的影响分水岭是在99通过这个时间点,该法案一通过两条线开始明显地分开。
而香烟消费在合成加州继续其温和下降趋势来看,真正的加州经历了大幅下滑。这两条线之间的差异表明第99号提案对人均香烟销量的有很大的负面影响。
上图表明99号提案对人均香烟销量有很大影响,这种效应随着时间的推移而增强。我们的结果表明,对于整个1989-2000年期间的卷烟每包的消费量平均减少了近20包,人均下降约25%。
4、加州与合成加州差异对比
use 计量经济学服务中心smoking_synth.dta, clear
gen effect= _Y_treated - _Y_synthetic
label variable _time "year"
label variable effect "gap in per-capita cigarette sales (in packs)"
line effect _time, xline(1988,lp(dot) lc(black)) yline(0,lp(dash) lc(black)) ///
text(-25 1988 "Passage of Proposition 99 {&rarr} ", placement(sw)) /// placement() et a. options for text()
xtitle(year) ytitle("gap in per-capita cigarette sales (in packs)") lc(black) xlabel(1970(5)2000) ///
title("政策效应:加州与合成加州人均香烟销售量差异") ///
subtitle("2017.10.01") ///
note("计量经济学服务中心2017.10")
为了评估我们的结果的稳健性,我们使用了其他其他预测变量,包括各州的失业率,收入不平等,贫困,福利转移,犯罪率,毒品相关的逮捕率,香烟税,人口密度,以及种族等变量,发现结果都是稳健的。
为了评估我们的估计的显著性,我们提出:我们的结果是否是随机偶然的。如果我们随机选择一个州而不是加州来进行研究? 我们多久可以得到这样一个显著的结果,为了回答这个问题,我们使用安慰剂测试。
类似于 Abadie和Gardeazabal (2003), Bertrand, Duflo和Mullainathan (2004),我们使用合成药物进行安慰剂研究的方法,具体应用到香烟控制法案研究。
“安慰剂”(placebo)一词来自医学上的随机实验,比如要检验某种新药的疗效。此时,可将参加实验的人群随机分为两组,其中一组为实验组,服用真药;而另一组为控制组,服用安慰剂(比如,无用的糖丸),并且不让参与者知道自己服用的究竟是真药还是安慰剂,以避免由于主观心理作用而影响实验效果,称为“安慰剂效应”(placebo effect)。
为此,Abadie et al. (2010)进行了一系列的安慰剂检验,依次将donor pool中的每个州作为假想的处理地区(假设也在1988年通过控烟法),而将加州作为控制地区对待,然后使用合成控制法估计其“控烟效应”,也称为“安慰剂效应”。通过这一系列的安慰剂检验,即可得到安慰剂效应的分布,并将加州的处理效应与之对比。
在上图中,黑线表示加州的处理效应(即加州与合成加州的人均香烟消费之差),而灰线表示其他19个控制州的安慰剂效应(即这些州与其相应合成州的人均香烟消费之差)。显然,与其他州的安慰剂效应相比,加州的(负)处理效应显得特别大。假如加州的控烟法并无任何效应,则在这20个州中,碰巧看到加州的处理效应最大的概率仅为1/20 = 0.05,而这正好是常用的显著性水平。
政策实施前均方预测误差的平方根
tempname resmat
forvalues i = 1/4 {
synth cigsale retprice cigsale(1988) cigsale(1980) cigsale(1975) , trunit(`i') trperiod(1989) xperiod(1980(1)1988)
matrix `resmat' = nullmat(`resmat') \ e(RMSPE)
local names `"`names' `"`i'"'"'
}
mat colnames `resmat' = "RMSPE"
mat rownames `resmat' = `names'
matlist `resmat' , row("Treated Unit")
在学术圈如果是做应用计量(特别是横截面数据、面板数据),Stata是不二之选,因为不管是管理数据还是跑回归,实在太太太方便了。现在主流期刊的应用微观计量文章里面能用到的模型stata几乎都有,而且其中的绝大多数都是用stata做的!
Stata 与 SPSS、SAS 并称为当今三大统计软件。与后者相比,Stata 体积小巧、简单易懂且功能强大。Stata 把 EViews, SPSS 的傻瓜式菜单和 SAS 的命令、编程完美结合起来,所以它一推出就受到了初学者和高级用户的普遍欢迎。Stata 不仅在统计方面功能齐全,其在计量分析领域更是有着深刻影响,以至于有人一言以蔽之:“ 关于学习 Stata 的意义,大家只需知道:目前,Stata 是计量经济学,特别是微观计量经济学的主流软件。”
为了帮助大家全面系统的掌握stata,我们在一贯坚持高水平授课办会的基础上,特别打造“小班教学、理论与软件并重、精品课程解析”的课程培训亮点,现推出2021年高级计量及Stata应用研讨班!
课程特色及亮点
截至目前,计量经济学服务中心已经在西安、北京、上海、广州等地成功举办了15场stata高级班,并在深圳南方科技大学举办了一场stata编程研讨班。
1、零基础起步,初级+高级课程,涵盖数据管理+横截面+时间序列+面板数据+门限回归+倾向匹配得分+合成控制法+断点回归+双重差分+空间计量等专题,帮助你建立系统的计量体系
2、理论与软件并重,课程涵盖理论介绍、软件操作、案例应用、解释结果、讲解答疑等,手把手教你学Stata软件操作与分析
3、在原有4天班精彩内容基础上,这次5天高级班又增加了很多干货内容。
课程体系
Class 1. A Quick Tour of Stata
stata简介Why Stata?/what is stata
软件界面The Stata Interface/What Stata looks like
参考书籍推荐Textbooks
log工作日志和do文档What to do first?Set a working directory/Keeping track of things(Do-files and log-files )
命令以及帮助the command & Getting Help(包括help的使用以及ssc install 、findit等外部命令获取和使用)
Class 2. DATABASE MANIPULATION数据管理
导入导出 Import and Export
面板数据、时间数据、官方数据Time series data &Panel data & Example Datasets
变量以及数据Variable and data types/Indicator or data variables
数据管理Data management
排序Order, aorder, and move
变量标签Variable Labels and Notes
文字变量处理之数据类型转换Converting strings to numerics and vice versa(encode 、decode、 destring、 tostring 等)
数据横向合并和纵向合并Append and merge(merge,包括一对一、一对多、多对一等合并,append、cross、joinby等,)
数据生成Generating new variables
描述分析Describing the data (summarize)
基础命令Basic commands(table tabulate)
tabstat命令
Class 3. 经济金融数据库(国泰安数据库、中经网)使用技巧
Class 4. 相关分析Correlation analysis(
相关分析简介
相关命令corr、pwcorr、pwcorr_a等应用介绍
分析结果输出等
Class 5. 因果推断方法图解与概览
辛普森悖论
因果关系路径图
Rubin因果模型(Rubin Causal Model, RCM)
反事实因果分析框架
Class 6. 回归分析Estimation
线性回归模型估计方法OLS
回归估计标准流程应用
估计系数统计推断
假设检验(多重共线性、自相关、异方差等)
Stata与Word、Excel结合的估计结果输出等
Class 7. 时间序列
平稳性检验
协整检验
格兰杰检验
课程总结以及论文讲解
Class 8. 因果推断--内生性问题及工具变量
内生性来源及简介等
工具变量法及stata应用
GMM简介
内生性检验(OLS与IV检验选择,过度识别检验等)
Class 9. 面板数据分析方法
面板数据描述性分析
随机效应模型操作及结果解释
固定效应模型操作及结果解释
Hausman检验
Class 10. 动态面板数据
一阶差分GMM估计
序列相关检验
过度识别检验等
Class 11. 门限回归
包括横截面与面板模型的门限回归,主讲xthreg、xtthres、threshold等命令,并与Eviews软件对比,让大家对门限回归有一个全面的了解。
门限回归理论介绍
门限回归操作流程图
门限回归操作以及结果解释等
论文讲解以及课程总结
Class 12. 倾向匹配得分
倾向匹配得分简介、为何使用 PSM ?
传统的配对方法、配对过程中的两个核心问题/假设
匹配方法、优缺点
倾向匹配得分建模流程图
PSM操作命令及其具体应用
论文讲解
课程总结
Class 13. 合成控制法
合成控制法背景及简介
数据来源及样本介绍
结果
合成控制法及Stata操作应用
论文讲解及实操
Class 14. 双重差分
Class 15. 断点回归
断点回归原理
精确断点回归
模糊断点回归
断点回归及Stata操作
Class 16. 结果输出
Post summary statistics(summarize、tabstat)
Post correlation coefficients (pwcorr、correlate、logout )
Coefficients/equations
Basic syntax and usage
estout、esttab、estadd and other useful Stata commands
Standard errors, p-values, and summary statistics
Other Advanced Examples(esttab、outreg2、logout等)
Class 17. 空间计量经济学模型(横截面空间计量模型与面板空间模型,包括空间自相关检验、空间效应检验、SAR、SEM模型以及空间面板随机与固定效应检验等)
空间计量发展概述
空间回归模型动因
空间效应
空间权重矩阵
空间相关性度量
空间计量模型简介、流程图、识别检验、判别准则等
横截面空间计量模型及stata应用
面板空间计量模型及stata应用(面板固定效应与随机效应等检验)
学习优势
1、重软件操作、重实战是课程一直以来的优势与好评。控制人数的小班教学以确保每一位学员真正学到操作技能。
2、理论与软件并重,手把手教学,零基础起步,小白也能学会的Stata研讨班!
3、重要的事情说三遍,我们课程手把手带大家操作学习,并提供完整do文档以及数据、讲义、资料书等,手把手教学和操作学习!
学习礼包
1,课程互动以及微信群等答疑;
2,学术学习资料大礼包一份;
3,课后赠送三个配套精品课程视频:《零基础学空间计量:空间计量及Geoda、stata应用》+初级班视频《Stata从入门到进阶;初级计量经济学》+高级班视频《高级计量经济学及Stata应用:Stata回归分析与应用》,全网累计1000人订阅,价值1000元;
4,后续免费参加一次相同课程远程班
立体化服务体系
立体化的服务体系,真正保障学有所成!
1、系统化的知识体系。15场线上+线下班成功举办的经验积累,知识点精细,学习成长路径更放心;
2、在线直播。授课以直播形式,能够及时答疑,互动性更强,感受线下课堂学习氛围
3、课后答疑。有学习上的疑问,可与老师1对1沟通解答。
4、零基础起步,理论与软件并重,手把手教学,小白也能学会的计量班。
5、免费领取课程讲义,数据,do文档和参考文献pdf;
6、免费领取课程赠送视频及全套资料(do文档以及数据、讲义、资料书等)
7、免费邮寄课程配套纸质资料书。
课程详情
课程形式:远程在线直播,实时互动,一共5天
开课时间:2021年1月16日-1月20日(五天)
参会人数:限额60人,报名成功与否以实际付款为准,不接受口头报名。
价格:原价5000元,现在报名享受早鸟价,只需要4000元 /3600元 (学生价,仅限全日制本科生和硕士在读);
授课形式:老师讲授指导、学员操作练习、线上答疑解惑。
课程资料:提供PPT、课程讲义以及完整的do文档等。
优惠信息
缴费成功后都享受如下优惠
1.同一单位3人及以上报名,9折优惠;
2.同一单位5人及以上报名,8折优惠
3、以上优惠不叠加
学习目标
1、掌握计量经济学及Stata操作,能够运用Stata完成复杂的数据处理工作,并熟练运用Stata完成写作;
2、了解常用模型的思路、原理和建模方法,从源头数据库等数据下载、搜集、整理、管理,到stata数据操作,提高实证分析水平;
3、学完本课程,你将可以更轻松的读懂期刊上论文,并帮助你根据相关计量模型和方法,独立完成计量经济学模型建模以及实证分析!
学习对象
经济及社科类青年教师、博士生、硕士生、高年级本科生。(1 Stata爱好学习者。2 经济管理以及人文社科领域人员、各类市场调查公司、咨询公司、互联网公司和科研机构需要进行数据处理的人士。)
报名流程
报名流程
1、电话咨询,给予反馈,确认报名信息。
2、交费(微信、支付宝或者对公转账等),报名前请确认信息。
3、开课前发送培训通知以及软件准备,电子版预习资料等。
4、开课后领取发票及邀请函。
网络付款:扫描下方二维码立即报名哦
▲扫码报名并查看课程详情
注意事项
1、即日起接受报名,具体报名截止日期根据实际招生而定,人员招满将关闭报名通道。
在线咨询:
王老师
电话:18710973211
电话:18729083980
微信:Xindream1992
扫码添加微信