查看原文
其他

Stata:一般化的因果中介分析

连享会 连享会 2023-10-24

👇 连享会 · 推文导航 | www.lianxh.cn

连享会课程 · 机制分析与政策优化

作者:曹昊煜 (兰州大学)
邮箱:caohy19@lzu.edu.cn

编者按:本文主要参考自以下内容,特此致谢!

  • Imai K, Keele L, Tingley D. A general approach to causal mediation analysis[J]. Psychological methods, 2010, 15(4): 309. -PDF-
  • Hicks R, Tingley D. Causal mediation analysis[J]. The Stata Journal, 2011, 11(4): 605-619. -PDF-

温馨提示: 文中链接在微信中无法生效。请点击底部「阅读原文」。或直接长按/扫描如下二维码,直达原文:


目录

  • 1. 引言

  • 2. 因果中介分析的统计框架

    • 2.1 反事实框架

    • 2.2 定义因果中介效应

    • 2.3 顺序可忽略性假定

    • 2.4 非参数识别

  • 3. 线性结构方程模型情形

    • 3.1 参数乘积的因果解释

    • 3.2 放松无交互效应假定

    • 3.3 与工具变量的区别

  • 4. 敏感性分析

  • 5. 推广到非线性模型

    • 5.1 估计算法

    • 5.2 五种典型的非线性模型

  • 6. Stata 范例

    • 6.1 命令介绍

    • 6.2 模拟实例

  • 7. 结语

  • 8. 相关推文



1. 引言

因果效应的识别是社会科学研究的关键。但是以随机试验为黄金标准的因果推断只能提供一个因果效应的 “黑箱”,也就是说试验方法只能说明干预是否导致了因果关系,而不能说明如何导致了结果变量的变化。因此,机制分析在研究干预和结果变量的路径中扮演了重要的角色。

在传统的社会科学研究中,因果机制分析主要依赖于线性结构方程模型 (Linear Structural Equation Models,LSEM),由此可能引发三个方面的问题:

  • 缺少因果中介效应的明确定义;
  • 缺少关键的识别假定;
  • 难以向非线性模型拓展。

本文将介绍一种因果中介效应的一般方法,该方法明确提出了因果中介效应的定义、识别、估计和敏感性分析,并且可以广泛应用于线性和非线性模型、参数和非参数模型、连续和离散中介变量,以及多种类型的结果变量。

2. 因果中介分析的统计框架

本小节将使用反事实框架介绍因果中介分析的模型框架。与以往模型相比,该模型清晰地定义了因果中介效应,并且对参数模型具有最少的条件,以及对不同的统计模型具有统一的假设。

2.1 反事实框架

在反事实框架中,因果效应定义为潜在结果的差。令 代表二元干预变量。令 代表潜在结果,例如 表示个体 受到干预的结果变量,尽管每个个体有两个潜在结果,但是我们只能观测到其中之一。令 为实际观测值,那么对于每个个体有

在这种设定下,个体的因果效应表示为 。由于二者只有一个可以观测,所以即使是随机试验也不能得到个体的因果效应。我们通常关心的是平均因果效应 (Average Treatment Effect,ATE),即 。如果再施加独立假定 ,那么:

因果效应的估计可以简化为组间均值差异。除此之外,还需要假定个体之间不存在相互作用,这一点可以通过研究设计来解决,例如可以限制受到干预的个体不能来自同一个家庭。

2.2 定义因果中介效应

表示可观测的中介变量。由于 也会受到干预的影响,中介变量同样存在两个潜在结果 ,记为 。接着将潜在结果定义为干预变量和中介变量的函数,即 。在研究中,可观测的结果变量为

在个体间不存在相互作用的条件下,因果中介效应可以写为:

可以看出,因果中介效应体现了干预变量通过中介变量对结果变量的间接影响。其含义是当保持干预状态不变时,如果中介从控制条件 转换为干预条件 ,结果变量会发生什么样的变化。以 为例,其含义为 的差值,前者表示干预组的结果变量,后者表示当干预组的个体具有控制组的中介变量特征时的结果变量。

同理,可以定义直接效应:

