前置条件与学习依赖 / PREREQUISITES
① 数学 / 统计基础
中介效应分析(Baron–Kenny 三步、Sobel 检验、Bootstrap 中介)、因果图 DAG(前门 / 后门准则、混淆 vs 中介)、调节效应(交互项)。
② 经济学理论前置
应用微观经济学的机制思维;理解“统计中介 ≠ 因果机制”这一认识论要点。
③ 软件 / 计算前置
Stata 17+(外部命令:sgmediationmediationboottestestoutreghdfe)。
④ 站内前置页面
先学 04 基准回归,主效应跑稳后再谈渠道。
⑤ 难度分级
进阶

01 机制检验要回答什么问题

基准回归告诉你 X 影响 Y(总效应 $c$),但这只是"是什么"。机制分析(mechanism / channel analysis)要回答的是"怎么影响、通过什么路径影响":政策 X 究竟是改变了企业的融资约束($M_1$)、还是改变了劳动配置($M_2$)、还是改变了创新激励($M_3$),进而影响了结果 Y?一个论文如果只报告总效应而不打开"黑箱"(black box),审稿人往往会问:你怎么知道是这个机制,而不是那个机制在起作用?

机制分析有两套互补的语言:中介分析(mediation)关心"X 通过 M 传递到 Y 的那部分效应有多大";渠道/调节分析(channel / moderation)关心"X 对 Y 的效应在什么条件下更强或更弱"。前者把 M 当作被 X 改变的中间变量,后者把某个环境变量 Z 当作放大或抑制 X→Y 的"开关"。两者都需要经济学理论先验,而不是跑一堆变量谁显著就用谁。

📌 核心提醒

经济学顶刊越来越强调:机制检验必须由理论先验驱动。先从模型推导出"X 应该通过 M 影响 Y",再用数据检验;而不是把所有能想到的变量都当中介跑一遍,谁显著写谁。后者是典型的 specification search。

02 中介效应模型的形式化

经典中介模型由三个方程构成。设 $X$ 为核心解释变量(处理),$M$ 为中介变量,$Y$ 为被解释变量:

Equation (1) — a 路径:X → M
$$M = aX + \varepsilon_1$$
Equation (2) — b / c' 路径:X + M → Y
$$Y = c'X + bM + \varepsilon_2$$
Equation (3) — 总效应(不纳入 M)
$$Y = cX + \varepsilon_0$$

系数含义:$a$ 是 X 对中介 M 的效应(a path);$b$ 是控制 X 后 M 对 Y 的效应(b path);$c'$ 是加入 M 后 X 对 Y 的直接效应(direct effect);$c$ 是 X 对 Y 的总效应(total effect)。间接效应(indirect effect)= 经由 M 传递的部分 = $a \times b$。在线性、无交互、无遗漏的假设下,总效应满足分解:

Equation (4) — 效应分解
$$c = c' + a \times b$$

即"总效应 = 直接效应 + 间接效应"。中介效应占总效应的比例为 $ab/c$,常被报告为"X 经由 M 解释了百分之多少的总效应"。

03 Baron-Kenny 三步法与 Sobel 检验

Baron & Kenny (1986) 三步法是最经典的中介检验流程,依次估计三条路径:

第一步:总效应 c
回归 $Y = cX + \varepsilon_0$,要求 $c$ 显著(X 确实影响 Y)。这一步失败,说明总效应都不存在,谈中介无意义。
第二步:a 路径
回归 $M = aX + \varepsilon_1$,要求 $a$ 显著(X 确实改变了中介 M)。
第三步:同时纳入 X 与 M
回归 $Y = c'X + bM + \varepsilon_2$。若 $b$ 显著且 $|c'|<|c|$(直接效应缩小),则存在部分中介;若 $c'$ 变得不显著,则称完全中介。

但三步法只看系数显著性,并没有直接检验"间接效应 $a\times b$ 是否显著不为零"。为此 Sobel 检验构造间接效应 $a\hat{b}$ 的近似标准误:

Equation (5) — Sobel 统计量
$$Z_{Sobel}=\frac{\hat{a}\hat{b}}{\sqrt{\hat{b}^2 s_a^2+\hat{a}^2 s_b^2}}$$

其中 $s_a, s_b$ 分别是 $\hat{a}, \hat{b}$ 的标准误。在大样本下 $Z_{Sobel}$ 近似服从正态分布,$|Z|>1.96$ 即认为间接效应在 5% 水平显著。

