1. 一般中介效应模型
1.1 基本模型设定
不妨考虑一个基本的中介效应模型设定:
其中,、和分别代表被解释变量、核心解释变量和中介变量;和为随机扰动项。若假定和相互独立,则X对Y的中介效应(ME,间接影响)可估计如下:
那么如何判断 X 对 Y 的中介效应 ME 在统计意义上是否显著呢?实践中,通常采用 Sobel 检验,或者基于Bootstrap的经验检验。鉴于Bootstrap方法的灵活性,这篇推文重点介绍基于Bootstrap方法的中介效应检验。
1.2 基于Bootstrap法的检验步骤
题外话:Bootstrap法(又称拔靴法、自助法等)由斯坦福大学统计学家 Bradley Efron 在总结、归纳前人研究成果的基础上提出一种新的非参数统计方法。Bootstrap是一类非参数 Monte Carlo 方法,其实质是对观测信息进行再抽样,进而对总体的分布特性进行统计推断。Bradley Efron 教授也因为这一研究成果在 2018 年获得了美国统计协会(ASA)颁布的国际统计学奖。
基于Bootstrap法的中介效应检验可归纳为下述几个步骤:
- 第一步,对研究样本进行 A 次有放回的重复抽样,直到得到个样本。
- 第二步,基于这个样本进行式(1)的回归估计,计算
- 第三步,对步骤一、二进行重复操作,直到Bootstrap的次数达到预先设定的 N 次停止。此时,我们会得到 N 个 ME,即:、、...、
- 第四步,计算 ME 序列的均值和标准误,其中,并以此为基础构造 t 统计量对 X 影响 Y 的中介效应 ME 进行统计推断。
2. 中介效应模型的拓展:引入调节变量
很多情况下,X 对 Y 的中介效应受到其他变量 Z 的调节。例如,员工的工作热情(X)会通过工作付出(M)影响企业绩效(Y),即影响路径为: X → M → Y;但是,员工的工作热情和工作付出之间的关系、工作付出和企业绩效之间的关系都会受到企业文化(Z)的调节,一个优秀的企业文化可能会同时强化 X 对 M 的影响、 M 对 Y 的影响。那么在这种情况下,我们需要在一般的中介效应模型中引入一个调节变量 Z 来刻画上述条件中介效应。
不失一般性,假定存在一个外部因素 Z 同时调节 X 和 M 的关系、以及 M 和 Y的关系。此时在模型(1)中引入一个调节变量 Z,中介效应模型则有如下形式:
在模型(3)中,X 对 M 的影响为:,M 对 Y 的影响为:。同理,若假定和相互独立,则 X 对 Y 的有调节的中介效应(ME,间接影响)可表示如下:
可见,引入调节变量后,X 对 Y 的间接效应变成了调节变量 Z 的函数。利用Bootstrap法验证该效应的统计显著性则需要对调节变量 Z 的取值进行设定,此时的中介效应也称为条件中介效应。通常在实践中,研究人员一般将 Z 的取值设定为、和、。
基于上述设定,我们则可以利用前述相同的Bootstrap法检验有调节的中介效应在统计意义上是否显著,具体步骤不再赘述。
3. Stata 软件中的实现说明
当前 Stata 软件中并没有提供基于Bootstrap法可直接使用的命令检验有调节的中介效应,本推文根据上述理论分析和检验步骤开发了 medtest
命令,该命令有如下语法结构:
medtest depvar,
iv(string) mv(string) absorb(string)
[cv(string) mo(string) mo_value(numeric)
center type(numeric) cluster(string)]
需要说明的是,[...]
内的元素均为可选属性,其他元素则为必选属性。其中:
-
depvar
为被解释变量 -
iv
代表核心解释变量 -
mv
代表中介变量 -
absorb
代表回归模型要吸收的固定效应元素,和reghdfe
命令中的定义相同 -
cv
代表控制变量 -
mo
代表调节变量 -
mo_value
代表条件中介效应计算过程中调节变量的取值大小 -
center
决定了在引入条件效应后对交互项中的变量进行去均值的中心化处理 -
cluster
用于调整回归模型的标准误,和reghdfe
命令中的定义相同 -
type
的取值分别为1、2 和 3,控制了调节效应发生的阶段;1 代表前半段调节,即在X → M → Y
的路径中,仅X → M
环节受到 mo 的调节;2 代表后半段调节,即在X → M → Y
的路径中,仅M → Y
环节受到 mo 的调节;3 则代表全过程调节,即X → M
和M → Y
均受到 mo 的调节。
命令medtest
会返回:总效应(te)、间接效应(ide)、中介效应(me)以及中介效应占总效应的比例(me/te)等结果。同时,为便于大家查看中间的回归结果,我们通过est store m(i), i = 1, 2, 3
保存了回归模型结果,可通过esttab
、outreg2
命令进行调用展示。
特别注意,命令medtest
并未给出中介效应(me)的显著性检验结果,使用者可通过下述命令得到具体的显著性检验结果:
bootstrap me = r(me), rep(numeric) seed(numeric): ///
medtest depvar,
iv(string) mv(string) absorb(string)
[cv(string) mo(string) mo_value(numeric)
center type(numeric) cluster(string)]
其中,rep
代表 bootstrap 的次数,建议设定时大于 1000 次;seed
代表重复抽样时随机种子,通过设定该属性可控制结果的重复性。///
为连接符号,避免语句太长而进行了断行处理,medtest
中的参数根据具体需求进行设置。
注:相关代码会在公众号:alpha学术圈发布。欢迎转载,需注明作者和出处。