将直接效应和间接效应相加可以得到总效应:

由于潜在结果无法在个体层面直接观测,我们仍然关心的是平均因果中介效应、平均直接效应和平均总效应:

在某些情况下平均总效应可能非常小,但这并不意味着平均因果中介效应也很小,其原因可能是中介效应和直接效应异号。

2.3 顺序可忽略性假定

在因果中介分析中,推断主要依赖的假定是顺序可忽略性假定 (Sequential Ignorability Assumption)。令 表是一系列干预前的混杂因子,其取值范围是 。引入假定:

该假定称为顺序可忽略性假定。首先,给定可观测的混杂因素取值,干预状态是可以忽略的。其次,假定说明当干预状况和混杂因素给定时,中介因素是可忽略的。这两个假定在实证分析中都是无法直接检验的,因此需要借助敏感性分析。

2.4 非参数识别

在没有任何分布或函数假定时,使用非参数估计可以得到平均因果中介效应的一致估计。使用非参数方法有三个方面的原因:

  • 第一,使得构建广义模型成为可能;
  • 第二,可以在更弱的假定下估计因果中介效应;
  • 第三,揭示了顺序可忽略性假定不依赖于特定模型的关键特征。

非参数识别定理:当顺序可忽略性假定成立时,以下条件分布是可识别的。该定理的含义在于,当顺序可忽略性假定成立时,潜在结果的分布可以被表示为观测数据的函数。在 LSEM 中,这些条件分布全部被设定为线性形式,而在本文的方法中,可以将之推广到其他非线性情形。

3. 线性结构方程模型情形

3.1 参数乘积的因果解释

在讨论一般模型之前,我们先来看一下潜在结果框架在特例 LSEM 中的应用。考虑如下的线性模型:

在使用 OLS 估计之后,参数乘积 即为中介效应。可以证明,当顺序可忽略性假定、无交互作用假定和线性模型假定成立时,该估计量是一个因果中介效应的有效估计。LSEM 实际上是本文方法的特例,使用潜在结果符号替代 LSEM 中的变量:

当顺序可忽略性假定成立时,平均中介因果效应为 ,平均直接效应为 。也就是说,相对于 LSEM,本文的方法使用了更少的假定。

3.2 放松无交互效应假定

无交互效应假定意味着 ,即干预变量和中介变量间不存在交互关系,平均直接效应和总效应也满足同样的等式。放松该假定可以将 LSEM 中的最后一个方程替换为:

此时中介关系依赖于干预状态,而因果中介效应、直接效应和总效应都会发生变化:

其中,,一致估计量可以通过 OLS 估计系数,并使用样本均值替换 得到。

3.3 与工具变量的区别

现有研究中,工具变量也是研究因果中介效应的主要方法,而该方法依赖的是另外一系列假定:

  • 可忽略性假定:
  • 单调性:
  • 无直接效应(排他性假定):

最后一个假定将直接效应约束为 0,也就说工具变量方法先验地排除了其他可能的因果中介,但这在社会科学的研究中通常是难以满足的。

4. 敏感性分析

正如前文所说,仅有随机分配是无法识别因果中介效应的,因此顺序可忽略性假定至关重要。由于该假定是不可直接验证的,所以需要使用敏感性分析来说明假定的合理性。敏感性分析主要基于 LSEM 中干扰项之间的相关性,即 。如果存在同时影响中介和结果变量的遗漏变量,那么干扰项间的相关性会上升。当顺序可忽略性假定成立时 ,而非零的 意味着背离假设。

我们可以将因果中介效应写为 的函数。如果对 的微小背离会导致因果中介效应估计的大幅度改变,那么结果可能对顺序可忽略性假定很敏感。因果中介效应和 的关系基于以下定理:考虑 LSEM 框架下的估计,如果顺序可忽略性的第二个关系不成立,即结果变量和中介变量之间存在相关性,并且有 ,则平均因果中介效应为:

其中,

该结果建立了因果中介效应与干扰项相关性之间的关联。我们在敏感性分析中需要考虑的是,当 取值为多少时,因果中介效应会消失。以下图为例:

