夜雨聆风学习资料网

ARTICLE · 1182981

DID因果中介分析来了, 还有了现成软件程序包, 试试看.

DID因果中介分析来了, 还有了现成软件程序包, 试试看.
凡是搞计量经济的,都关注这个号了
邮箱:econometrics666@126.com
所有计量经济圈方法论丛的code程序, 宏微观数据库和各种软件都放在社群里.欢迎到计量经济圈社群交流访问.

接着“1.实用! 把经管科研全流程, 做成了复制即用的《经管科研AI提示词库手册》.2.实用! 做了一本可复制的《经管科研AI工作流手册》, 把AI嵌入经管等社科科研全流程操作..3.实用! 把经管社科因果推断全流程做成了复制即用的《面向Agent时代的因果推断方法手册》4.实用! 做了本最全《中国社会科学研究数据手册》, 将经管社科研究349个数据整理成手册. 5.实用! 做了本《社会科学研究Agent skills手册》, 研究问题,文献,数据,分析,复现,写作全流程.

一篇实证论文做完基准回归之后,下一步往往是探讨可能的影响机制。政策为什么会显著影响结果变量?研究者通常会找一个或几个中介变量,依次估计三个回归,即处理变量对结果变量的影响、处理变量对中介变量的影响,以及处理变量和中介变量共同对结果变量的影响。

三张表跑完,一条机制就可以写进论文了。

这种三步法有多普遍?江艇(2022)的统计显示,在151篇简约型因果推断研究中,有85篇做了中介效应分析,占56.3%。他指出,逐步检验法在这类研究中应用广泛,但问题的关键出在第三步回归。这一步放入的中介变量很可能是内生的,相应的系数因此难以作出因果解释。

为了解决这个问题,计量经济学家做了很多尝试,比如,二步法、因果中介效应分析等。2026年,Martin Huber团队更新了R包causalweight,在1.1.6版中新增了didmedDML和didmedDMLpanel两个函数,尝试在双重差分框架内识别总效应、自然直接效应和自然间接效应。

还在为机制检验发愁的研究者,值得留意这次更新。相关文章,见《Difference-in-differences for mediation analysis using double machine learning》

先来看看,三步法用于机制分析究竟卡在了哪里?

常见的逐步法大致包括三步回归:第一步检验处理变量D是否影响结果变量Y,第二步检验D是否影响中介变量M,第三步把D和M同时放入结果方程,检验M的系数,同时观察D的系数是否变小。

然而,问题主要出在第三步。中介变量M发生在处理变量D之后,如果有些因素同时影响M和Y,又没有得到恰当处理,M的系数就会产生偏误。即便D是随机分配的,一旦把处理后的M放进回归,也可能在D与不可观测因素之间打开一条非因果的关联路径,使D的估计系数出现选择偏误。

因此,要把M的回归系数解读为中介变量对结果变量的因果作用,通常需要很强的额外假设。至于把D剩下的系数直接称为直接效应,同样缺乏充分的依据。

这些问题需要结合具体的混杂结构来处理。固定效应可以吸收某些形式的、不随时间变化的遗漏因素,加入恰当的控制变量也可能减轻混杂干扰。但仅仅加入固定效应、调整聚类标准误或者更换控制变量,仍不足以让中介效应获得因果解释。聚类标准误尤其如此,它调整的是统计推断,修正不了识别上的偏误。

针对简约型因果推断研究,常见的实务建议是重点识别D对Y和D对M的因果效应,同时优先选择那些对Y的影响已有较强理论和文献支持的中介变量。如果M对Y的作用本身仍有争议,仅检验D对M的影响,就很难形成有说服力的渠道论证。

这种做法通常被称为两步法,它能为机制分析提供一些线索,但无法据此识别自然直接效应和自然间接效应。

因果中介分析试图更进一步。

R包causalweight中的didmedDML()和didmedDMLpanel(),分别适用于重复截面数据和面板数据,用于估计处理组在处理后时期的总效应、自然直接效应和自然间接效应。

记和为个体接受与未接受处理时的潜在中介水平,为将处理状态设为、中介水平设为时,该个体在处理后时期的潜在结果。

