广义精确匹配(CEM)原理与Stata实操:从匹配方法到因果推断

📅 2026/8/1 17:37:22
广义精确匹配(CEM)原理与Stata实操:从匹配方法到因果推断
1. 从“精确”到“广义精确”CEM匹配方法的缘起与核心思想在实证研究尤其是政策评估、经济学和医学领域我们常常面临一个经典难题如何评估一项干预比如新药、一项培训计划、一个政策的真实效果理想情况下我们会希望有一组完全相同的个体一部分接受干预处理组另一部分不接受控制组然后比较他们的结果差异。但这在现实中不可能因为每个个体都是独特的。于是我们退而求其次寻找“尽可能相似”的个体进行配对比较这就是匹配方法Matching的用武之地。传统的精确匹配Exact Matching要求处理组和控制组的个体在所有协变量比如年龄、性别、教育程度、收入等上都完全一致。这听起来很严谨但实际操作起来几乎寸步难行。只要协变量稍微多一点或者存在连续变量如收入找到完全匹配的“双胞胎”就变得异常困难最终会导致大量样本因无法匹配而被丢弃样本损失惨重估计结果的效率和外推性都大打折扣。那么有没有一种方法既能保持匹配的严谨性又能更灵活、更高效地利用数据呢这就是广义精确匹配Coarsened Exact Matching, CEM登场的原因。我第一次接触CEM是在处理一个城市公共服务政策评估项目时手头的数据维度多连续变量也多用传统的倾向得分匹配PSM总觉得对平衡性的控制不够“踏实”而且对模型设定比较敏感。直到用了CEM那种对数据分布“硬性”修剪的感觉让我对匹配后的样本质量有了更强的信心。CEM的核心思想非常巧妙它用一个“先粗化后精确”的两步法优雅地解决了传统精确匹配的困境粗化Coarsening我们不再强求连续变量如年龄35岁和36岁必须完全相等。相反我们根据研究问题的背景知识和数据分布人为地将连续变量划分为有意义的区间或称“箱”Bins。例如将年龄粗化为“18-30岁”、“31-45岁”、“46-60岁”、“60岁以上”几个区间。对于分类变量我们也可以进行合并例如将“硕士”、“博士”合并为“研究生及以上”。这个过程实质上是在降低匹配的维度精度以换取更大的匹配可能性。精确匹配Exact Matching在所有的协变量都被粗化之后我们在这个“粗化”后的数据空间里进行精确匹配。也就是说处理组和控制组的个体只要他们落在所有粗化后协变量的同一个“组合箱”里就被认为是可匹配的。例如一个处理组个体是“31-45岁”、“男性”、“本科”那么所有控制组中同样是“31-45岁”、“男性”、“本科”的个体都进入匹配池。通过这种方式CEM实现了“广义”上的精确。它不像PSM那样依赖一个估计的倾向得分函数从而避免了因模型误设带来的偏差。CEM是一种非参数、单调不平衡性减少的方法。所谓“单调减少”指的是经过CEM匹配后样本在各维度上的不平衡性比如处理组和控制组在年龄分布上的差异绝对不会比匹配前更差这为结果的稳健性提供了一个很强的保障。简单来说CEM就像先用一个筛孔大小合适的筛子粗化标准把数据过一遍把明显不属于一个“层级”的样本筛掉然后在剩下的、属于同一层级的样本里进行精确配对。这种方法特别适合在你有较强的先验知识知道哪些协变量重要以及如何划分它们时使用它能给出非常透明和可解释的匹配样本。2. CEM实操全流程从理论到Stata实现理解了CEM的思想我们来看看如何一步步实现它。我将结合Stata软件这也是相关热搜词中高频出现的工具的操作手把手带你走完从数据准备到结果评估的全过程。假设我们正在评估一项职业培训项目对个人收入的影响我们的数据包含是否参与培训treated 处理变量、年收入income 结果变量以及年龄age、教育年限edu、性别female等协变量。2.1 第一步关键前提——协变量的选择与粗化在按下任何软件命令之前最重要的一步是运用你的学科知识。CEM的效能高度依赖于研究者对“如何粗化”的判断。协变量选择这与其他匹配方法无异。你需要根据经济理论、前人研究或常识选择那些同时影响个体是否进入处理组是否参加培训和结果变量收入的变量。遗漏关键变量会导致严重的混淆偏差。在我们的例子中年龄、教育、性别都是经典的控制变量。粗化策略这是CEM的灵魂。你需要为每个待匹配的协变量制定粗化方案。连续变量如age,edu不要盲目使用软件默认的分位数分组。思考有现实意义的断点。例如年龄可以按生命周期阶段划分[18, 25), [25, 35), [35, 45), [45, 60), [60, .)。教育年限可以按学历层次近似划分[0, 6)小学及以下, [6, 9)初中, [9, 12)高中, [12, 16)大学, [16, .)研究生。你也可以使用样本分位数如四分位但必须有解释力。分类变量如female本身就是粗化的通常无需再处理。但对于多分类变量如地区、行业如果类别太多导致匹配困难可以考虑合并相似类别。注意粗化是一把双刃剑。箱体划分得太细趋近于传统精确匹配可能丢样本划分得太粗虽然保留了更多样本但可能会在箱体内残留较大的不平衡影响估计精度。没有绝对的金标准需要在样本量和匹配质量间做权衡。我的经验是首先基于理论划分然后通过敏感性测试尝试不同的粗化方案来观察匹配后样本量和平衡性的变化选择一个稳健的方案。2.2 第二步Stata中的CEM匹配执行在Stata中我们需要先安装CEM模块。在命令窗口输入ssc install cem安装完成后假设我们的数据已经加载变量名为treated(0/1),income,age,edu,female(0/1)。接下来进行匹配。我们使用cem命令并指定粗化方案。这里演示两种常用方式方式一自动粗化谨慎使用cem age edu female, treatment(treated)这条命令会让Stata自动为连续变量age和edu寻找一个粗化方案。虽然方便但自动生成的断点可能缺乏实际意义我一般不建议直接使用仅作为初步探索。方式二手动指定粗化方案推荐这是体现研究者水平的地方。我们需要用cutpoints()选项为每个连续变量指定断点向量。cem age (18 25 35 45 60) edu (0 6 9 12 16) female, treatment(treated)这条命令的含义是将age粗化为5个区间(-∞, 18), [18, 25), [25, 35), [35, 45), [45, 60), [60, ∞)。注意Stata中区间是左闭右开的。将edu粗化为5个区间。female是二分类变量自动处理。treatment(treated)指定处理变量。命令执行后Stata会输出一个详细的汇总表格其中几个关键信息需要你紧盯Matched列显示匹配后处理组和控制组在各“组合箱”中成功匹配的单元数。所有Matched为0的行意味着该类型的个体在另一组中完全找不到对应对象这些样本将在后续分析中被自动剔除。Multivariate L1 imbalance这是CEM提出的一个多维不平衡度量指标L1值介于0到1之间。0表示处理组和控制组的分布完全一致1表示完全不相交。匹配后这个值应该显著小于匹配前。这是衡量CEM匹配整体效果的核心指标。样本量变化表格最后会显示原始和匹配后的样本量。你会看到处理组和控制组都有样本被剔除。2.3 第三步匹配后分析——ATT估计与平衡性检验CEM匹配完成后我们得到了一个筛选后的样本那些落在至少有一个匹配对象的“组合箱”里的个体。但cem命令本身并不直接给出处理效应估计。我们需要用这个匹配后的样本进行后续回归或比较。2.3.1 方法一使用CEM权重进行加权回归最常用、最灵活cem命令会生成一个名为cem_weights的权重变量。匹配成功的样本权重为1未匹配的样本权重为0实际上已被剔除。对于匹配成功的控制组样本如果在一个“组合箱”内有多个个体匹配到一个处理组个体他们的权重会被调整小于1以保证处理组和控制组在粗化后的协变量空间分布一致。我们可以用这个权重进行加权最小二乘回归WLS来估计平均处理效应ATTreg income i.treated [iweightcem_weights], robusti.treated表示将treated作为因子变量。[iweightcem_weights]使用CEM生成的权重。robust选项使用稳健标准误通常更可靠。 回归系数中1.treated的系数就是在控制了通过匹配平衡掉的协变量后培训项目对收入的**平均处理效应ATT**估计值。2.3.2 方法二直接在匹配样本上进行差分或回归我们可以先筛选出匹配的样本然后进行简单比较或回归gen matched_sample (cem_matched 1) // cem_matched是cem命令生成的匹配标识变量 reg income i.treated if matched_sample 1, robust这种方法等价于给匹配样本赋权1未匹配样本赋权0。与方法一在结果上通常一致。2.3.3 平衡性检验——匹配效果的“体检报告”匹配做得好不好不能自己说了算必须用数据检验。CEM虽然理论上保证了单调不平衡减少但我们仍需直观地检查每个变量在匹配后的平衡性是否改善。标准化均值差Standardized Mean Difference, SMD这是最常用的平衡性诊断指标。对于每个协变量计算处理组均值与控制组均值之差再除以匹配前的混合标准差。通常认为SMD绝对值小于0.1或更严格的0.05时组间差异可以忽略。// 安装外部命令进行更漂亮的平衡性检验 ssc install balancetable balancetable treated age edu female using balance.csv, replace vce(robust) // 匹配前 balancetable treated age edu female [iweightcem_weights] using balance_matched.csv, replace vce(robust) // 匹配后对比匹配前后表格中每个变量的SMD你应该能看到匹配后的SMD大幅缩小尤其是那些你用于匹配的变量。可视化检验绘制匹配前后关键变量的密度函数图或箱线图直观感受分布是否接近。twoway (kdensity age if treated1) (kdensity age if treated0), legend(label(1 处理组) label(2 控制组)) title(匹配前年龄分布) twoway (kdensity age if treated1 [iweightcem_weights]) (kdensity age if treated0 [iweightcem_weights]), legend(label(1 处理组) label(2 控制组)) title(匹配后年龄分布)匹配后的两条密度曲线应该几乎重合。3. 优势、局限与实战避坑指南没有一种方法是银弹CEM也不例外。经过多个项目的实战我总结出它的优缺点和几个必须绕开的“坑”。3.1 CEM的显著优势对模型设定不敏感这是相对于PSM的最大优点。PSM的结果依赖于逻辑回归或类似模型的正确设定。如果混淆变量与处理变量之间的关系建模错误倾向得分估计就不准匹配也就失败了。CEM完全绕开了这一步只要你的粗化方案合理结果就相对稳健。单调减少不平衡性这是一个非常强的理论保障。匹配后的样本其协变量分布绝对不会比匹配前更不平衡。这让你对匹配质量有底。计算效率高结果透明CEM的算法简单直接就是分类和计数计算速度很快。匹配过程也非常透明——哪些样本被剔除了为什么被剔除因为属于没有匹配对象的“组合箱”一目了然。先匹配后分析它明确地将“选择可比样本”和“效应估计”两个步骤分离开。这符合研究设计的直觉也方便你在匹配后的样本上尝试多种估计模型如回归、双重差分等。3.2 CEM的主要局限与应对“维度诅咒”与样本损失尽管比精确匹配好但当协变量很多且粗化较细时形成的“组合箱”数量会指数级增长k1 * k2 * k3 * ...。这仍然可能导致很多“组合箱”内只有处理组或只有控制组个体造成样本损失。应对策略优先粗化最关键的变量对于次要变量可以适当放宽粗化标准考虑使用多重集匹配Multivariate Matching with CEM的一些变体或者将CEM作为第一步筛选再结合其他方法。粗化标准的主观性如何划分区间这依赖于研究者的判断。不同的粗化方案可能得到不同的匹配样本和估计结果。应对策略必须进行敏感性分析报告你基准的粗化方案然后尝试2-3种不同的、有道理的划分方式例如用更细或更粗的分位数观察ATT估计值是否发生实质性变化。如果结果稳健则结论更可信。不直接处理匹配中的“一对多”问题在同一个“组合箱”内可能有1个处理组个体对应多个控制组个体。CEM通过赋权方法一或简单纳入方法二来处理但这没有进一步优化匹配距离。应对策略可以在CEM匹配后的样本基础上再进行一次倾向得分加权或马氏距离匹配进行“精修”。这就是所谓的“混合匹配”策略能结合两种方法的优点。对数据缺失敏感CEM要求匹配变量不能有缺失值否则该观测会被整个排除在匹配过程之外。应对策略在匹配前妥善处理缺失数据如多重插补。3.3 实战中的高频“坑”与解决方案坑1忽略“共同支撑”假设的检查。CEM虽然自动剔除了不重叠的部分但你仍需审视被剔除的样本特征。如果被剔除的处理组样本具有某种极端特征如年龄极大、收入极高那么你的ATT估计结果可能只适用于有共同支撑的那部分群体外推性受限。解决方案匹配后描述性统计一下被cem_matched标记为0的样本特征并在报告中讨论结果的适用范围。坑2粗化方案随意缺乏理由。直接使用软件默认或等距分组然后不报告敏感性测试。这是审稿人最容易攻击的点。解决方案在论文的方法部分必须详细说明每个连续变量粗化的依据基于理论、文献或数据分布并在附录中展示敏感性分析结果。坑3匹配后直接做t检验忽略方差估计问题。匹配后的样本不再是独立同分布的随机样本个体之间可能存在相关性因为权重调整或来自同一个“箱”。直接使用传统的t检验会低估标准误导致置信区间过窄。解决方案如上文所示在回归中一定要使用稳健标准误robust或聚类标准误如果数据结构有聚类特征如来自同一家庭、同一学校。坑4误用CEM权重。cem_weights是频率权重在Stata中应使用[iweight]而不是[pweight]或[fweight]。用错权重会导致估计错误。解决方案明确理解iweight在回归中的含义是用于加权最小二乘它会影响标准误的计算方式需配合robust选项。4. 进阶应用CEM与其他方法的结合与扩展当你熟练掌握了基础CEM后可以尝试以下进阶玩法以应对更复杂的研究场景。4.1 CEM与加权回归模型的结合如前所述最标准的流程就是CEM匹配后使用cem_weights进行加权回归。但你并不局限于线性回归。对于二值结果如是否就业可以使用加权Logit模型logit employed i.treated [iweightcem_weights], robust or对于生存分析数据也可以使用加权的Cox比例风险模型。这种“匹配模型”的框架既通过匹配减少了混淆偏差又通过回归模型进一步控制了匹配后残存的不平衡特别是当粗化较粗时并可以方便地引入匹配未使用的协变量进行调整通常能获得更精确的估计。4.2 多值处理与连续处理的CEM标准的CEM处理的是二值处理变量0/1。但现实中处理可能是多值的如接受培训类型A、类型B、或不接受甚至是连续的如培训时长。CEM也可以扩展应用到这些场景。多值处理思路是将多值处理转化为多个二值处理对比。例如有A、B、C三组你可以分别进行三次CEM匹配A vs (BC) B vs (AC) C vs (AB)。或者进行两两比较A vs B, A vs C, B vs C。每次匹配时将非比较组的样本暂时排除。连续处理这是CEM的一个前沿扩展。核心思想是将连续处理变量也进行“粗化”划分为若干区间。然后在粗化后的处理变量区间和协变量共同定义的“多维箱”中进行匹配。这需要更复杂的设定和解释Stata的cem命令原生不支持可能需要手动编程或使用R的cem包。4.3 使用CEM进行“亚组分析”或“异质性处理效应”探索热搜词中出现了“stata如何做亚组分析”。CEM其实为亚组分析提供了一个非常干净的思路。传统的亚组分析是在全样本回归中加入交互项但这可能受到混淆变量分布不均的影响。一种更稳健的做法是对不同亚组分别进行CEM匹配和效应估计。例如你想研究培训项目对男性和女性的效应是否不同。将样本按性别female分成两个子样本。在男性子样本中对treated和其他协变量进行CEM匹配估计男性群体的ATT。在女性子样本中重复步骤2。比较两个亚组估计的ATT及其置信区间判断差异是否统计显著。这种方法保证了在每个亚组内部处理组和控制组都是可比。比在全样本中跑一个包含交互项的回归往往更令人信服。4.4 匹配质量的数量化评估L1统计量与可视化除了看SMD和图表我们还需要一个整体性的度量。CEM提供的多元L1不平衡统计量就是这个全局指标。它的计算基于所有匹配变量的联合分布。你可以通过以下命令获取更详细的信息cem age edu female, treatment(treated) L1L1选项会输出匹配前后的L1值。你应该看到匹配后的L1值显著下降。如果下降不明显说明你的粗化方案可能太粗或者某些重要变量没有纳入匹配。可视化方面可以尝试绘制匹配前后处理组与控制组在各“组合箱”中样本分布的“镜像图”。虽然Stata没有内置命令但可以通过交叉表和数据整理用graph bar命令近似实现直观展示哪些类型的个体被成功匹配哪些类型的个体因缺乏对应对象而被舍弃。5. 总结回顾与核心要点提炼走完了CEM从理论到实战的全过程最后我们来梳理一下最关键的行动要点和思维框架。掌握这些你就能在大多数实证研究中自信地运用CEM了。首先在方法选择上问自己两个问题我的核心混淆变量是否易于定义和测量如果是且你有较强的先验知识知道如何对它们进行有意义的分类那么CEM是一个非常好的起点。我是否对倾向得分模型的设定心存疑虑如果担心逻辑回归模型可能误设那么CEM的模型无关特性就是一大优势。其次在操作流程上牢记以下步骤清单理论准备基于文献确定核心协变量集。数据预处理处理缺失值检查异常值。制定粗化方案最关键一步为每个连续变量制定有理论或现实意义的区间划分。记录下所有划分依据。执行CEM匹配在Stata中使用cem命令指定处理变量和粗化方案。仔细阅读输出关注匹配样本量、L1统计量。诊断平衡性计算并对比匹配前后各变量的标准化均值差SMD绘制密度图。确保匹配后平衡性显著改善SMD0.1。估计处理效应使用CEM生成的权重cem_weights进行加权回归reg ... [iweightcem_weights], robust得到ATT估计。进行敏感性分析尝试2-3种不同的、合理的粗化方案观察ATT估计值是否稳定。将结果报告在附录中。报告与解释在论文中详细说明粗化标准、匹配后样本损失情况、平衡性诊断结果并谨慎解释ATT的适用范围基于共同支撑区域。最后关于CEM的定位我的个人体会是它不是一个要取代PSM或其他匹配方法的“终极武器”而是一个极其有价值的“补充武器”和“基准检验工具”。它的透明性和对模型假设的低依赖使其成为评估因果推断结果稳健性的利器。我现在的习惯是对于重要的分析同时用PSM和CEM做一遍。如果两种方法从不同原理出发却得到了相似的结论那么这个结论的稳健性就大大增强了。如果结果差异很大那就需要深入挖掘原因是PSM模型设定有问题还是CEM的粗化方案不合理抑或是数据本身存在难以克服的选择偏差这个过程本身就是深化你对研究问题和数据理解的过程。CEM把匹配这个“黑箱”打开了一扇窗让你能更清楚地看到样本是如何被筛选和比较的。这种控制感和透明度正是严谨的实证研究中最宝贵的东西。希望这篇超详细的指南能帮你把这扇窗开得更大看得更清。