学生风采

当前位置: 首页 >> 学生风采 >> 正文
【“微观计量工作坊”第5期 】匹配及其stata实操
2018年01月08日    编辑:    浏览量:    


11月29日,中国财政发展协同创新中心微观计量工作坊第二讲在沙河校区骋望楼一楼圆桌会议室举行,中心2016级和2017级研究生全部参加。在讲解的过程中,同学们认真听讲并积极互动,并且展开了热烈的讨论,16级的研究生也进行了精彩的补充讲解。

本期主讲人为中国财政发展协同创新中心2017级研究生张磊、巴杨。

鉴于上节工作坊已经对匹配的概念和基本逻辑进行了讲解,本讲将从主要通过三个方面讲述了匹配:为什么需要匹配,匹配的优点是什么?匹配有哪几种具体的形式?以及匹配具体的stata操作是怎样的?

(一)匹配的优点

    匹配法基于经济学实证研究中推断因果联系的需要而产生,其基本思想是通过匹配对非随机观测数据进行统计推断,获得缺失观测单位位于反事实处置状态下的数据以产生平衡样本,从而解决因果推断的基础性问题,最后得到反映处置变量对结果变量的因果影响大小的估计值。

匹配的基本思路是使用截面数据(如果是面板数据,则同一个个体不同年份的样本等价于不同的样本个体)将样本个体分为实验组和控制组,分别代表接受处理和未接受处理的情形,最关注两个估计量ATE&ATT。假设个体i属于处理组,找到属于控制组的某个体j,使得个体j与个体i的可测变量尽可能相似(匹配),即Xi≈Xj。

通常,我们在研究某项处置的作用时,只能观察到差异E[Yi |Di= 1]-E [Yi|Di= 0],而差异产生的原因却不仅仅因为是处置作用E [Y1i -Y0i|Di= 1],选择偏误{E [Y0i|Di = 1]-E [Y0i|Di= 0]}也进入了公式。也就是说,控制组和实验组的其他差异是产生结果的差异的一个重要原因,公式可以表达为:

E [Yi |Di=1]-E [Yi|Di= 0]=E [Y1i -Y0i|Di=1]+{E [Y0i|Di = 1]-E [Y0i|Di = 0]}

即差异等于处置的平均效果加选择偏误。在CIA(条件独立假设)的条件下,选择偏误在控制Xi之后消除,对处置的影响可以通过对Xi的迭代期望来构建:

βTOT=E [Y1i -Y0i|Di= 1]

= E{E [Y1i |Di=1,Xi]-E [Y0i|Di= 1,Xi]|Di=1}

当然,E [Y0i|Di=1,Xi]是反事实,根据CIA的性质,可以得到

E [Y0i|Di=1,Xi]=E [Y0i|Di= 0,Xi]

因此,

βTOT=E{E [Y1i |Di= 1,Xi]-E [Y0i|Di=0,Xi]|Di= 1}

也就是说,匹配是在尽力得去寻找反事实的对比对照个体并进行对比,然而在选择对比对照个体时,不可避免的会产生选择偏误。Heckman等人提出(1998)展示出选择性偏差B可以被分解为三个子偏差BA弱重叠;BB弱平衡;BC存在不可观测的因素(可以通过证明得到,在这里不做赘述)。可以表达为下式:

B=BA+BB+BC

BA为弱重叠,这意味着有有一些个体的根据控制变量算出的概率经过处理和未处理人群的没有重合,因此他们是不能匹配的。BB为弱平衡,尽管两群人重合了,可以进行匹配,但是在随机分布中,处理和未处理组中的协变量X并不来自于相同的分布,这可能导致一定的偏差。BC的产生归结于不可观测的选择的存在。

其中,匹配能够解决BA和BB问题,却不能解决BC

满足重叠假设要求有尽可能多的共同支撑域(common support)。如果一个体可以在对比对照组中可以匹配得到与它进行对比对照的个体,那么我们就可以说这个个体在共同支撑域内。对于x的任何可能取值,都有0< p(x) <1,其中p(x)是我们通过协变量计算出来的一个概率,如果p(x)=0则说明此个体以百分之百的概率进入控制组,这样我们无法寻找它的对比对照的个体,因此p(x)不可能为0,同理p(x)不能为1。此假定意味着处理组与控制组这两个子样本存在重叠。

简单来说,满足平衡假设是指控制组和实验组概率分布是大致相同的。如下图所示,在实施匹配之前,实验组和控制组的概率分布存在较大的差异,但是实施匹配之后,实验组和控制组的概率分布差异明显变得平缓了。虽然在典型情况下,重叠会帮助平衡,但在普通的数据集中我们偶尔也会发现,当协变量重叠得很好时伴有很强不平衡的情况。

(二)匹配的具体的形式分类


是否对协变量进行降维

普通匹配

倾向匹配得分

是否最多与一个对照个体进行匹配

非贪婪匹配

贪婪匹配

是否放回

不放回匹配

放回匹配

是否有顺序

无顺序匹配

顺序匹配

 

(1)倾向匹配得分

(2)贪婪匹配

贪婪匹配greedymatching是指如果一个控制组个体最多只有一个处理组个体进行匹配。 如果比较组仅由每个处理个体的一个最近的控制,则我们有成对匹配(一对一匹配)。如果比较组中允许有多个控制,那么我们有'与多个控制匹配'或多个匹配。如果每个处理个体与至少一个控制组个体匹配,每个控制组个体至少与一个处理组个体匹配,那么我们有完全匹配。但是,也有可能一个处理组个体与多个处理组个体进行匹配; 如果一个控制组个体最多只有一个处理组个体进行匹配(为了简化随后的统计分析),那么我们就贪婪地进行匹配。非贪婪匹配与之相反。