⚠️ Sobel 检验的局限

Sobel 检验假设间接效应 $a\hat{b}$ 服从正态分布,但 $a\times b$ 是两个正态变量的乘积,分布往往有偏(尤其小样本时)。因此现代做法优先使用 Bootstrap 中介(见下节),它不依赖正态假设。

04 Bootstrap 中介与因果中介分析

Bootstrap 中介(Preacher & Hayes 系列)通过有放回地重复抽样,直接构造间接效应 $a\times b$ 的经验分布与置信区间,不需要正态假设,是当前社科与实证经济学更推荐的做法。若 95% Bootstrap 置信区间不包含 0,则间接效应显著。

更进一步,因果中介分析(Causal Mediation Analysis, Imai, Keele & Tingley 2010)把中介问题提升到潜在结果框架,区分出:

  • 平均因果中介效应 ACME(Average Causal Mediation Effect):经由 M 传递的因果部分;
  • 平均直接效应 ADE(Average Direct Effect):不经过 M 的部分;
  • 总效应 TE = ACME + ADE

Imai 等人指出,即便 X 是随机分配的,M 与 Y 之间仍可能存在未观测混杂(因为 M 通常不是随机分配的),所以传统中介只能给出"关联上的中介",要上升到"因果中介"需要序列可忽略性(sequential ignorability)假设,并做敏感度分析。这一点是本节最重要的诚实立场。

Stata · 中介三步 / Sobel / Bootstrap / Imai 因果中介
* ===== 04.1 Baron-Kenny 三步法 =====
* 第一步:总效应 c
reg Y X $Xctrl, vce(cluster id)
est store step1

* 第二步:a 路径 X -> M
reg M X $Xctrl, vce(cluster id)
est store step2
scalar a = _b[X]

* 第三步:同时纳入 X 与 M
reg Y X M $Xctrl, vce(cluster id)
est store step3
scalar bp = _b[M]
scalar cp = _b[X]
esttab step1 step2 step3, se star(* 0.1 ** 0.05 *** 0.01)

* ===== 04.2 Sobel 检验(手工)=====
scalar sa = _se[X]          // a 的标准误(第二步回归后)
* 注意:bp、cp 来自第三步;重新跑第二步取 se
reg M X $Xctrl, vce(cluster id)
scalar a=_b[X], sa=_se[X]
reg Y X M $Xctrl, vce(cluster id)
scalar b=_b[M], sb=_se[M]
scalar indirect = a*b
scalar se_ab   = sqrt(b^2*sa^2 + a^2*sb^2)
scalar Z_sobel = indirect/se_ab
disp "间接效应 a*b = " indirect
disp "Sobel Z = " Z_sobel

* ===== 04.3 Bootstrap 中介(推荐,不依赖正态)=====
* ssc install mediation  (或使用 Hayes 的 medeff/medsem)
* 方法A:medeff 做 Bootstrap 间接效应
medeff (regress M X $Xctrl) (regress Y X M $Xctrl), treat(X) mediate(M) sims(1000)

* 方法B:连乘间接效应 + Bootstrap 置信区间
bootstrap r(indirect), reps(1000) seed(20240101): ///
    mediation_boot, xvar(X) mvar(M) yvar(Y)

* ===== 04.4 Imai 因果中介分析 + 敏感度分析 =====
* 安装:net install st0289.pkg (或 ssc install med4way)
* 回归中介模型与结果模型,估计 ACME / ADE / TE
regress M X $Xctrl
est store m_mod
regress Y X M $Xctrl
est store y_mod
* 输出 ACME(间接)、ADE(直接)、总效应及其比例
mediation, treat(X) mediate(M) sims(1000)
* 敏感度分析:rho 取何值时间接效应不再显著
medsens, rho(-0.5(0.05)0.5)

05 渠道检验:分组回归与交互项

当中介变量难以直接观测、或理论上更适合用"效应差异"来识别渠道时,常用渠道检验(channel test)而非中介模型。逻辑是:如果 X 通过某个渠道 M 起作用,那么在"渠道更容易被激活"的子样本里,X→Y 的效应应当显著更强

两种做法:

(1) 分组回归(split-sample):按渠道强度把样本分成"强渠道组"与"弱渠道组",分别估计 X→Y,比较两组系数大小。例如检验"融资约束渠道",就按企业融资约束高低分两组:高融资约束组里政策效应应更大。

