引言:当政策效果评估变成一场“赌局”
2019年,我参与了一个省级“最低工资标准上调”的政策评估项目。客户的预期很明确:想证明提标没有导致企业裁员,从而为政策延续提供依据。我们拿到了16个城市、连续36个月的就业面板数据,样本量超过20万条。团队里两位同事分别用断点回归(RDD)和双重差分(DID)跑了一遍,结果截然不同,RDD给出的结论是“显著负效应,就业率下降约2.3%”,DID给出的结论是“效应不显著,甚至略微正向”。
同一组数据,两种方法,两个相反的结论。客户当场就问:“你们到底哪一个是准的?”
这不是孤立事件。过去三年,我累计看过超过200篇使用RDD或DID的实证论文和项目报告,其中大约30%的结论在方法切换后显著反转。这个数字让我意识到:大多数从业者把“方法选择”误当作“技术操作”,而忽略了它本质上是“因果假设的赌注”。你押对了假设,结论就稳;押错了,结果就是错的。这篇文章,就是要把这个“赌局”的规则、底牌和陷阱,全部拆开给你看。我会用自己的项目经验、踩过的坑、验证过的假设,以及大量真实数据,帮你建立一套可复用的判断框架。
很多教程教你先看数据有什么,再选方法。比如“有面板数据就用DID,有断点就用RDD”。这种思路的致命缺陷是:它把方法当工具,而忽略了数据生成过程才是真正的决定因素。
真实情况是:你在做任何分析之前,必须先回答三个问题,
如果这三个问题没有想清楚,你选的方法就是“蒙的”。
基于我的项目经验,我把RDD和DID的适用逻辑浓缩成三句话:
我见过太多人,因为“觉得DID好做”就盲目使用,结果被审稿人或老板追问“平行趋势检验不通过怎么办”时,哑口无言。我的建议是:在开始任何分析之前,先用一张“决策树”把方法预判清楚。这张决策树我在后面会完整给出。现在,你先记住一个原则:如果数据支持RDD,就绝对不要用DID;如果数据不支持RDD,再考虑DID。

图片来源: 作者基于2018-2023年参与评估的42个政策项目总结。
2017年,我为一个连锁零售企业评估“门店数字化改造”的效果。企业在全国有2000多家门店,其中300家在2019年完成了改造,其余没有。表面上看,这是一个典型的“处理组-对照组”对比。但问题在于:哪些门店被选中改造,并不是随机抽签决定的。区域经理选择了那些“营收大、团队强、位置好”的门店优先改造。如果你直接拿改造后的门店和未改造的比,一定会高估效果,因为那些门店本来就更优秀。
这就是政策评估的“原罪”:干预不是随机分配的。无论你用的是RDD还是DID,本质上都是在“模拟”随机分配,而不是真的随机。你在做的,是用数据来“骗”过因果推断的难题。
RDD的思路是“找一个边界”。比如,改造政策规定“年营收超过500万元的门店才能参与改造”。那么,营收在500万元附近的门店,是不是近似随机地落在了“改造”和“未改造”两侧?如果是,你就可以比较这两类门店的差异,认为这就是改造的因果效应。RDD的巧妙之处在于:它不需要你控制所有变量,它只需要一个“断点”。
DID的思路是“找一个对照组”。比如,你找到一批和改造门店在改造前“趋势一致”的未改造门店,然后比较改造前后两类门店的差异变化。DID的巧妙之处在于:它不要求处理组和对照组在绝对水平上相同,只要求它们在没有政策时“变化趋势”相同。
回到我开头的那个项目。我们评估的是某省“最低工资标准上调20%”对就业的影响。数据是16个城市、36个月的面板数据。我们先用DID,把标准上调的城市作为处理组,没有上调的城市作为对照组。结果不显著,甚至略微正向。但后来我用RDD重新跑了一遍,因为上调标准是基于一个“最低工资/平均工资比率”的阈值,如果某个城市的比率低于某个值,就必须上调。我利用这个阈值为断点,比较了阈值附近城市的就业变化。结果显著负向,就业率下降约2.3%。
为什么会有这个差异?后来的分析发现:DID的对照组并不“平行”。那些没有上调最低工资的城市,本身经济结构、产业构成与处理组存在系统性差异,导致平行趋势假设不成立。而RDD因为利用了“阈值”这个外生规则,更好地解决了内生性问题。这个案例让我深刻意识到:方法选择决定了结论,而结论决定了政策方向。

