Amber Memo

中介效应:逐步法、Sobel、Bootstrap,以及它们回答不了的问题

中介效应机制分析Stata

国内经管类实证论文里,“机制分析”一节十有八九用的是中介效应模型。这篇把常见做法和它的问题放在一起记。

三个方程

Y=cX+e1Y=cX+e_1
M=aX+e2M=aX+e_2
Y=cX+bM+e3Y=c'X+bM+e_3

cc 是总效应,abab 是经由 MM 的间接效应,cc' 是直接效应。用 OLS、同一个样本、同一组控制变量时,c=c+abc=c'+ab 在样本里精确成立。

逐步法来自 Baron and Kenny(1986):依次检验 ccaabb 是否显著;都显著时再看 cc'cc' 不显著叫“完全中介”,显著叫“部分中介”。温忠麟等(2004)把它整理成国内最常用的检验流程,aabb 至少有一个不显著时补做 Sobel 检验。温忠麟和叶宝娟(2014)的修订流程把补充检验换成了 Bootstrap,并把 ababcc' 符号相反的情形单列为“遮掩效应”。

要记住,这套流程是按各条路径的显著性来下结论的,并不是中介效应存在的充分或必要条件。比如直接效应和间接效应方向相反时,总效应 cc 可能不显著,间接效应却不为零;“遮掩效应”说的就是这种情况。更要紧的是,路径都显著也不代表中介在因果意义上成立,下面的模拟就是例子。

Sobel 与 Bootstrap

Sobel 检验用一阶 delta 方法近似 a^b^\hat a\hat b 的标准误:

z=a^b^b^2sa2+a^2sb2z=\frac{\hat a\hat b}{\sqrt{\hat b^2 s_a^2+\hat a^2 s_b^2}}

问题在于 a^b^\hat a\hat b 是两个估计量的乘积,小样本里分布是偏的,正态近似不准,Sobel 检验往往偏保守。Bootstrap 的做法是有放回地重抽样本,每次重算 a^b^\hat a\hat b,用这上千个值的分位数构造置信区间,不需要正态假设(Preacher and Hayes, 2008)。

截面数据的写法:

* Sobel:手算
quietly reg m x $controls
scalar a  = _b[x]
scalar sa = _se[x]
quietly reg y x m $controls
scalar b  = _b[m]
scalar sb = _se[m]
scalar z  = a*b / sqrt(b^2*sa^2 + a^2*sb^2)
display "ab = " a*b "   Sobel z = " z "   p = " 2*normal(-abs(z))

* Bootstrap:把 ab 写成一个返回标量的小程序
capture program drop ind
program define ind, rclass
    quietly reg m x $controls
    local a = _b[x]
    quietly reg y x m $controls
    return scalar ab = `a' * _b[m]
end
bootstrap ab=r(ab), reps(1000) seed(2026): ind
estat bootstrap, percentile bc

面板数据要按个体整群重抽(cluster(id)),并用 idcluster() 给重抽出来的每个个体重新编号,程序里的固定效应也用这个新编号:

capture program drop ind_fe
program define ind_fe, rclass
    quietly reghdfe m x $controls, absorb(newid year)
    local a = _b[x]
    quietly reghdfe y x m $controls, absorb(newid year)
    return scalar ab = `a' * _b[m]
end
xtset, clear       // 数据 xtset 过的话先清掉,否则会报 r(451)
bootstrap ab=r(ab), reps(1000) seed(2026) cluster(id) idcluster(newid): ind_fe
estat bootstrap, percentile

newid 不用事先生成,bootstrap 会自己建。有两个坑,都是实际跑的时候碰到的:

  • 数据如果 xtset 过,即使加了 idcluster() 也会报 r(451)(repeated time values within panel),要先 xtset, clear
  • 程序里如果用 xtreg 这类依赖面板设定的命令,要在程序开头用 xtset newid year 按新编号重新设定面板。reghdfe 不依赖 xtset,按 newid 还是 id 吸收固定效应,点估计都一样。

一个让人不安的模拟

下面这个例子里,XX 是完全随机分配的(抛硬币),MMYY 没有任何影响,但有一个观测不到的变量 UU 同时影响 MMYY

set seed 20260926
set obs 2000
gen x = rbinomial(1, 0.5)          // 随机分配
gen u = rnormal()                  // 观测不到
gen m = 0.5*x + u + rnormal()
gen y = 1.0*x + 0*m + u + rnormal()

按逐步法做一遍:

估计值 标准误 真实值
ccYYXX 0.939 0.064 1.0
aaMMXX 0.466 0.061 0.5
bbYYMM(控制 XX 0.524 0.020 0
cc'YYXX(控制 MM 0.695 0.056 1.0

Sobel z=7.29z=7.29p<0.001p<0.001;Bootstrap(1000 次)得到 ab=0.244ab=0.244,百分位 95% 置信区间是 [0.180, 0.311]。不管按哪种流程,结论都是“MM 起到了部分中介作用,中介效应占总效应的 26%”。而真实的中介效应是 0。

原因在于 MM 本身不是随机分配的。XX 随机只保证了 ccaa 能识别;到了第三个方程,MM 和误差项里的 UU 相关,bbcc' 都是有偏的。随机分配 XX 并不会让 MM 也变成随机的。心理学里早有人强调过这一点(Bullock, Green and Ha, 2010);在只有观测数据的经济学研究里,连 XX 本身都未必外生,问题只会更严重。

因果中介分析怎么看

用潜在结果 Y(x,m)Y(x,m)M(x)M(x) 来写,自然间接效应(NIE,也叫 ACME)和自然直接效应(NDE)分别是

NIE=E[Y(1,M(1))Y(1,M(0))],NDE=E[Y(1,M(0))Y(0,M(0))]NIE=\E\big[Y(1,M(1))-Y(1,M(0))\big],\qquad NDE=\E\big[Y(1,M(0))-Y(0,M(0))\big]

两者相加就是总效应。Imai, Keele and Tingley(2010)说明,识别 NIE 需要“序贯可忽略性”,它分两层:第一,给定处理前协变量,XX 近似随机;第二,给定 XX 和处理前协变量,MMYY 之间没有未观测的混杂,也不能有受 XX 影响、又同时影响 MMYY 的变量。此外还需要各组合都有观测(正值性)等常规条件。在这些假设下,如果模型是线性的、XXMM 没有交互,NIE=abNIE=ab。换句话说,逐步法其实默认了第二层假设,而它既强、又没法检验。

Stata 的 medeffmedsens(Hicks and Tingley, 2011)可以做这一套估计,还能做敏感性分析:看 MM 方程和 YY 方程的误差相关到多大时,结论会被推翻。

江艇(2022)之后怎么写机制

江艇(2022)在《中国工业经济》上专门讨论了这个问题,建议停止用逐步法检验中介效应。按他的思路,机制部分可以这样写:

  1. 从经济学理论出发提出中介变量 MM,它对 YY 的影响应当直观、清楚,最好已有文献充分确认;
  2. 用与主回归相同的识别策略(DID、IV 等)估计 XXMM 的因果效应,这一步是能识别的;
  3. MMYY 的作用靠理论和已有文献论证,而不是把 XXMM 一起放进 YY 的方程,靠系数的变化去“检验”。

同一篇文章还指出,调节效应(异质性分析)在因果识别中的作用被低估了。我的理解是:如果理论事先就预言某个处理前的特征会放大这个机制,那么可以用这个特征做交乘或分组,正式检验效应的差异(要检验组间系数之差,不能只看一组显著、一组不显著)。这类证据只是辅助,不是机制成立的必要条件,但往往比三步回归更有说服力。

顺手做的一个统计

有一份在公众号上流传的清单,推荐了 2017–2023 年《中国工业经济》上 25 篇用到中介效应的论文。我把这 25 篇按实际用的检验方法分了类:

检验方式 篇数
只看三步回归的系数是否显著 1
逐步回归 + Sobel 14
逐步回归 + Bootstrap 3
Sobel 和 Bootstrap 都做 6
渠道分析,没有标准的中介模型 1

除了一篇跨国宏观研究用的是渠道分析,其余 24 篇都是在上面三个方程的框架里做,差别只在于 abab 用什么办法检验。清单里 2022 年第 5 期之后刊出的有 4 篇,其中 3 篇仍是逐步法加 Sobel 或 Bootstrap。当然,这不是随机样本,期刊从投稿到刊出的周期也很长,说明不了太多,只能算一个直观的印象。

参考文献

  • Baron, R. M., & Kenny, D. A. (1986). The moderator–mediator variable distinction in social psychological research: Conceptual, strategic, and statistical considerations. Journal of Personality and Social Psychology, 51(6), 1173–1182.
  • Bullock, J. G., Green, D. P., & Ha, S. E. (2010). Yes, but what's the mechanism? (Don't expect an easy answer). Journal of Personality and Social Psychology, 98(4), 550–558.
  • Hicks, R., & Tingley, D. (2011). Causal mediation analysis. Stata Journal, 11(4), 605–619.
  • Imai, K., Keele, L., & Tingley, D. (2010). A general approach to causal mediation analysis. Psychological Methods, 15(4), 309–334.
  • Preacher, K. J., & Hayes, A. F. (2008). Asymptotic and resampling strategies for assessing and comparing indirect effects in multiple mediator models. Behavior Research Methods, 40(3), 879–891.
  • Sobel, M. E. (1982). Asymptotic confidence intervals for indirect effects in structural equation models. Sociological Methodology, 13, 290–312.
  • 江艇. (2022). 因果推断经验研究中的中介效应与调节效应. 中国工业经济, (5), 100–120.
  • 温忠麟, 张雷, 侯杰泰, 刘红云. (2004). 中介效应检验程序及其应用. 心理学报, 36(5), 614–620.
  • 温忠麟, 叶宝娟. (2014). 中介效应分析:方法和模型发展. 心理科学进展, 22(5), 731–745.