(2) 交互项法:直接加入 X 与渠道变量 M 的交互项,系数为正则说明渠道放大了效应。交互项模型见下节。

Stata · 渠道检验:分组回归 + 交互项
* ===== 05.1 渠道检验:分组回归 =====
* 按融资约束(SA指数)中位数分高/低两组
xtile SA_group = SA_index, nq(2)

reghdfe Y X $Xctrl if SA_group==1, absorb(id year) vce(cluster id)  // 低约束组
est store ch_low
reghdfe Y X $Xctrl if SA_group==2, absorb(id year) vce(cluster id)  // 高约束组
est store ch_high
esttab ch_low ch_high, keep(X) se star(* 0.1 ** 0.05 *** 0.01) ///
    mtitles("低融资约束" "高融资约束")

* ===== 05.2 渠道检验:交互项法 =====
gen X_by_channel = X * SA_index
reghdfe Y X SA_index X_by_channel $Xctrl, absorb(id year) vce(cluster id)
* 交互项 X_by_channel 显著 => 渠道强度调节了 X 的效应

06 调节效应 Moderation

调节效应(moderation)与中介不同:调节变量 $Z$ 不被 X 影响,而是影响 X→Y 这条关系的强弱或方向。模型为:

Equation (6) — 调节效应 / 交互项
$$Y=\beta_0+\beta_1 X+\beta_2\,X\times Z+\beta_3 Z+\varepsilon$$

其中 $\beta_1$ 是 $Z=0$ 时 X 的效应;$\beta_2$ 是 Z 每增加一单位、X→Y 斜率的变化(调节效应);$X$ 对 $Y$ 的总偏效应为 $\partial Y/\partial X=\beta_1+\beta_2 Z$。报告调节效应时,常画简单斜率图(simple slope plot):在 Z 取 ±1 标准差时画出 X→Y 的斜率及其置信区间。

Stata · 调节效应与简单斜率图
* ===== 06.1 调节效应:交互项(连续Z)=====
* 对连续Z中心化,减少共线性
center SA_index, prefix(c_)
gen X_x_cZ = X * c_SA_index
reghdfe Y X c_SA_index X_x_cZ $Xctrl, absorb(id year) vce(cluster id)

* ===== 06.2 画简单斜率图(Z = 均值±1SD)=====
* ssc install marginsplot
margins, dydx(X) at(c_SA_index=(-1 0 1))   // 标准化Z取 -1,0,+1
marginsplot, title("Moderation: effect of X at different Z") ///
    yline(0)

* ===== 06.3 分组虚拟变量 D 的交互(异质性调节)=====
gen XxD = X * D
reghdfe Y X D XxD $Xctrl, absorb(id year) vce(cluster id)

07 机制变量的选取原则

机制变量 M 的好坏,直接决定机制检验是否可信。选取时应遵循以下原则:

  1. 理论先验优先:M 必须来自正式模型或文献,能说清"为什么 X 会先改变 M、M 再改变 Y"。不能因为某个变量恰好显著就把它封为机制。
  2. 时序正确:M 必须发生在 X 之后、Y 之前,即 $X \to M \to Y$ 的时间顺序成立。用同期甚至前置变量当中介,逻辑上不成立。
  3. 避免"坏控制"(bad control):M 不能是 X 的结果同时又直接决定 Y 的" collider ",否则把它放进回归会引入偏误。
  4. 测量可信:M 要有公认的度量(如用 SA 指数、KZ 指数度量融资约束),并在稳健性中换一个度量。
  5. 与总效应方向一致:若 a 路径与 b 路径符号相反,间接效应可能为负(遮掩效应 suppression effect),需要特别解释,不能简单说"存在中介"。

08 逐步流程

Step 1 · 理论先行
从结构模型或文献推导出 X 应当经由哪个 M 影响 Y,写清 $X\to M\to Y$ 的经济学故事,并确认时序。
Step 2 · 跑 Baron-Kenny 三步
依次估计 c、a、b/c' 三条路径,看总效应、a 路径是否显著,直接效应是否缩小。
Step 3 · 用 Sobel + Bootstrap 检验间接效应
先报 Sobel Z 值,再用 Bootstrap(1000 次)构造 $a\times b$ 的置信区间;后者更可信。
Step 4 · 升级到因果中介(可选但推荐)
用 Imai et al. 的方法估计 ACME/ADE/TE,并做敏感度分析(medsens),报告序列可忽略性在多大程度上会被违反。
Step 5 · 辅以渠道检验与调节效应
用分组回归或交互项,从"效应在何处更强"的侧面交叉印证机制,并画简单斜率图。
Step 6 · 诚实讨论局限
明确写出:本检验提供的是"与该机制一致的证据",而非"证明了该机制";M 与 Y 间的未观测混杂是主要威胁。

