从匹配到回归:精确匹配、模糊匹配和PSM
作者: 徐云娇 (厦门大学)
邮箱: jilyo@stu.xmu.edu.cn
目录
1. 从回归到匹配
1.1 控制变量
1.2 匹配
1.3 二者异同
2. 精确匹配
2.1 性别、年龄等精确匹配
2.2 近邻匹配+离散变量精确匹配
3. 模糊匹配
3.1 Dale & Krueger (2002)
3.2 PSM
4. 参考文献
Angrist & Pischke (2014) 总结了计量经济学研究的 “盖世五侠” (Furious Five) ——随机实验、回归、工具变量、断点回归设计和双重差分。也许你会奇怪,难道匹配 (matching) 不配拥有姓名吗?其实,匹配已经包含在回归中,它的本质思想就是回归,只要搞懂了回归,众多高大上的匹配方法便也不在话下。
1. 从回归到匹配
在学习匹配之前,我们必须要对回归的基本思想进行回顾,并且需要弄明白我们在回归方程中加入控制变量的目的是什么,它们起到了怎样的作用。
1.1 控制变量
当讨论私立大学教育是否对个人未来收入有所影响时,可以建立的回归模型如下:
是模型的控制变量 (control variable),譬如学生的高中成绩、父母的收入等。我们将这些变量纳入模型的目的是消除模型的混杂偏差 (confounding bias),举例来说,父母的收入往往同时影响孩子大学的选择和未来的收入,即父母收入是学校选择和个人收入的一个混杂因素 (confounder)。用因果图表示如下:
上图显示, 是 和 的共同原因 (common cause),所以 与 之间有两条路径:一条为 ,也称因果路径 (causal path);另一条为 ,也称后门路径 (backdoor path)。因而, 到 的相关性包含了两部分,一部分是真正的因果关系造成的相关性,另一部分是由于混杂因素 造成的相关性 (赵西亮,2017)。
为了得到真正的私立大学教育 () 对个人未来收入 () 的影响,我们需要想办法将后门路径造成的相关性阻断。在回归模型中引入 作为控制变量,便可以阻断后门路径产生的相关性,使得回归系数 () 表现出的相关性只剩下因果路径的相关性。用因果图可以表示为:
总结以上,控制变量 的引入,消除了混杂偏差,使回归系数具有因果效应的解释。
1.2 匹配
匹配的思想是,对于干预组 (私立大学) 个体,在控制组 (公立大学) 中寻找特征相似的个体与其相匹配,从而用控制组个体的结果来估计干预组个体的反事实结果,进而分离出处理变量的因果效应。这其实非常类似于在简单回归模型中引入控制变量。
试想假如我们不做任何处理,仅仅比较不同类型学校的学生间收入差距,必然会得出私立大学的学生们收入奇高的结论。但稍加思考,我们就会发现收入上的差距可能是由于进入精英大学的学生本身能力就很强造成的,这并不能揭示哈佛大学学位所带来的收益。
那么我们就需要保证学生自身能力、家庭背景等这些因素不变,去比较各方面都十分相似的学生就读于不同大学所带来的收入差距,这才是真正反映出精英私立大学教育回报率。
明白了匹配的基本思想之后,接下来的问题就是如何进行匹配。不难发现除了高中成绩、家庭收入、性别等因素之外,还有许许多多因素影响着学生的未来收入,比如个人的勤奋程度、写作能力等等,将那么多广泛的因素进行控制是件十分困难的事情——此类可能性几乎无穷无尽,并且还存在不可观测的因素。但是,Dale & Krueger (2002) 给出了一种聪明且令人信服的匹配方法,文章后面会进行介绍。即使我们找不到这么 “开脑洞” 的方案,倾向得分匹配 (PSM) 方法也可以助我们一臂之力。
1.3 二者异同
相同点
匹配方法和回归方法要识别因果效应都要求非混杂性条件成立,即在以控制变量为条件后,潜在结果独立于干预分配。
总体回归系数 () 与匹配估计测度 () 均是用特征为 的子样本作简单回归得到的回归系数 () 的加权。
不同点
总体回归系数与匹配估计测度给 赋予的权重是不同的,回归系数会对那些层内两组个体数目相同的层赋予更大的权重,而匹配估计测度会对那些层内干预组个体更多,即倾向得分更大的层赋予更大的权重。具体来说 (赵西亮,2017):
回归系数回归时会丢弃那些仅有一组个体的层,而研究者往往不知道丢弃了哪些层;匹配测度的好处在于匹配时很清楚哪些样本进入了匹配,哪些样本被丢弃了。
2. 精确匹配
2.1 性别、年龄等精确匹配
Stata 中有诸多方法可以帮助我们实现性别、年龄等「离散变量」之间的精确匹配,这里主要介绍 ccmatch
和 vmatch
命令,使用之前均需要通过 ssc install
命令进行安装。
2.1.1 ccmatch
命令语法
ccmatch
是进行简单精确匹配的最佳选择,优点是其语法结构易于理解,上手极快;缺点是自由度不高,适用的场景比较单一。
ccmatch
的语法结构是:
ccmatch variable_list, cc() id()
variable_list
为进行精确匹配的变量,比如性别、年龄等;cc(var)
为区别干预组与控制组;id(var)
为给每个观测值赋予身份识别。
Stata 实例
下面用 Stata 自带的美国妇女 1988 年工资数据进行演示:
sysuse nlsw88, clear
drop if union == .
rsort, seed(135) id(idcode)
keep in 1/200
gen id123 = _n
local mx 'age race collgrad married industry'
local treat 'union'
keep id123 `mx' `treat' hours wage
ccmatch `mx', cc(`treat') id(id123) //按照年龄、种族、是否上大学、婚姻状况以及所属行业进行精确匹配
keep if match!=. //保留有匹配的观测值
gsort match -union //按照配对数升序、工会与否降序排列
list, sepby(match)
运行结果表明,在 200 个观测数据中,完成了 17 对 1:1 的精确匹配,也就是 17 位工会妇女找到了与之情况十分相似的非工会妇女作为匹配对象,最后共有 34 个观测数据被保留。
+-------------------------------------------------------+ 1. | age | race | married | collgrad | | 34 | white | single | not college grad | |-------------------------------------------------------| | industry | union | wage | id123 | | Transport/Comm/Utility | union | 14.51691 | 119 | |-------------------------+-----------------------------| | match | match_id | | 1 | 108 | +-------------------------------------------------------+
+-------------------------------------------------------+ 2. | age | race | married | collgrad | | 34 | white | single | not college grad | |-------------------------------------------------------| | industry | union | wage | id123 | | Transport/Comm/Utility | nonunion | 15.48309 | 108 | |-------------------------+-----------------------------| | match | match_id | | 1 | 119 | +-------------------------------------------------------+
*……省略中间15对
+-------------------------------------------------------+ 33. | age | race | married | collgrad | | 45 | white | single | college grad | |-------------------------------------------------------| | industry | union | wage | id123 | | Professional Services | union | 17.02898 | 149 | |-------------------------+-----------------------------| | match | match_id | | 17 | 138 | +-------------------------------------------------------+
+-------------------------------------------------------+ 34. | age | race | married | collgrad | | 45 | white | single | college grad | |-------------------------------------------------------| | industry | union | wage | id123 | | Professional Services | nonunion | 8.518515 | 138 | |-------------------------+-----------------------------| | match | match_id | | 17 | 149 | +-------------------------------------------------------+
2.1.2 vmatch
命令语法
vmatch
相比 ccmatch
可选项多了许多,可以实现的功能也丰富很多,所以其语法结构相对比较复杂:
vmatch casevar [if exp] , generate(newvar)
show(idvar) save(filename) first fuzz(real 1e-6)
[r]devia(varlist1 dLo1[/dHi1] [varlist2 dLo2[/dHi2]] ...)
[r]eucli(varlist1 dist1 [varlist2 dist2] ...)
outof(varlist1 #1 [varlist2 #2]...)
strng(varlist)
power(#)
casevar
用来区别干预组与控制组;generate(newvar)
产生一个新变量表示观测值被匹配的数量;show(idvar)
给每个观测值赋予身份识别;save(filename)
很重要!只有另存为一个新文件,才能看到最后匹配对象的具体编号;[r]devia
设定匹配规则,不一定是精确匹配;strng
设定字符型变量的匹配规则,一定是精确匹配。
Stata 实例
同样,我们也拿 Stata 自带的美国妇女 1988 年工资数据进行演示,然后与 ccmatch
产生的结果进行对比:
sysuse nlsw88, cleardrop if union==.rsort, seed(135) id(idcode)keep in 1/200gen id123 = _nlocal exactX 'race collgrad married industry'local treat 'union'tostring `exactX', replace forcekeep id123 `exactX' `treat' age wage vmatch `treat', gen(nmatch) /// show(id123) /// save(nlsw_vmatch) first /// devia(age 0) ///按照年龄进行精确匹配 strng(`exactX') ///按照种族、是否大学毕业、婚姻状况以及所属行业进行精确匹配
drop if nmatch == 0 | nmatch == .list*- nmatch == 0: Treat 组中没有找到匹配对象的观察值;*- nmatch == .: Control 组中没有被使用的观察值;
*- 展示最终的匹配结果use 'nlsw_vmatch.dta', clear
运行结果显示,最后会有 40 个观测值被保留下来,相比于 ccmatch
的 34 个观测值多了 6 个。原因是 vmatch
命令允许 n:n 匹配,比如第 59、69、70 和 196 个控制组观测值均被视为第 14 个处理组观测值的匹配项,实现了 1:4 匹配;而 ccmatch
命令执行之后,只有第 196 个观测值被保留了下来,即 1:1 匹配。
+-----------------------------------------------------------------------------------+
| age race married collgrad industry union wage id123 nmatch |
|-----------------------------------------------------------------------------------|
1. | 38 2 1 1 12 nonunion 16.73912 7 121 |
2. | 39 1 1 1 11 union 6.70692 14 4 |
3. | 36 1 1 1 11 union 4.62963 18 1 |
4. | 35 1 1 0 11 union 4.025765 23 1 |
5. | 37 2 0 1 11 union 5.225441 32 1 |
|-----------------------------------------------------------------------------------|
*……省略中间 30 个观测值
|-----------------------------------------------------------------------------------|
36. | 35 1 1 1 11 nonunion 4.64573 187 71 |
37. | 37 2 0 1 11 nonunion 3.719806 188 32 |
38. | 42 1 1 1 11 nonunion 7.809981 193 183 |
39. | 37 1 1 0 12 nonunion 7.850241 194 33 |
40. | 39 1 1 1 11 nonunion 9.339773 196 14 |
+-----------------------------------------------------------------------------------+
2.2 近邻匹配+离散变量精确匹配
近邻匹配是一种常见的容易实施的匹配方法,它允许个体在指定的某些变量之间存在一定的距离,只要为处理组个体在控制组中寻找距离最近的控制组个体进行匹配即可。相对于精确匹配来说,这放宽了匹配的要求,便于我们保留下更多的观测值。
2.2.1 vmatch
vmatch
在实现部分变量精确匹配的同时,也可以对部分变量实现近邻匹配。以美国妇女 1988 年工资数据进行演示,我们放宽对年龄的匹配要求,允许其有一个 3 的距离。
Stata 实例
代码如下:
sysuse nlsw88, cleardrop if union==.rsort, seed(135) id(idcode)keep in 1/200gen id123 = _nlocal exactX 'race collgrad married industry'local treat 'union'tostring `exactX', replace forcekeep id123 `exactX' `treat' age wage vmatch `treat', gen(nmatch) /// show(id123) /// save(nlsw_vmatch) first /// devia(age 3) ///按照年龄进行近邻匹配,允许3的差距 strng(`exactX') ///按照种族、是否大学毕业、婚姻状况以及所属行业进行精确匹配
drop if nmatch==0|nmatch==.list*- nmatch==0: Treat 组中没有找到匹配对象的观察值;*- nmatch==.: Control 组中没有被使用的观察值;
*- 展示最终的匹配结果use 'nlsw_vmatch.dta', clear
结果显示有 123 个观测值被保留下来,相比于精确匹配情况下的 40 个观测值,样本容量大大扩大了。所以,当原始数据的样本容量十分有限时,可以选取 “近邻匹配+离散变量精确匹配” 的策略进行匹配,以保留更多样本让估计量更具可信度。
+-------------------------------------------------------+
1. | age | race | married | collgrad | industry | union |
| 40 | 1 | 0 | 0 | 12 | nonunion |
|-------------------------------------------------------|
| wage | id123 | nmatch |
| 5.732688 | 4 | 64 |
+-------------------------------------------------------+
+-------------------------------------------------------+
2. | age | race | married | collgrad | industry | union |
| 38 | 2 | 1 | 1 | 12 | nonunion |
|-------------------------------------------------------|
| wage | id123 | nmatch |
| 16.73912 | 7 | 121 |
+-------------------------------------------------------+
*……省略中间 120 个观测值
+-------------------------------------------------------+
123. | age | race | married | collgrad | industry | union |
| 36 | 1 | 1 | 0 | 6 | nonunion |
|-------------------------------------------------------|
| wage | id123 | nmatch |
| 6.32045 | 198 | 154 |
+-------------------------------------------------------+
2.2.2 teffects nnmatch
teffects
是 Stata 13.0 版本开始提供的官方匹配命令,它主要包括七个子命令,分别是 ipw
、aipw
、ipwra
、nnmatch
、psmatch
、ra
和 overlap
,其中前三个子命令对应于逆概加权方法,nnmatch
是近邻匹配命令,psmatch
是倾向得分匹配命令,ra
是回归调整命令,overlap
用于画干预组和控制组的倾向得分分布图。
命令语法
这里主要介绍 teffects nnmatch
命令,用其实现 “近邻匹配+离散变量精确匹配” 的匹配策略。其基本命令语法和主要选项如下:
teffects nnmatch (ovar omvarlist) (tvar) [if] [in] [weight] [, stat options]
ovar
为结果变量;omvarlist
为协变量;tvar
为干预变量。
Stata 实例
下面用 Cattaneo (2010) 文章作为实例进行演示:
help teffects nnmatch
*-Setup*-Cattaneo (2010)*Efficient semiparametric estimation of multi-valued treatment effects under ignorability. Journal of Econometrics 155: 138–154.*A study of the effect of a mother’s smoking status during pregnancy (mbsmoke) on infant birthweight (bweight)
*数据地址:https://gitee.com/arlionn/data/blob/master/data01/cattaneo2.dtause 'https://gitee.com/arlionn/data/raw/master/data01/cattaneo2.dta', cleardes2
teffects nnmatch (bweight mage fage) (mbsmoke), /// ematch (prenatal1 mmarried fbaby) /// biasadj(mage fage)
*-Estimate the average treatment effect of mbsmoke on bweight*-Match on two continuous variables, mage and fage*-Require exact matches on the binary variables*-Use the bias-adjusted estimator
结果显示,总体的平均因果效应系数为 -223.8,即母亲抽烟会使婴儿出生时的重量平均减少 223.8 克。
Treatment-effects estimation Number of obs = 4,642
Estimator : nearest-neighbor matching Matches: requested = 1
Outcome model : matching min = 1
Distance metric: Mahalanobis max = 25
----------------------------------------------------------------------------------------
| AI Robust
bweight | Coef. Std. Err. z P>|z| [95% Conf. Interval]
-----------------------+----------------------------------------------------------------
ATE |
mbsmoke |
(smoker vs nonsmoker) | -223.8389 26.19973 -8.54 0.000 -275.1894 -172.4883
----------------------------------------------------------------------------------------
3. 模糊匹配
将影响结果变量的诸多广泛因素均进行精确匹配是件十分困难的事情——此类可能性几乎无穷无尽,并且还存在不可观测的因素。所以在实证研究中被学者们广泛使用的匹配方法实际上是模糊匹配。
Dale & Krueger (2002) 给出了一种聪明且令人信服的匹配方法,3.1 节中我们对此进行介绍。如果我们找不到这么 “开脑洞” 的方案,那么 3.2 节中倾向得分匹配 (PSM) 方法也可以助我们一臂之力。
3.1 Dale & Krueger (2002)
回到私立大学教育回报率的例子,我们已经知道了影响大学选择和未来收入的因素千千万万,所以假如进行一一识别的话是非常困难的事情。于是,Dale & Krueger (2002) 使用了一个关键性指标:学生提交申请和获得录取的学校分别具有的特征。下面对这种匹配策略进行介绍:
Source: Mastering'metrics: The path from cause to effect. Table 2.2.
我们将上表称为 “大学匹配矩阵”,按照申请和录取的学校不同,9 名学生被归入 ABCD 四组内。A 组学生同时向两所私立学校和一所公立大学提出了入学申请,并且录取结果完全相同,这就表明了三名学生各方面条件都十分相似 (实现了模糊匹配)。
不同于 1、2 号学生最终进入了私立大学,3 号学生选择进入公立大学,这就给了我们识别因果效应的绝佳机会,即只要比较组 A 学生之间的收入差异,就可以识别出私立大学教育产生的收益。当然,在组 A 中进行的比较,只是众多匹配比较中的一个,我们需要更多的样本与信息来估计私立大学的收入优势。建立如下回归模型:
回归结果如下:
Source: Mastering'metrics: The path from cause to effect. Table 2.2.
上表中,(1) - (3) 列结果是未加入选拔性组别虚拟变量时的回归结果,我们可以发现私立大学的教育溢价均是统计显著的。在加入诸如本人 SAT 成绩、父母收入以及种族性别相关的控制变量之后溢价有所下降,但效应仍然相当大。
(4) - (6) 列是加入了 虚拟变量之后的回归结果,我们可以看到此时私立大学教育的溢价几乎接近于 0,并且在加入表示能力和家庭背景的控制变量之后,回归系数也几乎不再发生改变,说明此时模型是稳健的。
3.2 PSM
当我们找不到一个新颖的识别策略时,倾向得分匹配 (PSM) 可以助我们一臂之力。有关于 PSM 的理论部分可参见「Stata:PSM-倾向得分匹配分析的误区」,这里我们参考 Imbens (2015) 对 PSM 在 Stata 中的实现进行介绍。
使用美国国家支持工作示范项目 (National Supported Work, NSW) 的数据集,处理组个体是 185 个随机选取的参与培训项目的男性,控制组个体则是 260 个随机选取的作为对照的男性,我们利用这个数据库来研究培训对个人收入的影响。
第一步:检验协变量是否平衡
*数据地址:https://gitee.com/arlionn/data/blob/master/data01/nsw_dw.dtause 'https://gitee.com/arlionn/data/raw/master/data01/nsw_dw.dta', clear //打开数据集
*(1) Do balance testbtest age-re75,by(treat)
*输出结果为:
-------------------------------------------------------------------------------------------------------
| Treated group Control group Std.
Variable | Mean Sd. Mean Sd. Bias t p>|t| ln(sd1/sd0)
----------------------+----------------------------------------------------------------------------------
age | 25.82 7.16 25.05 7.06 0.107 1.11 0.27 0.014
education | 10.35 2.01 10.09 1.61 0.141 1.44 0.15 0.220
black | 0.84 0.36 0.83 0.38 0.044 0.46 0.65 -0.039
hispanic | 0.06 0.24 0.11 0.31 -0.175 -1.86 0.06 -0.270
married | 0.19 0.39 0.15 0.36 0.094 0.97 0.33 0.083
nodegree | 0.71 0.46 0.83 0.37 -0.304 -3.11 0.00 0.203
re74 | 2095.57 4886.62 2107.03 5687.91 -0.002 -0.02 0.98 -0.152
re75 | 1532.06 3219.25 1266.91 3102.98 0.084 0.87 0.38 0.037
---------------------------------------------------------------------------------------------------------
从输出结果来看,处理组与控制组之间的差异十分小,最大的偏差来源于 nodegree 变量,t 值达到 -3.11,在统计上是显著的,所以此时仍可以对样本进行倾向得分匹配,让两组之间的差距进一步缩小。
第二步:估计倾向得分
*(2) Estimate the propensity score*- pscore 命令的语法结构如下:/* pscore treatment varlist [weight] [if exp] [in range] , pscore(newvar) [blockid(newvar) detail logit comsup level(#) numblo(#) ]*/
*以treat 作为处理变量,以年龄、教育、是否为黑人等作为协变量计算倾向得分cap drop id_nsw ps_nswpscore treat age-re75, pscore(ps_nsw) blockid(id_nsw) logit comsup
输出结果中显示:The balancing property is satisfied
,说明以上倾向得分模型是充分的,满足平衡指数特征,可以作为倾向得分匹配的依据了。
另外,还可利用 histogram
命令画出两组的倾向得分分布图,以比较两组协变量的差异。
histogram ps_nsw,by(treat, col(1))
直方图如下:
第三步:进行倾向得分匹配
在估计出倾向得分之后,我们便可以采用相应的匹配命令进行倾向得分匹配了。
首先介绍分层匹配命令 atts
:
*- atts 命令的语法结构如下: /* atts outcome treatment [if exp] [in range] , pscore(scorevar) blockid(blockvar) [comsup detail bootstrap bs_options]*/
*(3)Matching and estimating treatment effectsatts re78 treat, pscore(ps_nsw) blockid(id_nsw) comsup
输出结果如下:
ATT estimation with the Stratification method
Analytical standard errors
---------------------------------------------------------
n. treat. n. contr. ATT Std. Err. t
---------------------------------------------------------
185 249 1830.437 681.845 2.685
---------------------------------------------------------
结果显示,处理组个体有 185 个,控制组 249 个,处理组的平均因果效应为 1830,也就是说,接受培训带来的收入提升有 1830 美元。
接下去介绍另一个广泛使用的命令 psmatch2
,它除了能够实现近邻匹配、半径匹配、核匹配之外,还增加了局部线性回归匹配、样条匹配等方法。其语法结构如下:
psmatch2 depvar [indepvars] [if exp] [in range] [, outcome(varlist) pscore(varname) neighbor(integer) radius caliper(real) mahalanobis(varlist) ai(integer) population altvariance kernel llr kerneltype(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)
:已经估计好倾向得分时,可以直接告诉 Stata 使用varname
变量提供的倾向得分;neighbor(integer)
:近邻匹配,括号内的数字代表 1:k 匹配;radius
:半径匹配;caliper(real)
:设定卡尺范围;ai(integer)
:用 Abadie & Imbens (2006) 提出的标准误计算方法;kernel
:核匹配;llr
:局部线性回归匹配;spline
:样条匹配;common
:设定共同区间;trim(real)
:通过截尾方式设定共同区间;noreplacement
:在 1:1 近邻匹配中使用,该选项不允许样本进行重复匹配;descending
:在 1:1 近邻匹配中使用,匹配以降序进行;odds
:按照倾向得分的比值进行匹配;logit
:利用 logit 模型估计倾向得分;ties
:允许在最近邻匹配中,多个相同倾向得分的控制组个体与处理组个体匹配;ate
:除提供 ATT (处理组平均因果效应) 估计量外,还提供 ATE (总体的平均因果效应) 和 ATC (控制组平均因果效应) 的匹配估计量。
下面利用 psmatch2
命令,使用不放回的降序最近邻匹配方法估计培训对收入的影响:
*(3)Matching and estimating treatment effects
psmatch2 treat, outcome(re78) p(ps_nsw) n(1) norepl descending odds
*估计结果为:---------------------------------------------------------------------------------------- Variable Sample | Treated Controls Difference S.E. T-stat----------------------------+----------------------------------------------------------- re78 Unmatched | 6349.1435 4554.80112 1794.34238 632.853392 2.84 ATT | 6349.1435 4362.23331 1986.91019 680.432923 2.92----------------------------+-----------------------------------------------------------
结果显示,处理组的平均因果效应为 1987,也就是说,接受培训带来的收入提升有 1987 美元。
第四步:检验非混杂性条件
参考 Imbens (2015) 的做法,我们利用伪结果方法 (pseudo outcome) 进行对非混杂性条件 (unconfoundedness) 进行检验。
伪结果方法利用一个事实上没有受到干预影响的变量作为伪结果,检验控制了协变量后,相应的伪结果平均因果效应是否为零。其中的逻辑是:假如影响潜在结果的所有混杂因素均被控制,那么,未观测因素将不会对两组结果产生系统性影响,那么对于伪结果,相应的平均因果效应将为零 (赵西亮,2017)。
*(4)Test CIA
psmatch2 treat, outcome(re75) p(ps_nsw) n(1) norepl descending odds
*估计结果为:---------------------------------------------------------------------------------------- Variable Sample | Treated Controls Difference S.E. T-stat----------------------------+----------------------------------------------------------- re75 Unmatched | 1532.05531 1266.90901 265.146299 303.155497 0.87 ATT | 1532.05531 1372.196 159.859308 341.365166 0.47----------------------------+-----------------------------------------------------------
结果显示,培训对 75 年收入没有显著影响,即没有发现非混杂性条件不成立的证据。需要指出的是,这并不意味着非混杂性条件一定成立,只能在一定程度上证明没有发现非混杂性条件不成立,从而估计结果有一定的可信性。
4. 参考文献
[1] Angrist J D, Pischke J S. Mastering'metrics: The path from cause to effect[M]. Princeton University Press, 2014: pp.1-82. [2] 赵西亮. 基本有用的计量经济学[M]. 北京大学出版社, 2017: pp.147-162. [3] Dale S B, Krueger A B. Estimating the payoff to attending a more selective college: An application of selection on observables and unobservables[J]. The Quarterly Journal of Economics, 2002, 117(4): 1491-1527. -Link- [4] Imbens G W. Matching methods in practice: Three examples[J]. Journal of Human Resources, 2015, 50(2): 373-419. -Link- [5] Stata:PSM-倾向得分匹配分析的误区 -Link-
New! Stata 搜索神器:
lianxh
和songbl
GIF 动图介绍
搜: 推文、数据分享、期刊论文、重现代码 ……
👉 安装:
. ssc install lianxh
. ssc install songbl
👉 使用:
. lianxh DID 倍分法
. songbl all
🍏 关于我们
连享会 由中山大学连玉君老师团队创办,定期分享实证分析经验。 直通车: 👉【百度一下:连享会】即可直达连享会主页。亦可进一步添加 「知乎」,「b 站」,「面板数据」,「公开课」 等关键词细化搜索。