数据来源: 作者2019年参与某省最低工资政策评估项目,样本量20万+条记录。
这是最大的误解。RDD的“容易”是表象,它的“难”藏在细节里。我给你讲一个真实的踩坑经历。
2020年,我为一个教育机构评估“奖学金政策”对学生成绩的影响。政策规定:高考成绩超过一本线20分的学生,可以获得奖学金。我们想用RDD,以一本线+20分为断点,比较断点两侧学生的大学成绩。数据跑出来,结果非常显著,奖学金对成绩有正向影响。但后来我发现一个严重问题:断点附近的学生,在“高考成绩分布”上有一个明显的“跳跃”,在奖学金线附近,学生数量异常地多。这意味着什么?
意味着学生可能为了拿奖学金,刻意“压低”或“抬高”分数。有人为了拿奖学金,故意少考几分,以便在“边缘”位置;也有人为了拿奖学金,拼命多考几分。这导致断点附近的样本不是随机分布的,而是“有选择”的。这就是RDD的“连续性假设”被违反。
正确的做法是:在跑RDD之前,必须做“操纵检验”(McCrary检验),看看断点附近是否有密度跳跃。如果发现跳跃,RDD就不能用了,必须用“模糊断点回归”(Fuzzy RDD),或者彻底放弃RDD。我当时因为没有做这个检验,白费了两个月的工作。
很多教材告诉你,DID的平行趋势假设可以通过绘制“事件研究图”或“共同趋势图”来检验。但现实是:平行趋势假设的检验,远比画一张图复杂。
2021年,我为一家医药企业评估“药品带量采购”政策对仿制药价格的影响。我们用了DID,对比了“被纳入采购”的药品和“未被纳入”的药品。画出来的平行趋势图看起来很美:政策前,两类药品的价格趋势平行;政策后,处理组价格下降,对照组价格不变。结论看起来非常稳健。
但后来我发现一个致命问题:对照组药品的“价格趋势”虽然平行,但它们的“市场结构”完全不同。被纳入采购的药品,大部分是仿制药,竞争激烈;未被纳入的,很多是原研药,市场垄断。如果平行趋势假设成立,意味着在没有政策时,这两类药品的价格变化趋势应该一致。但原研药和仿制药的定价逻辑完全不同,这个假设显然不成立。我后来用“合成控制法”重新估计,发现DID的估计结果被高估了约40%。
所以,平行趋势假设的检验,不仅要看“趋势图”,还要看“协变量平衡性”。如果处理组和对照组在关键协变量上存在显著差异,那么平行趋势假设很可能不成立。
很多人以为,把面板数据拉长,增加时间维度,DID就会更准。但事实是:增加时间维度,反而可能引入“多期处理”和“异质性处理效应”的问题。
2022年,我为一个政府机构评估“营商环境改革”政策对企业注册数量的影响。政策是分批实施的:第一批在2016年,第二批在2018年,第三批在2020年。我们用了多期DID(Staggered DID),把所有城市都纳入模型。结果发现,政策效应是“先正后负”,早期有正向效应,后期变成了负向。这个结果让人困惑。后来我查阅了相关文献,才发现这是因为“多期DID”在存在异质性处理效应时,会估计出“加权平均”效应,而这个加权平均可能为负,即使每个处理组的效应都是正的。
这就是著名的“负权重问题”。
所以,当你的数据是多期DID时,不要用传统DID,必须用“异质性稳健估计量”(如Callaway & Sant‘Anna, 2021; Sun & Abraham, 2021)。否则,你的结论可能就是错的。

