Stata:广义精确匹配-Coarsened Exact Matching (CEM)
CEM 原理简介
匹配本质上是一种控制处理组和控制组处理前差异的非参数方法,关键在于筛选样本,提高平衡性,换言之,处理组和控制组的协变量经验分布更加接近。常用的 PSM 方法往往无法确保在匹配后提升平衡性,而 Coarsened Exact Matching(CEM) 可以通过控制观测数据中混杂因素对政策结果影响使处理组与控制组的协变量的分布尽可能保持平衡,从而增强两组数据之间的可比性。
匹配是预处理数据的一种非参数方法,通过减少处理组和对照组之间的不平衡来控制
部分或全部预处理控制变量的潜在混淆影响。经过这样的预处理后,任何不需要匹配的分析方法都可以用于估计因果效应,尽管有些方法会有更好的特性。CEM是Monotonoic Imbalance Bounding(MIB)匹配的方法——这意味着治疗和控制组织之间的平衡是由用户选择事前而不是通过常规检查后的艰难历程发现事实并多次重新估计,所以调整不平衡对一个变量没有影响的最大不平衡。CEM还通过事前严格界限用户选择模型依赖的程度和平均处理效应估计误差,消除了需要一个单独的程序来限制数据常见的实证支持,符合一致性原则,稳健的测量误差,适用与多个归责方法缺失的数据,可以完全自动化,非常快速计算即使有非常大的数据集。在使用CEM对数据进行预处理之后,分析人员可以使用简单的方法差异,或者他们在不匹配的情况下应用的任何统计模型。
在 CEM 中,处理组和控制组之间的最大不平衡可以由用户事先选择,而不是通过那些费力的事后检查和重复重新评估的过程来发现,并且调整一个变量上的不平衡不会影响任何其他变量的不平衡。
CEM 通过预先的用户选择,将变量根据用户的标准分组,在保留基本信息的同时,提升了匹配的效率,限制了模型依赖程度和平均处理效应估计误差。它能够将数据限制在共同支持范围内,符合一致性原则,对测量误差的敏感度较低,能够很好地用多重插补方法处理缺失值数据。此外,它可以完全自动化地进行这系列操作,即使对于非常大的数据集,计算处理速度也很快。
CEM 有一个非常重要的性质——单调不平衡边界。它通过变量事先分组的标准,确保匹配提升样本的平衡性,而且限制了模型依赖程度和平均处理效应估计误差,因此无需匹配后检查协变量的平衡性。
CEM 操作步骤
首先根据用户事先的截断点,将协变量进行分层。其次运用精确匹配的算法根据样本的经验分布将每层中的研究对象进行精确匹配,保证每层中至少有一个处理组和一个对照组的研究对象,否则将该研究对象删除。最后保留匹配成功的研究对象,用匹配后的数据,研究政策变量对结果变量的影响。
匹配中有一个重要的变量L1,L1的取值范围是[0,1]。若L1=0,则说明两组数据完全平衡,若L1=1,则说明两组数据完全不平衡,越接近1则说明不平衡程度越大。一般来说,匹配后 L1 较匹配前的 L1 有所下降,CEM 的匹配效果较好。CEM 匹配后两组数据的样本量可能会不相等,因此 CEM 匹配过程中会产生权重变量(Weight),以此来平衡每层中参与组和控制组的人数。
CEM 操作应用
cem varname1 [(cutpoints1)] [varname2 [(cutpoints2)]] ... [if] [in] [, options]
. use "C:\Users\admin\Desktop\JTRAIN2.DTA"
. desc
Contains data from C:\Users\admin\Desktop\JTRAIN2.DTA
obs: 445
vars: 19 17 Jan 2000 17:20
size: 16,910
-------------------------------------------------------------------------------------------------------------------------
storage display value
variable name type format label variable label
-------------------------------------------------------------------------------------------------------------------------
train byte %9.0g =1 if assigned to job training
age byte %9.0g age in 1977
educ byte %9.0g years of education
black byte %9.0g =1 if black
hisp byte %9.0g =1 if Hispanic
married byte %9.0g =1 if married
nodegree byte %9.0g =1 if no high school degree
mosinex byte %9.0g # mnths prior to 1/78 in expmnt
re74 float %9.0g real earns., 1974, $1000s
re75 float %9.0g real earns., 1975, $1000s
re78 float %9.0g real earns., 1978, $1000s
unem74 byte %9.0g =1 if unem. all of 1974
unem75 byte %9.0g =1 if unem. all of 1975
unem78 byte %9.0g =1 if unem. all of 1978
lre74 float %9.0g log(re74); zero if re74 == 0
lre75 float %9.0g log(re75); zero if re75 == 0
lre78 float %9.0g log(re78); zero if re78 == 0
agesq int %9.0g age^2
mostrn byte %9.0g months in training
-------------------------------------------------------------------------------------------------------------------------
Sorted by:
. ed
.
2、看下样本的分布,结果为:
. tab train
=1 if |
assigned to |
job |
training | Freq. Percent Cum.
------------+-----------------------------------
0 | 260 58.43 58.43
1 | 185 41.57 100.00
------------+-----------------------------------
Total | 445 100.00
可以看到样本中有 185 个参加培训和 260 个未参加培训。
3、直接进行OLS回归结果为:
. reg re78 train
Source | SS df MS Number of obs = 445
-------------+---------------------------------- F(1, 443) = 8.04
Model | 348.013451 1 348.013451 Prob > F = 0.0048
Residual | 19177.6432 443 43.2903909 R-squared = 0.0178
-------------+---------------------------------- Adj R-squared = 0.0156
Total | 19525.6566 444 43.9767041 Root MSE = 6.5795
------------------------------------------------------------------------------
re78 | Coef. Std. Err. t P>|t| [95% Conf. Interval]
-------------+----------------------------------------------------------------
train | 1.794343 .6328536 2.84 0.005 .5505748 3.038111
_cons | 4.554802 .408046 11.16 0.000 3.752856 5.356749
------------------------------------------------------------------------------
首先评价不剔除个体时的非平衡性。为cem执行自动的粗略化算法(尽管用户可以自己定义粗略化水平),然后用imb命令(Sata自带的,需先安装cem),得到数据中非平衡的起始状态。
imb的语法如下
imb varlist [if] [in] [, options]
. . imb age educ black nodegree re74, treatment(train)
Multivariate L1 distance: .48284823
Univariate imbalance:
L1 mean min 25% 50% 75% max
age .10915 .76237 0 1 1 1 -7
educ .16933 .25748 1 0 1 1 2
black .01632 .01632 0 0 0 0 0
nodegree .12651 -.12651 0 -1 0 0 0
re74 .05894 -.01145 0 0 0 1.2915 -4.5306
从表中可以看出,两组协变量的 L1 统计量是 0.48284823,这为我们的匹配提供了一个基准组,表明多数变量整体上表现出的平衡性,后续其他变量可以与这个进行比较。
在这种非平衡状态下,我们来看看cem命令。
. cem age educ black nodegree re74, treatment(train)
Matching Summary:
-----------------
Number of strata: 115
Number of matched strata: 38
0 1
All 260 185
Matched 203 141
Unmatched 57 44
Multivariate L1 distance: .34167541
Univariate imbalance:
L1 mean min 25% 50% 75% max
age .09343 .01733 0 0 0 -1 -1
educ .05138 -.01769 -1 0 0 0 0
black 3.2e-16 5.6e-16 0 0 0 0 0
nodegree 4.7e-16 7.8e-16 0 0 0 0 0
re74 .09007 .05015 0 0 0 0 .2968
.
L1 统计量从0.48284823 到.34167541,表明整体平衡性得到提升。
Number of strata: 115
Number of matched strata: 38
表明样本中115个个体只有38个得到匹配,这个样本比例比较低。可以通过cem命令生成的权重,采用WLS回归估计得到ATET
. reg re78 train [iweight=cem_weights ]
Source | SS df MS Number of obs = 344
-------------+---------------------------------- F(1, 342) = 4.70
Model | 227.569132 1 227.569132 Prob > F = 0.0308
Residual | 16543.9663 342 48.3741705 R-squared = 0.0136
-------------+---------------------------------- Adj R-squared = 0.0107
Total | 16771.5354 343 48.8966048 Root MSE = 6.9552
------------------------------------------------------------------------------
re78 | Coef. Std. Err. t P>|t| [95% Conf. Interval]
-------------+----------------------------------------------------------------
train | 1.653782 .7624799 2.17 0.031 .1540417 3.153523
_cons | 4.619186 .4881561 9.46 0.000 3.65902 5.579352
------------------------------------------------------------------------------
这个结果表明培训对1978年的实际收入有显著的正效应。