匹配可以按顺序进行,也可以不按顺序进行。在计算方便的非贪婪顺序匹配中,每个单元都被逐一考虑。一旦被匹配(或通过),则从其他剩余的处置对象的进一步匹配的考虑被移除并且对照储库保持相同。在贪婪的顺序匹配中,匹配处理的控制也从进一步的匹配考虑中去除,并且控制库随着匹配的进行而缩小。与此相关的一个问题是,与被处置的i相匹配的对照可能对治疗的i更重要,这将很难找到匹配的对照。这显然不如贪婪的非顺序匹配,所有对照和处置对象都一起考虑。然而,实现非顺序匹配更困难,因为考虑所有可能的配对在计算上是繁重的。在文献中,有时顺序匹配被称为贪婪匹配。 

(3)例子

通过讲述一个例子来讲述匹配的具体形式。以韩国女性的职业培训为例,研究职业培训对找工作的影响。其中,如图所示在匹配之前,控制组和实验组的控制变量相差较大,而匹配后的t值明显减少,同时非贪婪匹配的t值更小,非贪婪匹配略胜于贪婪匹配。以年龄为例,在匹配之前,控制组与实验组之间差异的t值为-76.8,而贪婪匹配后t值变为-6.1,非贪婪匹配后t值变为了-2.9,这说明匹配后t值明显减小,匹配有平衡数据的作用。

        如图所示,Multi-NG指非贪婪的多对匹配,Pair-NG指非贪婪的成对匹配,Pair-G指贪婪的成对匹配。而h指距离h-距离内的所有控制变量可以被选择用于多对匹配,而只有最近的被选择用于成对匹配。如果在h距离内没有控制变量,则处理的对象被传递。

具体看处置效果发现在四种匹配中,处置效果有所不同。Multi-NG没有t值,因为没有可用的公式来计算标准误差。从edu(受教育)和exr(工作经验)的绝对差值来看,h =∞的Pair-G是最差的,但其他三种匹配方案难以确定好坏。当我们使用没有绝对值的标准时,Pair-NG是最好的,并且h =∞的Pair-G匹配是最差的。就所用处理单位的百分比而言,h =∞的Pair-G匹配使用最多。

很难说哪个是最好的匹配方案,或者说不能说哪个是最好的匹配方案。但在本例中Pair-NG似乎是首选,因为(i)当h= 1时Pair-NG用到的实验组个体比例为73.4%,相对而言,许多实验组个体被用到了,即包含了尽可能多的数据( ii)两组之间的协变量差异相当小,以及(iii)有一个t值的实际公式。

 

(三)匹配具体的stata操作

在stata运用中,匹配运用最广泛的命令是psmatch2。具体如下:

psmatch2  depvar [indepvars] [if exp] [in range][,outcome(varlist) pscore(varname) neighbor(integer) radius caliper(real)mahalanobis(varlist) ai(integer) population altvariance kernel llrkerneltype(type) bwidth(real) spline nknots(integer) common trim(real)noreplacement descending odds index logit ties quietly w(matrix) ate]

        其中,depvar指处理变量,indepvars为协变量,outcome(varlist)指因变量pscore(varname),用来指定某变量作为倾向得分,默认用所有的控制变量来估计倾向得分,neighbor(integer) 表示进行k近邻匹配,默认k=1,即一对一匹配,radius 半径匹配,caliper(real)用来指定卡尺,mahalanobis(varlist) 马氏匹配,kernel   commo仅对共同取值范围内的个体进行匹配,noreplacement为无放回匹配,默认为有放回匹配。

以就业培训对工资的影响为例。其中Treat为是否有参与培训,Age指年龄,educ指受教育年限,hisp 指是否为西班牙人 ,marr 指是否结婚,Re78指 1978年实际工资。

具体操作如下:

*随机排序

setseed 10101

genranorder=runiform()

sortranorder

*最邻近匹配、半径匹配、核匹配

psmatch2treat age educ hisp marr,outcome(re78) n(1) ate ties logit common

psmatch2treat age educ hisp marr,outcome(re78) radius ate ties logit common

psmatch2treat age educ hisp marr,outcome(re78) kernel ate ties logit common

*不放回的最邻近匹配

psmatch2treat age educ hisp marr,outcome(re78) noreplacement ties logit common ate

*pstest考察匹配结果是否较好的平衡了数据

pstest  age educ hisp marr,both graph

*psgraph显示倾向得分的共同取值范围

 psgraph

*平衡数据

twoway(kdensity _ps if _treat==1, legend(label(1 "Treat")))  (kdensity _ps if _treat==0, legend(label(2"Control"))),xtitle(Pscore) title("Before Matching")

twoway(kdensity _ps if _treat==1, legend(label(1 "Treat"))) (kdensity _psif (_wei!=1&_wei!=.), legend(label(2 "Control"))),xtitle("Pscore") title("After Matching")


作者信息:

巴杨 中国财政发展协同创新中心2017级硕士研究生

邮箱 bayang1535@126.com

张磊 中国财政发展协同创新中心2017级硕士研究生

邮箱 leizh22@163.com


编辑:张鹏远

责编:姚广