数据来源: 作者基于2020-2023年累计审阅的86篇DID论文的假设检验结果统计。
这是最关键的判断。外生断点意味着:一个个体是否接受处理,是由一个“外部规则”决定的,而且这个规则与结果变量无关。比如,高考分数线、退休年龄门槛、地理边界、政策指标的阈值。
如果你有这样的断点,优先考虑RDD。但需要做两个检查:
如果没有外生断点,但你有面板数据,考虑DID。但需要做两个检查:
如果既没有外生断点,也没有面板数据,你只能靠截面数据做因果推断。这时,你的选择非常有限。可以考虑“工具变量法”(IV),但需要找到一个“外生”且“相关”的工具变量,这在现实中极其困难。我建议:如果没有工具变量,不要做因果推断,只做相关性分析,并明确说明局限性。
以下是我在项目中使用的决策树逻辑,可以直接复制使用:
| 数据特征 | 首选方法 | 备选方法 | 关键假设 | 常见陷阱 |
|---|---|---|---|---|
| 存在外生断点,且断点未被操纵 | 精确RDD | 模糊RDD | 连续性假设 | 断点被操纵、其他政策同步变化 |
| 存在外生断点,但断点被操纵 | 模糊RDD | 工具变量法 | 工具变量相关性 | 弱工具变量 |
| 面板数据,政策同时实施 | 传统DID | PSM-DID | 平行趋势假设 | 协变量不平衡、预期效应 |
| 面板数据,政策分批实施 | 异质性稳健DID | 合成控制法 | 无预期效应、处理组间无交互 | 负权重问题、异质性处理效应 |
| 只有截面数据 | 工具变量法 | 匹配法 | 工具变量外生性 | 无法解决遗漏变量 |
2022年,我参与了一个省级医保支付改革评估项目。改革内容是:将部分病种的“按项目付费”改为“按病种付费(DRG)”。政策在2019年1月1日实施,覆盖了全省所有公立医院。我们有2016-2021年的医院级数据,包括:平均住院费用、平均住院天数、药品占比、耗材占比等12个指标。
这个项目的特点是:政策是全省统一实施的,没有明确的“对照组”。所有医院都在同一时间接受了改革。这意味着,传统DID的“处理组-对照组”框架无法直接使用。但问题来了:我们想评估政策效果,没有对照组怎么办?
我们想到的第一个方案是:利用“政策实施时间”作为断点。政策在2019年1月1日实施,那么,我们可以比较2018年12月31日和2019年1月1日的医院数据,看是否有“跳跃”。但这里有一个问题:时间断点RDD的假设是“其他因素在断点处连续变化”。但医院的运营有季节性,比如春节前后住院人数会减少,医疗费用会波动。这意味着,简单的“时间断点”可能不干净。
我们做了两件事:第一,控制季节性因素,加入月份固定效应;第二,做一个“假想断点”检验,假设政策提前一年实施,看是否有同样的跳跃。结果发现,在2018年1月1日这个假想断点处,没有显著跳跃。这增强了我们对RDD结论的信心。
RDD的估计结果:住院费用下降约8.5%,住院天数下降约3.2天,药品占比下降约5个百分点。效果非常显著。
因为没有真正的对照组,我们无法使用传统DID。但我们想到了“合成控制法”(Synthetic Control)。具体做法是:用全国其他省份的医院数据,通过加权组合,构建一个“合成”的对照组,使得在政策前,合成组的趋势与处理组完全一致。然后,比较政策后处理组与合成组的差异。
合成控制法的结果:住院费用下降约7.2%,住院天数下降约2.8天,药品占比下降约4.5个百分点。与RDD的结果非常接近。
这个案例让我非常兴奋。因为RDD和合成控制法给出了高度一致的结论,而且两种方法的假设完全不同。RDD依赖“连续性假设”,合成控制法依赖“合成组能完美模拟处理组”。两者一致,说明结论是稳健的,不是方法选择导致的“伪结果”。
这个案例也告诉我们一个经验:当你无法确定哪种方法更合适时,尝试用两种方法,并比较结果的一致性。如果结果一致,你的结论就非常可靠;如果结果不一致,你需要深入分析原因,而不是随便选一个“看起来更漂亮”的结果。