该结果是放松无交互效应后的敏感性分析,即 。在左图中,当 时,因果中介效应 ,当 时,。从置信区间上看,大约 时, 的区间估计包含了 0,而 包含 0 时,大约 。没有确定的准则来说明结果是否是不稳健的,但如果另一项研究中 的条件是 ,则说明上图中的示例对 更加敏感。

5. 推广到非线性模型

从 LSEM 框架向非线性模型的推广并非是简单地函数形式变化。例如当结果变量是离散形式时,Logistic 模型中的因果中介效应不再是参数的乘积形式。本文的方法适用于线性与非线性关系、参数与非参数模型、连续和离散中介和各类结果变量。

5.1 估计算法

我们观测到的一般是 ,而推断的目标是反事实结果 。以下定理说明了可以通过蒙特卡洛模拟来得到潜在结果变量 ,约束为

为此,我们首先从建立的中介模型 中抽样 ,给定中介特征,从结果变量模型 抽取 。前文的非参数识别定理保证了这一过程不依赖于统计模型,当我们得到了潜在结果的模拟后,就可以计算任意函数。

我们先考察参数模型中的估计算法,适用于中介或结果方程为 Probit 或 Logit 模型的情形:

  • Step1:使用观测到的结果和中介变量拟合模型;
  • Step2:从抽样分布中模拟模型参数;
  • Step3:重复以下三个步骤:
    • 模拟中介的潜在值;
    • 给定中介的潜在值之后模拟结果变量;
    • 计算因果中介效应。
  • Step4:计算统计量,例如点估计或区间估计。

该步骤可以用于任何参数模型,并且模拟表明每一步中重复抽样 1000 次就会得到稳定的结果。在非参数或者半参数模型中,可以使用 bootstrap 方法来生成估计结果:

  • Step1:对每一个自抽样样本,重复以下四个步骤:
    • 使用观测到的结果和中介变量拟合模型;
    • 模拟中介的潜在值;
    • 给定中介的潜在值之后模拟结果变量;
    • 计算因果中介效应。
  • Step2:计算统计量,例如点估计或区间估计。

5.2 五种典型的非线性模型

5.2.1 分位数中介效应

到目前为止,该方法的主要应用是平均因果中介效应。但在研究中,有时关注的是结果变量的分布特征,此时需要估计的是分位数因果中介效应。实现这一目标的方式是将 LSEM 中的第三个方程变为分位数方程,注意参数乘积并不是我们所需要的估计结果,而是需要应用非参数算法。下图为中介效应和直接效应的分位数估计示例:

5.2.2 非参数与半参数回归

在 LSEM 中,平均因果中介效应的估计依赖于一系列线性假定,当我们希望放松这一假定时,需要使用非参数或者半参数模型,这两种方式允许我们在更宽松的假定下从数据中考察真实的关系。考虑以下的广义可加模型 (Generalized Additive Model,GAM):

其中, 是一个光滑的非线性函数,使用非参数方法估计,在 LSEM 中, 被假定为线性形式。同样可以放松无交互的假定,将模型扩展为以下形式:

在非参数或者半参数模型中,相乘系数同样不是因果中介效应,使用非参数算法可以得到正确的估计。

5.2.3 离散中介与结果变量

如果中介变量是离散的,那么中介变量方程需要使用 Probit/Logit 模型,如果中介变量是多分类的,还需要使用 Order Probit 模型,尽管这些模型与线性模型非常类似,但是 LSEM 框架却不能直接应用。另一种情形下中介变量是连续的,而结果变量是离散的。首先需要定义此时的因果中介效应,再进行估计。没有协变量的模型设定为:

两个方程中的干扰项是独立同分布的,并且具有零均值和同方差性,即 是潜变量,当潜变量大于 0 时, 的观测值去 1,此时结果变量方程可以使用 Probit/Logit 模型。

在 Logit 模型中,平均因果中介效应和平均总效应的形式为:

其中, 的分布函数。在 Probit 模型中,平均因果中介效应和平均总效应的形式为:

,则:

其中, 为标准正态分布的累积分布函数。通过模拟可知,与 Freedman 等 (1992) 和 MacKinnon 等 (2007) 两种估计离散结果变量的方式相比,本文的估计结果具有更好的统计性质。

