查看原文
其他

Stata:广义精确匹配-Coarsened Exact Matching (CEM)

1

CEM 原理简介


匹配本质上是一种控制处理组和控制组处理前差异的非参数方法,关键在于筛选样本,提高平衡性,换言之,处理组和控制组的协变量经验分布更加接近。常用的 PSM 方法往往无法确保在匹配后提升平衡性,而 Coarsened Exact Matching(CEM) 可以通过控制观测数据中混杂因素对政策结果影响使处理组与控制组的协变量的分布尽可能保持平衡,从而增强两组数据之间的可比性。


匹配是预处理数据的一种非参数方法,通过减少处理组和对照组之间的不平衡来控制


部分或全部预处理控制变量的潜在混淆影响。经过这样的预处理后,任何不需要匹配的分析方法都可以用于估计因果效应,尽管有些方法会有更好的特性。CEM是Monotonoic Imbalance Bounding(MIB)匹配的方法——这意味着治疗和控制组织之间的平衡是由用户选择事前而不是通过常规检查后的艰难历程发现事实并多次重新估计,所以调整不平衡对一个变量没有影响的最大不平衡。CEM还通过事前严格界限用户选择模型依赖的程度和平均处理效应估计误差,消除了需要一个单独的程序来限制数据常见的实证支持,符合一致性原则,稳健的测量误差,适用与多个归责方法缺失的数据,可以完全自动化,非常快速计算即使有非常大的数据集。在使用CEM对数据进行预处理之后,分析人员可以使用简单的方法差异,或者他们在不匹配的情况下应用的任何统计模型。


在 CEM 中,处理组和控制组之间的最大不平衡可以由用户事先选择,而不是通过那些费力的事后检查和重复重新评估的过程来发现,并且调整一个变量上的不平衡不会影响任何其他变量的不平衡。


CEM 通过预先的用户选择,将变量根据用户的标准分组,在保留基本信息的同时,提升了匹配的效率,限制了模型依赖程度和平均处理效应估计误差。它能够将数据限制在共同支持范围内,符合一致性原则,对测量误差的敏感度较低,能够很好地用多重插补方法处理缺失值数据。此外,它可以完全自动化地进行这系列操作,即使对于非常大的数据集,计算处理速度也很快。


CEM 有一个非常重要的性质——单调不平衡边界。它通过变量事先分组的标准,确保匹配提升样本的平衡性,而且限制了模型依赖程度和平均处理效应估计误差,因此无需匹配后检查协变量的平衡性。 



2

CEM 操作步骤


首先根据用户事先的截断点,将协变量进行分层。其次运用精确匹配的算法根据样本的经验分布将每层中的研究对象进行精确匹配,保证每层中至少有一个处理组和一个对照组的研究对象,否则将该研究对象删除。最后保留匹配成功的研究对象,用匹配后的数据,研究政策变量对结果变量的影响。


匹配中有一个重要的变量L1,L1的取值范围是[0,1]。若L1=0,则说明两组数据完全平衡,若L1=1,则说明两组数据完全不平衡,越接近1则说明不平衡程度越大。一般来说,匹配后 L1 较匹配前的 L1 有所下降,CEM 的匹配效果较好。CEM 匹配后两组数据的样本量可能会不相等,因此 CEM 匹配过程中会产生权重变量(Weight),以此来平衡每层中参与组和控制组的人数。


3

CEM 操作应用


广义精确匹配-Coarsened Exact Matching (CEM)命令为cem,语法格式为:
cem varname1 [(cutpoints1)] [varname2 [(cutpoints2)]] ... [if] [in] [, options]
选项含义为:
treatment(varname)处理变量的名称
showbreak显示每个变量使用的切点
autocuts(string) 用于自动生成切割点
k2k迫使cem返回一个k2k解
imbbreaks(string)用于自动为不平衡检查生成切点的方法
miname(string) 如果在单独的文件中,输入数据集的文件名根目录
misets(integer)  输入数据集的数量(整数),如果在单独的文件

1、首先导入数据,使用 JTRAIN 2.DTA数据集。
. 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 valuevariable name type format label variable label-------------------------------------------------------------------------------------------------------------------------train byte %9.0g =1 if assigned to job trainingage byte %9.0g age in 1977educ byte %9.0g years of educationblack byte %9.0g =1 if blackhisp byte %9.0g =1 if Hispanicmarried byte %9.0g =1 if marriednodegree byte %9.0g =1 if no high school degreemosinex byte %9.0g # mnths prior to 1/78 in expmntre74 float %9.0g real earns., 1974, $1000sre75 float %9.0g real earns., 1975, $1000sre78 float %9.0g real earns., 1978, $1000sunem74 byte %9.0g =1 if unem. all of 1974unem75 byte %9.0g =1 if unem. all of 1975unem78 byte %9.0g =1 if unem. all of 1978lre74 float %9.0g log(re74); zero if re74 == 0lre75 float %9.0g log(re75); zero if re75 == 0lre78 float %9.0g log(re78); zero if re78 == 0agesq int %9.0g age^2mostrn 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------------------------------------------------------------------------------


4、下面使用布莱克韦尔等人(2009)提供的Sata命令cem来估计,


首先评价不剔除个体时的非平衡性。为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 0nodegree .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: 115Number of matched strata: 38
0 1 All 260 185 Matched 203 141Unmatched 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 0nodegree 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: 115Number 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年的实际收入有显著的效应。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存