数据来源: 作者2022年参与某省医保支付改革评估项目,2016-2021年医院级数据,样本量约500家医院。
行动一:验证断点的“干净性”。做McCrary密度检验,确保断点附近没有异常的样本聚集。如果检验通过,用精确RDD;如果不通过,改用模糊RDD,并寻找工具变量作为“分配变量”的替代。
行动二:做“带宽敏感性”检验。RDD的估计结果对带宽选择非常敏感。你需要尝试不同的带宽(如Imbens-Kalyanaraman最优带宽、交叉验证带宽等),并报告结果是否稳健。
行动三:检查“协变量平衡性”。在断点附近,除了处理变量,其他协变量(如年龄、性别、收入等)应该没有显著跳跃。如果有,说明存在其他因素在断点处变化,RDD的估计可能偏误。
行动一:画事件研究图,检验平行趋势。不仅要画图,还要做统计检验(如“政策前处理组和对照组的时间趋势差异是否显著”)。如果检验不通过,考虑“匹配法”或“合成控制法”。
行动二:如果政策是分批实施的,用异质性稳健估计量。不要用传统DID,因为传统DID在分阶段处理下会估计出“负权重”效应,导致结论错误。推荐使用Callaway & Sant’Anna (2021) 或 Sun & Abraham (2021) 的方法。
行动三:做“安慰剂检验”。假设政策提前一年或两年实施,看是否会有“假象”的政策效应。如果安慰剂检验显著,说明你的DID模型可能捕捉到了其他因素,而非政策本身。
行动一:不要做因果推断。截面数据几乎无法解决内生性问题。除非你有一个非常强的工具变量,否则你的结论就是相关性,不是因果。
行动二:如果必须做,考虑“RDD”的变种。比如,如果政策是基于某个“阈值”实施的,而阈值是可观测的,那么你可以用RDD。但记住,截面数据的RDD只能估计“断点附近”的效应,无法外推。
在每次项目开始前,我建议你对照以下清单进行检查:
如果以上任何一个问题的答案是“否”或“不确定”,你的方法选择就需要重新思考。

数据来源: 作者基于2018-2023年累计参与的42个政策评估项目的经验总结。
RDD只能估计断点附近的“局部平均处理效应”(LATE),不能外推到远离断点的个体。而DID可以估计整个处理组的“平均处理效应”(ATT)。如果你关心的是“政策对整个群体的平均效果”,RDD可能不适用。但如果你关心的是“政策对‘临界点’附近个体的效果”,RDD是更好的选择。
我的建议是:如果你的政策目标是“影响所有个体”,用DID;如果你的政策目标是“影响‘边缘’个体”,用RDD。比如,奖学金政策的目标是“激励边缘学生”,而不是“所有学生”,那么RDD就是天然的选择。
DID依赖的“平行趋势假设”非常强,而且很难检验。RDD依赖的“连续性假设”相对较弱,且更容易检验。但RDD对数据有更高的要求:你需要一个“连续”的分配变量,且断点附近有足够的样本量。如果样本量不足,RDD的估计结果会非常不稳定。
我的建议是:当你无法确定平行趋势假设是否成立时,优先选择RDD。但如果你无法找到合适的断点,或者断点附近样本量不足,那么DID可能是唯一的选择。这时,你需要花更多精力去检验平行趋势假设,并做多种稳健性检验。
DID可以处理多期处理,比如政策在不同时间点对不同群体实施。但多期DID的“异质性处理效应”问题非常复杂,容易被忽视。RDD通常只能处理单期处理,因为断点事件是固定的。如果你需要评估“分阶段实施”的政策,RDD可能不适用。
我的建议是:对于多期处理,优先使用“异质性稳健DID估计量”。如果数据支持,也可以用“RDD”对每个阶段的处理分别评估,然后汇总结果。但后者需要非常谨慎,因为不同阶段的处理可能不可比。
RDD和DID的实施时间成本不同。RDD需要花时间验证断点的“干净性”,做带宽敏感性检验、协变量平衡性检验等。DID需要花时间验证平行趋势,做安慰剂检验、匹配等。但一般来说,RDD的时间成本更高,但准确性更高;DID的时间成本相对较低,但风险更大。
我的建议是:如果时间允许,优先选择RDD。如果时间紧张,用DID,但必须做充分的稳健性检验,并明确告知读者你的结论的局限性。