在一些研究中,我们关注的是中介效应在总效应中的份额,使用如下方式计算:

可以看出,仅当分子和分母的符号相同时,该指标是有意义的。因此可以采取另一种计算方式:

5.2.4 连续处理变量

本文的方法也很容易推广到连续处理变量的情形,仅仅是符号表达会复杂化。此时个体的因果中介效应可以定义为:

是离散变量时,该等式就与本文最初的定义相同,其期望形式 即为平均因果中介效应。由于 是特定的取值,因此可以选择 为基准。基于此,可以使用一个更好的方式刻画 与 0 之间的平均因果中介效应估计

6. Stata 范例

在 Stata 中,我们可以使用 medeffmedsens 命令进行因果中介效应估计和敏感性分析。与理论部分相同,模型设定如下:

6.1 命令介绍

medeffmedsens 命令安装:

net install st0243_1.pkg, replace

medeffmedsens 命令语法:

medeff (model depvar varlist) (model depvar varlist) [if] [in] [weight],
mediate(varname) treat(varname [# #])
[sims(#) seed(#) vce(vcetype) level(#) interact(varname)]

medsens (model depvar varlist) (model depvar varlist) [if] [in],
mediate(varname) treat(varname)
[sims(#) eps(#) level(#)]

其中,

  • model:设定估计模型,可以设定 regressprobit 或者 logit
  • mediate(varname):设定中介变量;
  • treat[ varname # # ]:设定干预变量,默认为 0-1 变量;
  • sims:设定准贝叶斯近似的模拟次数,填入的数值越大计算时间越长,一般结果在 1000 左右达到稳定;
  • seed:设定种子值,保证结果可以重复;
  • vce:设定稳健标准误,可以使用 robustclusterbootstrapjackknife
  • level:设定置信区间水平;
  • interact:放松无交互效应假定,在方程中加入干预变量和中介效应的交互项;
  • eps:设定收敛的条件,默认为 0.01。

6.2 模拟实例

首先生成一份模拟数据用于以上两类命令的估计。在模拟数据中,干扰项和协变量满足均值为 0,方差为 1 的联合正态分布,所有参数的真实值都设定为 0.25。

. set seed 312789
. local n 2000
. set obs `n'
. local alpha_2 .25
. local alpha_3 .25
. local beta_2 .25
. local beta_3 .25
. local gamma .25
. local x_beta .25
. matrix m = (0,0,0)
. matrix sd = (1,1,1)
. drawnorm e1 e2 x, n(`n') means(m) sds(sd)
. generate T = round(runiform(), 1)
. generate M = `alpha_2' + `beta_2'*T + `x_beta'*x + e1
. generate Y = `alpha_3' + `beta_3'*T + `gamma'*M + `x_beta'*x + e2

使用 medeff 命令估计平均因果中介效应:

. * 附加无交互效应假定

Source | SS df MS Number of obs = 2,000
-------------+---------------------------------- F(2, 1997) = 102.72
Model | 199.713346 2 99.8566732 Prob > F = 0.0000
Residual | 1941.28634 1,997 .97210132 R-squared = 0.0933
-------------+---------------------------------- Adj R-squared = 0.0924
Total | 2140.99968 1,999 1.07103536 Root MSE = .98595
------------------------------------------------------------------------------
M | Coefficient Std. err. t P>|t| [95% conf. interval]
-------------+----------------------------------------------------------------
T | 0.283 0.044 6.42 0.000 0.196 0.369
x | 0.280 0.022 12.85 0.000 0.237 0.322
_cons | 0.271 0.031 8.76 0.000 0.210 0.331
------------------------------------------------------------------------------

Source | SS df MS Number of obs = 2,000
-------------+---------------------------------- F(3, 1996) = 130.03
Model | 386.590619 3 128.86354 Prob > F = 0.0000
Residual | 1978.02253 1,996 .990993253 R-squared = 0.1635
-------------+---------------------------------- Adj R-squared = 0.1622
Total | 2364.61315 1,999 1.18289803 Root MSE = .99549
------------------------------------------------------------------------------
Y | Coefficient Std. err. t P>|t| [95% conf. interval]
-------------+----------------------------------------------------------------
T | 0.295 0.045 6.55 0.000 0.207 0.383
M | 0.237 0.023 10.47 0.000 0.192 0.281
x | 0.257 0.023 11.21 0.000 0.212 0.301
_cons | 0.261 0.032 8.21 0.000 0.199 0.323
------------------------------------------------------------------------------

------------------------------------------------------------------------------
Effect | Mean [95% Conf. Interval]
-------------------------------+----------------------------------------------
ACME | .0669954 .0438507 .0931175
Direct Effect | .2968071 .2154036 .3818038
Total Effect | .3638024 .2806836 .4539717
% of Tot Eff mediated | .1843135 .1475761 .2386866
-------------------------------------------------------------------------------
. * 放松无交互效应假定
. gen TM = T*M
. medeff (regress M T x) (regress Y T M TM x), treat(T) mediate(M) sims(1000) interact(TM)

Source | SS df MS Number of obs = 2,000
-------------+---------------------------------- F(2, 1997) = 102.72
Model | 199.713346 2 99.8566732 Prob > F = 0.0000
Residual | 1941.28634 1,997 .97210132 R-squared = 0.0933
-------------+---------------------------------- Adj R-squared = 0.0924
Total | 2140.99968 1,999 1.07103536 Root MSE = .98595
------------------------------------------------------------------------------
M | Coefficient Std. err. t P>|t| [95% conf. interval]
-------------+----------------------------------------------------------------
T | 0.283 0.044 6.42 0.000 0.196 0.369
x | 0.280 0.022 12.85 0.000 0.237 0.322
_cons | 0.271 0.031 8.76 0.000 0.210 0.331
------------------------------------------------------------------------------

Source | SS df MS Number of obs = 2,000
-------------+---------------------------------- F(4, 1995) = 98.67
Model | 390.536484 4 97.634121 Prob > F = 0.0000
Residual | 1974.07667 1,995 .989512114 R-squared = 0.1652
-------------+---------------------------------- Adj R-squared = 0.1635
Total | 2364.61315 1,999 1.18289803 Root MSE = .99474
------------------------------------------------------------------------------
Y | Coefficient Std. err. t P>|t| [95% conf. interval]
-------------+----------------------------------------------------------------
T | 0.331 0.049 6.83 0.000 0.236 0.427
M | 0.277 0.030 9.12 0.000 0.218 0.337
TM | -0.087 0.043 -2.00 0.046 -0.172 -0.002
x | 0.258 0.023 11.28 0.000 0.213 0.303
_cons | 0.250 0.032 7.75 0.000 0.187 0.313
------------------------------------------------------------------------------

------------------------------------------------------------------------------
Effect | Mean [95% Conf. Interval]
-------------------------------+----------------------------------------------
ACME1 | .0541383 .0310342 .0815141
ACME0 | .0785898 .0516876 .1101649
Direct Effect 1 | .2844349 .1900761 .3729037
Direct Effect 0 | .3088864 .2175163 .3977129
Total Effect | .3630247 .2730541 .4539532
------------------------------------------------------------------------------

可以看到在 LSEM 框架和无交互效应假定下,尽管软件同样报告了 的估计,但是二者结果相同。如果结果变量或中介变量是离散的,则可以将 regress 改为 probit 或者 logit

如果我们想要放松无交互效应假定,需要手动生成干预变量和机制变量的交互项,并将之放入第二个方程中。此时因果中介效应的估计结果 是不同的。

最后使用 medsens 进行敏感性分析,在 Stata 中,可以使用两类指标对 的大小与因果中介效应的关系进行分析。

. medsens (regress M T x) (regress Y T M x), treat(T) mediate(M) sims(1000)

Source | SS df MS Number of obs = 2,000
-------------+---------------------------------- F(2, 1997) = 102.72
Model | 199.713346 2 99.8566732 Prob > F = 0.0000
Residual | 1941.28634 1,997 .97210132 R-squared = 0.0933
-------------+---------------------------------- Adj R-squared = 0.0924
Total | 2140.99968 1,999 1.07103536 Root MSE = .98595
------------------------------------------------------------------------------
M | Coefficient Std. err. t P>|t| [95% conf. interval]
-------------+----------------------------------------------------------------
T | 0.283 0.044 6.42 0.000 0.196 0.369
x | 0.280 0.022 12.85 0.000 0.237 0.322
_cons | 0.271 0.031 8.76 0.000 0.210 0.331
------------------------------------------------------------------------------

Source | SS df MS Number of obs = 2,000
-------------+---------------------------------- F(3, 1996) = 130.03
Model | 386.590619 3 128.86354 Prob > F = 0.0000
Residual | 1978.02253 1,996 .990993253 R-squared = 0.1635
-------------+---------------------------------- Adj R-squared = 0.1622
Total | 2364.61315 1,999 1.18289803 Root MSE = .99549
------------------------------------------------------------------------------
Y | Coefficient Std. err. t P>|t| [95% conf. interval]
-------------+----------------------------------------------------------------
M | 0.237 0.023 10.47 0.000 0.192 0.281
T | 0.295 0.045 6.55 0.000 0.207 0.383
x | 0.257 0.023 11.21 0.000 0.212 0.301
_cons | 0.261 0.032 8.21 0.000 0.199 0.323
------------------------------------------------------------------------------

----------------------------------------------------------------
Sensitivity results
----------------------------------------------------------------
Rho at which ACME = 0 | .2282
R^2_M*R^2_Y* at which ACME = 0: | .0521
R^2_M~R^2_Y~ at which ACME = 0: | .0395
----------------------------------------------------------------
95% Confidence interval

由敏感性分析结果可知,当 的取值为 0.23 时,平均因果中介效应的取值为 0。虽然这一取值的大小无法在绝对意义上说明结果的敏感性,但如果存在类似的研究,即可通过比较说明本文结果的稳健性。最后,可以使用 medsens 命令生成的变量绘制前文的敏感性分析图示。

7. 结语

如何检验经济学中的因果机制是长期困扰研究者的一个重要问题,使用传统的 LSEM 框架面临着诸多问题,例如没有对因果中介效应的明确定义、没有提出合理的识别假定、难以向非线性模型扩展等。本文介绍了一种新的因果中介分析,从统计框架上明确了因果中介的含义,在顺序可忽略性假定下识别了因果中介参数。

与此同时,非参数可识别性可以保证本文的方法轻易地推广到非线性情形中,为中介效应分析提供更一般的分析方法。美中不足的是,在 Stata 中仅仅纳入了基本的因果中介效应估计和敏感性分析,而没有分位数估计、非参数估计等内容。如果需要进一步获取这些结果,需要使用 R 语言中的 mediation 包。

8. 相关推文

Note:产生如下推文列表的 Stata 命令为:
lianxh 中介, m
安装最新版 lianxh 命令:
ssc install lianxh, replace

  • 专题:回归分析
    • 中介效应分析:三段式中介效应模型真的适用于经济学研究吗?
  • 专题:IV-GMM
    • Stata:基于IV的因果中介分析-ivmediate
  • 专题:交乘项-调节
    • Stata:中介效应分析新命令-sgmediation2
    • medsem-中介效应:基于结构方程模型SEM的中介效应分析-T331
    • Stata:因果中介分析大比拼-T323
    • med4way:中介效应和交互效应分析
    • Stata:调节中介效应检验.md
    • Stata+R:一文读懂中介效应

New! Stata 搜索神器:lianxhsongbl  GIF 动图介绍
搜: 推文、数据分享、期刊论文、重现代码 ……
👉 安装:
. ssc install lianxh
. ssc install songbl
👉  使用:
. lianxh DID 倍分法
. songbl all

🍏 关于我们

  • 连享会 ( www.lianxh.cn,推文列表) 由中山大学连玉君老师团队创办,定期分享实证分析经验。
  • 直通车: 👉【百度一下: 连享会】即可直达连享会主页。亦可进一步添加 「知乎」,「b 站」,「面板数据」,「公开课」 等关键词细化搜索。


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存