Stata:一般化的因果中介分析
👇 连享会 · 推文导航 | www.lianxh.cn
🍎 Stata:Stata基础 | Stata绘图 | Stata程序 | Stata新命令 📘 论文:数据处理 | 结果输出 | 论文写作 | 数据分享 💹 计量:回归分析 | 交乘项-调节 | IV-GMM | 时间序列 | 面板数据 | 空间计量 | Probit-Logit | 分位数回归 ⛳ 专题:SFA-DEA | 生存分析 | 爬虫 | 机器学习 | 文本分析 🔃 因果:DID | RDD | 因果推断 | 合成控制法 | PSM-Matching 🔨 工具:工具软件 | Markdown | Python-R-Stata 🎧 课程:公开课-直播 | 计量专题 | 关于连享会
连享会课程 · 机制分析与政策优化
作者:曹昊煜 (兰州大学)
邮箱: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 中,我们可以使用 medeff
和 medsens
命令进行因果中介效应估计和敏感性分析。与理论部分相同,模型设定如下:
6.1 命令介绍
medeff
和 medsens
命令安装:
net install st0243_1.pkg, replace
medeff
和 medsens
命令语法:
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
:设定估计模型,可以设定regress
、probit
或者logit
;mediate(varname)
:设定中介变量;treat[ varname # # ]
:设定干预变量,默认为 0-1 变量;sims
:设定准贝叶斯近似的模拟次数,填入的数值越大计算时间越长,一般结果在 1000 左右达到稳定;seed
:设定种子值,保证结果可以重复;vce
:设定稳健标准误,可以使用robust
、cluster
、bootstrap
、jackknife
;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 搜索神器:
lianxh
和songbl
GIF 动图介绍
搜: 推文、数据分享、期刊论文、重现代码 ……
👉 安装:
. ssc install lianxh
. ssc install songbl
👉 使用:
. lianxh DID 倍分法
. songbl all
🍏 关于我们
连享会 ( www.lianxh.cn,推文列表) 由中山大学连玉君老师团队创办,定期分享实证分析经验。 直通车: 👉【百度一下: 连享会】即可直达连享会主页。亦可进一步添加 「知乎」,「b 站」,「面板数据」,「公开课」 等关键词细化搜索。