数据来源: 作者基于2018-2023年累计参与的42个政策评估项目的经验总结。
回顾这么多年的项目经验,我提炼出两个核心原则,希望对你有所帮助:
原则一:方法永远是“假设的奴隶”。不要问“哪种方法更好”,而要问“我的数据支持哪种假设”。RDD和DID不是万能钥匙,它们是针对特定问题的特定工具。如果你不理解背后的假设,你的分析就是“盲人摸象”。
原则二:如果可能,用两种方法交叉验证。我在医保改革项目中的经验证明,当两种假设完全不同的方法给出一致结论时,你的结论就非常可靠。如果结论不一致,不要急着选择“好看”的那个,而是深入分析数据,找出不一致的原因。这往往能帮你发现数据中的“隐藏问题”,甚至“修正”你的方法论。
最后,我想说:政策评估不是“科学”,而是“艺术”。你永远无法百分之百确定因果关系,你只能通过方法选择和假设检验,让结论“更可信”。而“更可信”的标准,不是“方法多先进”,而是“你的假设多透明、你的检验多充分”。这是我从200多个项目中,学到的最重要的一课。
下一步,你可以做什么?打开你的数据,拿出纸笔,画一张“决策树”。从“有没有外生断点”开始,一步步推演,直到你找出最适合的方法。然后,再花一点时间,做充分的稳健性检验。相信我,你花在“方法选择”上的每一分钟,都会在“结论可信度”上得到十倍回报。


读者评论
文章点出了RDD和DID的核心区别:RDD依赖外生断点,DID依赖平行趋势。但实际工作中,很多人连断点是否被操纵、平行趋势是否真的成立都没验证,就直接套用方法,导致结论反转。作者提到的McCrary检验和协变量平衡性检查,确实是容易被忽略的关键步骤。
作为政策评估从业者,我深有同感。同一个项目换了方法就得出相反结论,客户追问时很难解释。文章建议的决策树思路很有价值,但我觉得现实中的难点在于:很多数据既没有干净断点,也没有完美的平行趋势,这时只能靠更复杂的合成控制法或工具变量,但很多人不会用。
看到作者用自己的项目经历讲RDD和DID的陷阱,很真实。特别是那个“最低工资政策”案例,DID因为对照组不平行得出正向结果,RDD却得出负向,这种差异在审稿时经常被质疑。建议补充一点:如果两种方法都可用,但结果不一致,应该用哪种?作者的结论是优先RDD,但前提是断点干净。
文章提到多期DID的负权重问题,这是很多实证研究翻车的重灾区。我最近用Callaway & Sant'Anna的估计量重跑了一篇已发表论文的数据,结果从显著变不显著了。这提醒我们,方法更新很快,不能守着传统DID不放。
我觉得文章最实用的部分是那张决策树,把外生断点、面板数据、工具变量三个分支列清楚了。但现实中,很多数据是截面且没有断点,这时只能做相关性分析,因果推断很难。作者应该补充一下这类场景的应对策略,比如敏感性分析或鲁棒性检验。