09 论文案例与常见误区

English · Psychological Methods / 方法论
Identification and Inference for Causal Mediation Analysis
Imai, Keele & Yamamoto (2010), Psychological Methods
把中介分析纳入潜在结果框架,提出 ACME/ADE/TE 的分解与序列可忽略性假设,并给出敏感度分析工具。是"因果中介"区别于"统计中介"的方法论奠基之作,也是本页推荐用 Imai 框架而非仅用 Baron-Kenny 的原因。
English · 方法论经典
The Moderator-Mediator Variable Distinction in Social Psychological Research
Baron & Kenny (1986), Journal of Personality and Social Psychology
三步法的原始出处,至今仍是中文实证论文最常引用的中介检验流程。论文清晰区分了 mediator(传递 X→Y)与 moderator(改变 X→Y 强弱)两类变量,是理解"机制 vs 调节"概念边界的必读。
中文 · 经济研究
数字经济、融资约束与企业创新(机制检验范例)
《经济研究》近年数字经济与企业创新类实证论文(机制章节范式)
这类论文普遍采用"基准总效应 → 中介模型(融资约束作为 M)→ 分组渠道检验"的三段式:先证明数字经济提升创新,再用融资约束做中介变量跑三步法与 Sobel/Bootstrap,最后按企业融资约束高低分组做渠道检验。是中文顶刊机制写作的标准范式。
中文 · 管理世界
环境规制与企业全要素生产率(波特假说的机制检验)
《管理世界》环境规制/波特假说类实证论文(机制章节范式)
围绕"波特假说",论文常把研发投入、技术创新作为中介 M,用三步法检验"环境规制 → 创新 → TFP",再按行业污染程度、产权性质做调节与渠道分析,展示了如何把中介与异质性调节结合起来讲故事。

常见误区

❌ 误区 1:把"统计中介"等同于"因果机制"

这是机制分析最大的误区。Baron-Kenny 三步法只是相关性链条:M 与 Y 之间很可能存在未观测混杂(M 不是随机分配的)。即使 a、b 都显著,也不能断言"X 通过 M 因果地影响了 Y"。正确表述是"数据与 X→M→Y 这一机制一致",并尽量用 Imai 因果中介 + 敏感度分析来加固。

❌ 误区 2:M 时序错乱或沦为"坏控制"

用与 X 同期、甚至早于 X 的变量当中介,逻辑链不成立;或者把本身由 Y 反向决定的变量放进 Y 方程,制造 collider 偏误。机制变量必须满足 X→M→Y 的真实时间顺序。

⚠️ 误区 3:把所有变量都当中介跑一遍

在几十个候选变量里挑显著的当机制,本质是 p-hacking。机制变量必须由理论先验限定在少数几个,且换度量后结论要一致。

⚠️ 误区 4:只报告三步法,不报告间接效应检验

看 a、b 分别显著并不能直接证明 a×b 显著。必须同时报告 Sobel Z 或 Bootstrap 置信区间,否则"中介效应"的统计依据是不完整的。

⚠️ 误区 5:调节效应只看交互项系数不画简单斜率图

调节效应 $\beta_3$ 显著只说明"X→Y 关系随 Z 变化",但读者需要知道在 Z 的典型取值下 X→Y 的斜率与置信区间。必须用 margins, at(Z=(p10 p50 p90)) + marginsplot 画简单斜率图。

❌ 误区 6:把被处理 D 影响的变量放进控制变量(bad control)

Angrist-Pischke (2009) 警告:如果 M 本身由 D 决定,把 M 同时放进 Y 方程会把 D 的效应"稀释"成直接效应,总效应被低估。机制分析中 M 是后定变量(post-treatment),不能作为控制变量进入基准回归——它只能在专门的中介分析中作为 M 出现。

进阶资料

  • Imai, Keele & Yamamoto (2010), Psychological Methods — 因果中介与敏感度分析。
  • Baron & Kenny (1986), JPSP — 中介与调节的概念区分。
  • Preacher & Hayes (2008) — Bootstrap 间接效应的非参数做法。
  • Stata 命令:medeffmedsensmediationmargins / marginsplot