这两个函数采用的效应分解如下,

效应类型
个体层面的反事实差异
含义
总效应
比较接受与未接受处理两种情形,允许中介随处理状态改变。
自然直接效应
将中介固定在该个体接受处理时会达到的水平,只改变处理状态。
自然间接效应
将处理固定为未处理状态,只把中介从未接受处理时的潜在水平,变为接受处理时的潜在水平。

表中定义的是个体层面的反事实差异,两个R函数估计的则是这些差异在目标处理组中的平均值。didmedDML()的目标群体是处理后时期的处理组,即对D=1且T=1的样本取平均;didmedDMLpanel()的目标群体是面板数据中的处理组个体,即对D=1的个体取平均。两者考察的都是处理后时期的效应。

以处理组为目标群体,不等于估计时只用处理组的数据。两个函数仍然需要利用处理组和控制组在处理前后的信息,在相应的识别假设下,通过DID与双重机器学习估计这些平均效应。

此前,Farbmacher、Huber等已将因果中介分析与双重机器学习相结合,对应于causalweight软件包中的medDML函数,相关论文发表于《The Econometrics Journal》2022年。新版本则更进一步,把中介分析引入了双重差分(DID)设计。

两个新函数分别做什么?

causalweight 1.1.6于2026年9月发布,作者包括Hugo Bodory、Martin Huber和Jannis Kueck。官方参考手册(https://cran.r-project.org/web/packages/causalweight/causalweight.pdf)介绍了两个新增函数,didmedDML()适用于重复截面数据,didmedDMLpanel()适用于面板数据。两者都用于估计处理组在处理后时期的总效应、自然直接效应和自然间接效应。

对于重复截面数据,前后两期可以调查不同个体,基本调用方式为,

didmedDML(  y = y,  d = d,  t = t,  m = m,  x = x)

其中,y是结果变量,d是处理组标识。函数支持离散处理,默认通过dtreat = 1和dcontrol = 0比较处理取值为1和0的情形。在标准的两组两期设计中,处理组个体在前后两期的d都应取1,控制组个体则都应取0。这里不能用D × post代替D,否则处理组在基期的观测值会被误记为控制组,破坏函数所需的分组结构。t是时期变量,处理前取0,处理后取1。m是该方法所定义的中介状态,既可以是离散变量,也可以是连续变量,官方模拟示例采用的是连续中介变量。x是控制变量,识别条件要求这些变量不受处理变量D和中介变量M的因果影响。函数允许协变量的分布随时间变化,但这不等于可以随意加入受政策影响的处理后变量。

对于同一个体在处理前后均有观测值的面板数据,可以使用,

didmedDMLpanel(  y0 = y0,  y1 = y1,  d  = d,  m  = m,  x  = x)

y0和y1分别是同一个体在处理前、处理后的结果变量。输入数据应整理为每个个体一行,d、m和x与该个体的前后期结果逐行对应。两个函数的输入变量均不能包含缺失值,研究者应先按合理规则处理缺失数据,并记录处理前后的样本变化。

使用时还需要特别核对m的时间含义。论文将M定义为处理后的中介状态,并另用表示处理前的中介值。重复截面的识别式需要按照D、M和X,对基期结果进行条件比较。因此,基期观测中的m究竟提供了什么信息,必须与论文中的定义对应。

双重机器学习在其中做了什么?

这两个函数需要先估计多组条件均值和倾向得分。条件均值描述特定条件下结果变量的平均水平,倾向得分刻画进入相应组别或时期的概率。这些辅助量的估计质量会影响最终的效应估计。双重稳健结构允许特定的一部分辅助模型设定有误,但仍需满足相应条件,不能理解为无论模型怎样组合,结果都可靠。

函数支持使用lasso、随机森林、XGBoost、支持向量机、集成学习或参数模型估计这些辅助量。双重机器学习将Neyman正交得分与k折交叉拟合结合起来。在满足相应正则条件和收敛速度要求时,正交性使辅助量的小幅估计误差对最终效应估计的一阶影响消失,从而减轻这类误差带来的干扰。

交叉拟合则将样本分成k折,每次用其中k−1折训练辅助模型,再在留出的1折上计算得分,轮换完成后汇总结果。这样可以减少在同一批观测值上训练模型和估计效应所带来的过拟合偏误。交叉验证通常用于选择模型或调节参数,它与交叉拟合的用途不同。

两个函数的相关默认设置为,

MLmethod = "lasso"trim     = 0.05cluster  = NULLk        = 3

MLmethod指定辅助量的估计方法,默认使用lasso。trim用于剔除特定比较组中相关倾向得分过小的观测值,0.05是概率阈值。cluster用于指定计算聚类稳健标准误的分组变量,默认的NULL表示未指定聚类变量。k控制交叉拟合的折数,默认将样本分为3折。

双重机器学习主要帮助研究者估计辅助量,并减轻特定模型设定和过拟合带来的影响。因果解释仍然依赖研究设计与识别假设。DID在相应平行趋势条件下可以容许某些不可观测差异;如果不可观测因素破坏了这些条件,增加学习器的复杂度也无法消除由此产生的识别偏误。

DID中的因果中介分析识别假设比普通DID更强。

普通DID中最为人熟知的条件是平行趋势,即如果处理没有发生,处理组与控制组的平均结果应当沿着相同的趋势变化。

DID中介分析则需要更细致的反事实比较。didmedDML和didmedDMLpanel所依赖的识别条件,包括在处理与中介状态下成立的条件平行趋势、用于识别总效应的处理组间条件平行趋势,以及无预期效应、共同支撑和协变量外生性等。此外,论文还假定个体的潜在结果不受其他个体处理状态和中介状态的影响。

这意味着,研究者不仅要论证在政策未实施时处理组与控制组的结果趋势为何可比,还要论证按中介状态进一步比较之后,相应的反事实趋势同样可比。仅仅证明通常意义上的处理前趋势相近,还不足以支撑自然效应的分解。

共同支撑假设同样关键。对于目标处理组中的中介变量与协变量组合,相应的比较组中需要有足够的数据支持。倾向得分修剪可以缓解极端权重带来的数值问题,但无法凭空补出缺失的可比样本,也不能保证修剪后识别条件依然成立。修剪了多少样本、发生在哪些组、对结果有何影响,都应当检查并如实报告。

一个官方模拟的例子。

参考手册给出了一个重复截面数据的模拟。按该数据生成过程,真实自然直接效应为1,自然间接效应为0.5,总效应为1.5。

下面在官方例子的基础上补充随机种子、版本检查和结果提取。

install.packages("causalweight")library(causalweight)packageVersion("causalweight")stopifnot(packageVersion("causalweight") >= "1.1.6")set.seed(123)n <- 4000t <- rbinom(n, 1, 0.5)u <- rnorm(n)x <- 0.5 * t + rnorm(n)d <- 1 * (x + 0.5 * u + rnorm(n) > 0)m <- x + 0.5 * d + rnorm(n)y <- x + (1 + d + m) * t + u + rnorm(n)fit <- didmedDML(  y = y,  d = d,  t = t,  m = m,  x = x)fit$efffit$sefit$tvalfit$pvalfit[["trimmed_obs"]]

例子中的u同时影响个体是否进入处理组以及结果变量的水平,但它对前后两期结果的影响保持不变,因此可以在前后差分中被消去。这个例子说明,DID允许存在这类不随时间变化的不可观测混杂因素。研究者需要论证的是,不可观测因素是否会破坏相应的平行趋势条件,而无须一概要求所有共同原因都能被观测到。

函数返回5类主要结果。eff依次为总效应、自然直接效应和自然间接效应的估计值;se是标准误;tval是估计值除以标准误得到的统计量;pval是双侧p值,1.1.6源码用标准正态分布计算;trimmed_obs是因相关倾向得分过小而被修剪的观测数。

有4点需要注意。

1. 当前函数主要面向两期DID。

didmedDML要求时期变量在处理前取0、处理后取1;面板版本则直接输入y0和y1。目前的版本还无法直接用于一般的多期、交错实施或动态事件研究设计。

需要注意的是,论文讨论的范围比函数更广,不要以为这两个函数已经涵盖了论文中的全部扩展。

如果研究采用的是分期处理或多期政策冲击,不能简单地把数据压缩成前后两期,就宣称解决了异质性处理效应问题。研究者需要重新考虑估计对象是什么,以及这种数据转换是否合理。

2. 平行趋势更难检验。

即使在普通DID中,处理前趋势相近,也不足以证明处理后的反事实平行趋势成立。中介分析还需要比较不同处理状态与中介状态组合下的反事实趋势,这些条件更难直接用观测数据来验证。

多期的处理前数据和有针对性的安慰剂检验,可以为相关假设提供辅助证据,但无法验证中介分析所需的全部识别条件。此外,更换中介变量通常意味着改变了所考察的作用渠道,研究者需要重新说明估计参数的含义,同时论证相应的识别假设是否合理。

3. 说明DID能够处理哪些不可观测差异。

机器学习和DID承担的任务需要分清。机器学习帮助研究者利用已观测变量估计条件均值和倾向得分,无法自动消除不可观测的混杂因素。DID则是在相应的平行趋势条件下,允许处理组与控制组之间存在某些不随时间变化的结果水平差异,再通过差分把这些差异消去。

如果遗漏因素使两组在未接受处理时也呈现不同的结果趋势,或者使按中介状态划分后的比较不再满足所需的条件平行趋势,效应估计的因果解释就可能失去依据。这时,即使换用更复杂的机器学习模型,也无法弥补识别条件的缺失。

1.最全! 我国适合"断点回归"的政策都整理出来了, 让你有做不完的RDD断点政策评2.最全! 我国适合"合成控制法"的政策都整理出来了, 让你有做不完的SCM政策评估3.最全106页! 我国适合DID双重差分的政策都整理出来了, 让你有做不完的DID政策4.最全! 我国适合DDD三重差分的政策都整理出来了, 让你有做不完的DDD政策论5.最全! 国内哪些政策适合用队列DID, 模糊断点RDD, 双重机器学习DML进行评估?6.最全! 国内哪些政策情景适合用Bartik IV, 空间DID, 模糊DID方法进行评估?

7.最全! 我国各种X的工具变量IV都整理出来了, 8.最全! 把CFPS研究过的全部自变量X与因变量Y做成数据库了, 全网第一份CFPS选题数据库.9.最全! 把CHFS研究过的全部自变量X与因变量Y做成数据库了, 第一份CHFS金融选题数据库.10.中国健康与养老CHARLS选题库, X与Y的研究组合助你研究老年人问题.11.把CSMAR研究过的自变量X与因变量Y做成数据库了, 第一份公司与金融微观选题数据库.12.三农微观数据选题库, 从此AI轻易助你选择经过检验了的X与Y的不同组合选题.13.CHIP和CEPS选题数据库, 轻松助你选择经过检验了的X与Y的不同组合家庭收入和教育选题.

下面这些短链接文章属于合集,可以收藏起来阅读,不然以后都找不到了。

8年,计量经济圈近2500篇不重类计量文章,

可直接在公众号菜单栏搜索任何计量相关问题,

Econometrics Circle

数据系列:空间矩阵 | 工企数据 | PM2.5 | 市场化指数 | CO2数据 |  夜间灯光| 官员方言 | 微观数据| 内部数据
计量系列:匹配方法 | 内生性 | 工具变量 | DID | 面板数据 | 常用TOOL | 中介调节 | 时间序列 | RDD断点 | 合成控制 | 200篇合辑 | 因果识别 | 社会网络 | 空间DID
数据处理:Stata | R | Python | 缺失值 | CHIP/ CHNS/CHARLS/CFPS/CGSS等 |
干货系列:能源环境 | 效率研究 | 空间计量 | 国际经贸 | 计量软件 | 商科研究 | 机器学习 | SSCI | CSSCI | SSCI查询 | 名家经验
计量经济圈组织了一个计量社群,有如下特征:热情互助最多、前沿趋势最多、社科资料最多、社科数据最多、科研牛人最多、海外名校最多。因此,建议积极进取和有强烈研习激情的中青年学者到社群交流探讨,始终坚信优秀是通过感染优秀而互相成就彼此的。

相关学习资料