Angela镇楼,尽管是奔着CAROLE & TUESDAY去的,谁能想到被Angela圈了粉~ Angela的ED《not afraid》很好听。 Angela和Tao,意难平。 ![]() 由于最近过于沉迷楠神的《政策信息学》, so 鸽了好久欸(理直气壮.JPG) 我们来完整操作一遍吧。 PSM-DID,本质就是先利用PSM的手段进行分组,再利用DID计算政策效应。 outline一、变量介绍及基础准备 二、计算p-score
三、匹配前后的平衡情况
四、双重差分 ![]() 一、变量介绍及基础准备因变量:政策实施可能带来的影响Y。 实验处理效应:是否实施某项政策(要求treatment effect严格外生,不存在内生性问题)。 匹配变量(协变量):使用尽可能多的协变量可以最大程度的满足“可忽略假设” 这里面可以认为实验处理效应D是一个格外关注的自变量,协变量Xi是控制变量。因此,对于Y和D的选择要直接相关,譬如说处理效应是“职业培训”,那么Y应该是工资;处理效应是“河长制”的建立,那么Y应该是河流治理水平;处理效应是“新药”,那么Y应该是寿命或者其他健康指标。 同样重要的是协变量的选取,有两大准则,首先当然和treatment effects垂直独立,其次是要在已有文献中研究能够对Y有影响的变量,譬如说
此外,协变量的选取也应该符合一般线性回归,不存在多重共线性,不存在内生性等问题。 第一步 安装程序 安装psmatch2,pscore diff 等程序 * Download and install Stata ado files for psmatch2、diff 【ssc install psmatch2, replace 第二步 变量定义 对自变量、因变量、treatment variable进行定义,如 * Define treatment, outcome, and independent variables global treatment treatment 这里面【breps】表示bootstrap抽样次数,一般200应该差不多。 ![]() *Define panel data variable encode city , gen(city2) ![]() 二、计算p-score之前的时候,小白上传的Ani Katchova老师的视频 里面的【pscore】程序,可以直接计算pscore
第一种 pscore程序* Propensity score matching with common support 这个程序会比陈强老师书里面提到的psmatch2可以输出更为详细的匹配得分计算细节 第一张表告知实验组和控制组的频次等基本情况 ![]() 第二张表显示倾向得分计算情况,不过看样子默认是用probit reg,我们待会用logit计算看看 ![]() 紧接着的note告诉我们common support的范围。 ![]() common support中的p-score的描述情况,包括百分位数,样本数,均值,峰度等等 ![]() 这个还有一个显著的优势就是“分区块”,保证区块内的实验组和对照组的pscore不存在统计学差异 ![]() 紧接着的就是平衡性检验,如果平衡性检验通过了,就是黑色的字体告诉你“satisfied”,如果不满足就会是红色的warning字体,告诉你“unsatisfied” ![]() 如果遇到unsatisfied的情况,会告诉你是因为你选择的那个协变量导致common support过低,平衡性检验不通过,这时候我的建议是删除这个协变量。 回到data视图,可以看见新增了三个变量 ![]() 第二步 进行匹配 ①匹配方法选择 在实际进行匹配中,究竟应使用哪种具体方法或参数(比如k临近匹配的k取值,是否放回,如何处理并列),目前文献中尚未明确指明。一般认为,根据具体数据来选择具体方法。比如控制组个体不多,则应该进行有放回的匹配,如果存在较多具有可比性的控制组个体,则考虑一对多或核匹配,以提高匹配效率。在实践中,一般建议尝试不同的匹配方法,然后比较其结果(类似于敏感性分析);如果不同方法的结果相似,说明结果是稳健的,不依赖于具体方法,如果差异较大,则需要考察具体出现的原因。 我们看其他学者的做法,也是直接汇报采用了哪一种匹配方法
所以说,大家都没有说明为什么选这个方法。。。。 所以比较tricky的做法就是,把所有匹配方法都做一下,哪个效果最好汇报哪一个咯~ ![]() 程序见下 * Nearest neighbor matching ![]() * Radius matching ![]() * Kernel Matching kernel matching运行起来好慢好慢好慢好慢好慢啊 * Stratification Matching ![]() 第二种 psmatch2程序psmatch2可以直接选择匹配的方法。程序的介绍详见陈强老师P545页。 需要注意的是,
采用不同的匹配方法 * Matching methods * K neighbor matching K临近匹配 psmatch2 treatment $xlist, neighbor(1) logit out(score) ![]() 会输出很多新的变量 ![]() 如果我们选择【psmatch2 treatment $xlist, neighbor(1) logit ate common out(score)】 会多输出ATU ATE以及_score -n1等值 ![]() ![]() * Radius matching psmatch2 treatment $xlist, radius logit * Kernel Matching psmatch2 treatment $xlist, kernel logit 欸,用psmatch2的kernel匹配比pscore程序快很多欸 ![]() 第三种 nnmatch程序一些学者还喜欢借鉴Abadie et al.(2004)的研究,采用“k 近邻匹配”(k=4)方法;匹配时不允许并列,当存在倾向得分相同的并列个体, 按照数据排序选择;并选择作为匹配的特征变量。 记得安装一下nnmatch ![]() *Abadie et al.(2004)的程序 nnmatch score treatment $xlist, tc(att) m(4) bias(bias) 这个程序运行起来会比较慢。bias可以不用。 ![]() 小白自己的结果见下。 ![]() 三、匹配前后的平衡情况在进行PSM-DID 估计前,还需进行模型有效性检验。其中首先需要检验匹配后各变量实验组和控制组是否变得平衡, 也就是说实验组和控制组协变量的均值在匹配后是否具有显著差异。如果不存在显著差异,则支持使用PSM-DID 方法。 H0:实验组与控制组协变量之间无显著差异。 第一种 psmatch2后估计刚才的psmatch2还有一个优点就是,自带两个“估计后命令”(post-estimation commands),分别用来检验匹配后数据是否平衡,以及画图显示倾向得分的共同取值范围。 输入 【pstest $xlist, both graph】 会输出两张表,第一张介绍匹配前后不同维度的协变量的t检验。结果非常理想。 Ideally, after the matching procedure, the absolute standardized difference of covariate means should be less than 5%, and the t-statistic should no longer be significant (D’Agostino 1998; Haviland, Nagin, and Rosenbaum 2007). 可以看见,match以后,所有的协变量T检验都不显著了。 ![]() ![]() 其次就是输出匹配前后的对比图 ![]() 重点看匹配以后的值是否接近0,一般只要小于10%就可以接受。 ![]() 另外一个post-estimation command 是直方图 输入【psgraph, bin(20)】 这个图有点奇怪,没有区分on support和off support。没有查到原因, ![]() 要不然正常情况下输出应该是这样的 ![]() 第二种 绘制匹配前的密度函数图第一步,绘制匹配前的密度函数图 *-(a)before matching: 匹配前的密度函数图 twoway (kdensity _ps if treatment==1,lp(solid) lw(*2.5)) /// (kdensity _ps if treatment==0,lp(dash) lw(*2.5)), /// ytitle("核密度") /// ylabel(,angle(0)) /// xtitle("倾向得分值") /// xscale(titlegap(2)) /// xlabel(0(0.2)0.8, format(%2.1f)) /// legend(label(1 "实验组") label(2 "控制组") row(2) /// position(12) ring(0)) /// scheme(s1mono) graph export "01.wmf", replace fontface("Times New Roman") 效果图见下: ![]() 第二步,绘制匹配后的倾向得分图 采用psmatch2计算匹配后的p-score psmatch2 t $xlist, neighbor(1) logit out(score) *-(b)after matching: 匹配后的密度函数图 twoway (kdensity _ps if treatment==1,lp(solid) lw(*2.5)) /// (kdensity _ps if treatment==0&_wei!=.,lp(dash) lw(*2.5)), /// ytitle("核密度") ylabel(,angle(0)) /// xtitle("倾向得分值") xscale(titlegap(2)) /// xlabel(0(0.2)0.8, format(%2.1f)) /// legend(label(1 "实验组") label(2 "控制组") row(2) /// position(12) ring(0)) /// scheme(s1mono) graph export "02.wmf", replace fontface("Times New Roman") 效果图见下: ![]() 在匹配后实验组和控制组倾向得分值的概率密度已经比较接近,说明匹配效果较好。因此,在共同支撑假设基础上进一步证明了PSM-DID方法的可行性和合理性。 第三种 diff里面的test support*检验匹配后各变量实验组和控制组是否变得平衡 diff score,t($treatment) p(t_2012) kernel id(city2) logit cov($xlist) test support 判断匹配过程的有效性主要可以从匹配前后的t 统计量的变化、匹配前后标准偏差的变化两个方面来看:①从t 统计量的变化中可以发现,特征变量在匹配之后均不再具有显著差异【红色方框显示】。从各协变量的检验结果看,匹配后所有变量均不存在显著性差异,而结果变量score存在十分显著的差异,从而证明使用PSM-DID 方法是合理的。 ![]() ②匹配后标准偏差的绝对值越小,说明匹配的效果越好;Rosenbaum and Rubin(1985)认为若匹配后标准偏差的绝对值能够小于20%,则匹配处理是有效的。根据匹配过程中处理组与对照组的平衡性检验结果,差不多20%,还差一点点理想。 【diff score,t($treatment) p(t_2012) kernel id(city2) logit cov($xlist) report support】 ![]() 上面这个表格还可以进一步整理成为类似下面的表格 ![]() 四、双重差分一、没有匹配的普通差分
倍差法(Difference-in-Differences)不要求假设实验组和控制组样本在实验前同质,它是在假设实验组和控制组前后变化趋势相同的情况下,通过两次差分来计算实验处理效应对实验组的平均处理效应ATT(Blundell R. and Dias M. C.,2002)。但是采用倍差法的假设是遵循“共同趋势”假设,否则参数估计结果会有偏差(Heckman et al.,1998)。 尽管刚才我们提到了【diff】,但我们还是follow Jiahuan Lu(2015)等学者的做法,手工计算。
写出DID的回归方程 Y= β0+β1Treatment + β2Policy+ β3Treatment *Policy+εit 其中policy表示政策效果,为政策效果虚拟变量,实施某政策前为0,实施后为1。 汇报表格也和Jiahuan Lu(2015)一样,首先汇报DID结果 程序【xtreg $ylist t_2012 treatment jh $xlist,re r】 其中,t_2012是上面的政策效果虚拟变量,2012年及以前为0,2012年以后为1 jh为政策效果虚拟变量和实验效果的交互项。 交互项显著表示政策效果有效。 ![]() 二、匹配以后的差分 我们采用一对一无放回邻匹配 程序 【psmatch2 treatment $xlist, neighbor(1) logit ate common out(score) noreplacement】 ![]() 结果会多出来几个变量,其中比较重要的是生产了新的对照组 ![]() PSM-DID是指基于PSM结果进行的DID。 所以DID的程序是一样的,只不过变量改变了。 生成新的交互项 gen newjh=_treated*t_2012 再跑一遍DID xtreg $ylist t_2012 _treated newjh $xlist,re r, if _support==1 ![]() 一般而言不会再去汇报普通DID的结果了,直接汇报PSM-DID结果。和刚才的普通DID相比,样本量显著的降低了。但是交互项的显著性还是不变的。 完结撒花✿✿ヽ(°▽°)ノ✿ 关于PSM-DID我还是一知半解,如果有比较了解的大佬,还望帮忙挑出毛病和指导一下~~参考文献田利辉,王可第.社会责任信息披露的“掩饰效应”和上市公司崩盘风险——来自中国股票市场的DID-PSM分析[J].管理世界,2017(11):146-157. 李贲,吴利华.开发区设立与企业成长:异质性与机制研究[J].中国工业经济,2018(04):79-97. Lu J. The performance of performance-based contracting in human services: a quasi-experiment[J]. Journal of Public Administration Research and Theory, 2015, 26(2): 277-293. 石大千,丁海,卫平,刘建江.智慧城市建设能否降低环境污染[J].中国工业经济,2018(06):117-135. Urban C, Niebler S. Dollars on the Sidewalk: Should US Presidential Candidates Advertise in Uncontested States?[J]. American Journal of Political Science, 2014, 58(2): 322-336. 何文盛,姜雅婷,唐序康.行政审批制度改革可以提升地方政府绩效吗?——基于中国15个副省级城市2001—2015年面板数据的分析[J].公共行政评论,2019,12(03):118-138+192-193. 徐志刚,宁可,钟甫宁,纪月清.新农保与农地转出:制度性养老能替代土地养老吗?——基于家庭人口结构和流动性约束的视角[J].管理世界,2018,34(05):86-97+180. ![]() 彩蛋先获得每年的处理组和对照组样本,如果使用的是“渐进式”DID 方法,需要将样本按照进入年份逐年进行匹配。 我前几天无所事事查文献的时候,看见了Gary King 18年的这篇《Why Propensity Scores Should Not Be Used for Matching》,还是比较新。虽然看见Gary king我就想起他提出的半监督学习的Readme程序bug过多,害我花了很久时间都没有搞出来(记小本本),但是我还是仔细拜读了一下。总体和我们这篇操作是唱反调的,p-score不适用匹配。 感悟其实刚开始接触PSM-DID的时候走了很多很多很多很多弯路啊。这篇专栏一度流产。知道论文的ddl来了。。我果然还是ddl驱动的。 最大的感悟就是,JPART不愧是我最爱的期刊。 真的,管理世界和JPART这两个期刊对学方法的人来说简直太友好了,每一个步骤都讲得很详细,AJPS经管“数据公开”,可是经常复制不出来文章中的结果,很多书里面的都是理论,没有操作细节。JPART就好圈粉。detailedly&systemly。 尤其是Jiahuan Lu(2015)的这篇文章太令我感动了,比较少人在跑回归前还检验异方差并校正,都是直接用个robust或者普通ols。说好的跑ols要满足高斯马尔科夫定理,但是很少人遵守。感动。T^T 我一定要强迫我们南霸天老师也看!!!! 吃我安利!!!!!!! ![]() ![]() Angela结尾。 ![]() |
|
来自: 晶晶晶晶323 > 《双重差分(DID)》