Stata:因果中介分析大比拼-T323

发布时间:2021-04-10 阅读 8147

Stata连享会   主页 || 视频 || 推文 || 知乎

温馨提示: 定期 清理浏览器缓存,可以获得最佳浏览体验。

New! lianxh 命令发布了:
随时搜索推文、Stata 资源。安装命令如下:
. ssc install lianxh
详情参见帮助文件 (有惊喜):
. help lianxh

课程详情 https://gitee.com/lianxh/Course

课程主页 https://gitee.com/lianxh/Course

⛳ Stata 系列推文:

作者:曹琳君 (南开大学)
邮箱linjuncao@yeah.net

编者按:本文主要摘译自下文,特此致谢!
Source:Valente M J, Rijnhart J J M, Smyth H L, et al. Causal Mediation Programs in R, M plus, SAS, SPSS, and Stata[J]. Structural Equation Modeling: A Multidisciplinary Journal, 2020, 27(6): 975-984. -Link-


目录


1. 简介

中介分析是一种用于理解自变量 X 如何以及为什么通过中介 M 将其影响传递给因变量 Y 的方法。基于潜在结果框架和反事实框架的新因果中介方法是中介分析的一个开创性进展,受到研究者越来越多的关注。这一趋势也导致了 SAS、Stata、SPSS、R 和 Mplus 中关于因果中介分析的新软件程序、例程和宏的爆炸式增长。面对如此多样的工具,研究者将如何取舍?

本文在 Valente 等 (2020) 的基础上,分析了因果中介的理论背景、比较了五种软件在处理因果中介机制时的异同,并给出详细的建议供研究者选择。

2. 理论背景

基于潜在结果框架和更普遍的反事实框架的因果中介分析 (Holland, 1986;Rubin,1974) 提供了在随机实验和非随机研究中确定因果效应的一般定义和假设。这些因果关系定义和假设的公认优点之一是,它们不基于任何特定的估计方法,因此是非参数的。它们可以应用于任何中介模型,包括具有连续和分类变量的模型,以及具有干预-中介 (XM) 交互的模型。

因果效应的定义基于的假设是,每个独立的个体对于干预的每个维度都有潜在的结果值 (Holland,1986;Rubin,1974)。例如,假设干预 X 是具有两个维度的二元变量,即 X=0 和 X=1,那么每个独立的个体 (设为 i) 都有一个结果 Y,即在 X=0 维度,为 Yi(0),在 X=1 维度,为 Yi(1)。个体层面的因果效应为 Yi(1)Yi(0)

然而,观察到每个个体在两个维度的结果是不可能的。也就是说,对于被分配到等级 X=0 的个体,将观察到 Yi(0) 而不是 Yi(1),而对于被分配到等级 X=1 的个体,将观察到 Yi(1) 而不是 Yi(0)。这种无法同时获得一个个体在每种情况下的结果测量被称为 “因果推理的基本问题” (Holland, 1986)。然而,在假设干预组和对照组没有混杂的情况下,可以在平均水平上估计因果干预效应,即 E[Yi(1)Yi(0)]

当因果效应被运用到中介模型时,Y 的平均维度潜在结果值 (the average-level potential outcome values for Y) 基于不同的中介维度和不同的干预维度来定义和估计。也就是说,E[Yi(0m)] 表示当将个体固定在预定的中介值 m 时,在对照组中观察到的个体的 Y 值,而 E[Yi(1m)] 表示当将个体固定在预定的中介值 m 时,在实验组中观察到的个体的 Y 值。

中介效应也可以保持一个固定的观测值。如果该个体在对照组中,即 Mi(0),或如果该个体在实验组中,即 Mi(1)。这使潜在结果可以扩展到 E[Yi(1,Mi(1))])E[Yi(1,Mi(0))])E[Yi(0,Mi(1))]) 和 E[Yi(0,Mi(0))])。例如,潜在结果 E[Yi(1,Mi(1))] 表示当中介变量取值被固定在在实验组中所观察到的值时,实验组中个体的平均结果值。实验组个体可观察到 E[Yi(1Mi(1))],对照组个体可观察到 E[Yi(0Mi(0))])。而两种潜在结果 E[Yi(1Mi(0))]和 E[Yi(0Mi(1))] 不能在个体水平上被观察,但可以在平均水平上估计。

因果直接效应、间接效应和总效应被定义为两种潜在结果之间的差异。一共有 6 种因果效应,具体如下:

  • 总的自然间接效应 (total natural indirect effect)。总的自然间接效应 (TNIE) 是当直接效应在 X=1 维度上保持不变时, X 通过 M 对 Y 的影响;
  • 纯天然间接效应 (pure natural indirect effect)。纯自然间接效应 (PNIE) 是当直接效应在对照组水平 X=0 维度上保持不变时,X 通过 M 对 Y 的影响;
  • 总的自然直接效应 (total natural direct effect)。总的自然直接效应 (TNDE) 是当每个个体的中介变量被固定在如果个人在实验组中可以被自然观测到的值时 (例如,Mi(1))X 对 Y 的效应;
  • 纯天然直接效应 (pure natural direct effect)。纯自然直接效应 (PNDE) 是当每个个体的中介变量被固定在如果个体在对照中可以被自然观测到的值时 (例如, Mi(0))X 对 Y 的效应;
  • 被控制的直接效应 (controlled direct effect)。被控制的直接效应 (CDE) 是当所有个体的中介变量被固定在预定值 m 时,X 对 Y 的效应;
  • 总效应 (total effect)。总效应 (TE) 是 X 对 Y 的影响,等于 TNDE 和 PNIE 的和,或等于 PNDE 和 TNIE 的和。

3. 不同软件的因果中介分析比较

不同软件包在因果中介分析中的特征如图 1.1 和图 1.2 所示,图片引用自原文。

图 1.1:不同软件包因果中介分析中的特征上
图 1.1:不同软件包因果中介分析中的特征上
图 1.2:不同软件包因果中介分析中的特征下
图 1.2:不同软件包因果中介分析中的特征下

结合不同软件包的具体使用情况,本文给出进行因果中介分析的软件选择建议,如图 2 所示。

图 2:不同软件的具体适用情况推荐 (编译作者根据原文整理)
图 2:不同软件的具体适用情况推荐 (编译作者根据原文整理)
  • 当模型是单一的中介模型且 X 是二元变量,M 和 Y 是连续变量并有 (或没有) XM 的交互作用时,不同软件程序提供了几乎相同的效果估计、相似的 bootstrap 置信区间和相似的计算时间;
  • 在存在并非完全随机缺失的缺失数据的情况下,最好使用最大似然或多重插补。Mplus 为用户提供了使用最大似然或多重插补的选项。R 语言的 mediation package 和 medflex package 允许多重插补;
  • 当 XM 和/或 Y 代表未观察到的变量时,Mplus 提供了一种可能性,可以使用经过理论和统计验证的测量模型将这些结构视为潜在变量 (Muthén 等,2017);
  • 当研究者有一个多分类的干预变量时,R 语言的 mediation package 和 medflex package 可以应对这种情况。

4. 案例演示

接下来,我们将用 Stata 自带数据「nlsw88」演示使用 medeff 命令进行因果中介分析的方法。

首先,安装命令及调入数据。

.*下载程序文件
. net install st0243_1.pkg, from(http://www.stata-journal.com/software/sj12-2/) replace

.*下载作者范例 do 文档
. net get st0243_1.pkg, from(http://www.stata-journal.com/software/sj12-2/) replace

.*或者手动安装
. search medeff
. sysuse nlsw88.dta, clear
(NLSW, 1988 extract)

. *根据命令运行需要,我们将数据随机分成实验组和控制组,并假设数据满足因果中介分析的分组条件。
. generate T = round(runiform(),1)

在该数据集中,解释变量为 married,即婚姻状态 (1=已婚,0=未婚);中介变量为 age,即年龄;被解释变量为 wage,即工资;分组变量为 T (1=实验组,0=控制组)。

. des

Contains data from D:\Programs\stata16\ado\base/n/nlsw88.dta
  obs:         2,246                          NLSW, 1988 extract
 vars:            18                          1 May 2018 22:52
                                              (_dta has notes)
--------------------------------------------------------------------------------------------------
              storage   display    value
variable name   type    format     label      variable label
--------------------------------------------------------------------------------------------------
idcode          int     %8.0g                 NLS id
age             byte    %8.0g                 age in current year
race            byte    %8.0g      racelbl    race
married         byte    %8.0g      marlbl     married
never_married   byte    %8.0g                 never married
grade           byte    %8.0g                 current grade completed
collgrad        byte    %16.0g     gradlbl    college graduate
south           byte    %8.0g                 lives in south
smsa            byte    %9.0g      smsalbl    lives in SMSA
c_city          byte    %8.0g                 lives in central city
industry        byte    %23.0g     indlbl     industry
occupation      byte    %22.0g     occlbl     occupation
union           byte    %8.0g      unionlbl   union worker
wage            float   %9.0g                 hourly wage
hours           byte    %8.0g                 usual hours worked
ttl_exp         float   %9.0g                 total work experience
tenure          float   %9.0g                 job tenure (years)
T               float   %9.0g                 
--------------------------------------------------------------------------------------------------
Sorted by: idcode
     Note: Dataset has changed since last saved.

其次,运行 medeff 命令,具体命令格式如下:

. medeff (regress age T married) (regress wage T age  married ), ///
>   treat(T) mediate(age) sims(1000)
Using 0 and 1 as treatment values

  Source |       SS           df       MS      Number of obs   =     2,246
---------+----------------------------------   F(2, 2243)      =      0.31
   Model |  5.82773057         2  2.91386529   Prob > F        =    0.7327
Residual |  21015.4848     2,243  9.36936461   R-squared       =    0.0003
---------+----------------------------------   Adj R-squared   =   -0.0006
   Total |  21021.3126     2,245  9.36361361   Root MSE        =    3.0609
--------------------------------------------------------------------------
     age |      Coef.   Std. Err.      t    P>|t|     [95% Conf. Interval]
---------+----------------------------------------------------------------
       T |  -.0272285   .1293771    -0.21   0.833    -.2809399    .2264828
 married |  -.1015552   .1347852    -0.75   0.451     -.365872    .1627616
   _cons |   39.23133   .1230492   318.83   0.000     38.99003    39.47264
--------------------------------------------------------------------------
  Source |       SS           df       MS      Number of obs   =     2,246
---------+----------------------------------   F(3, 2242)      =      2.26
   Model |  224.409397         3  74.8031322   Prob > F        =    0.0794
Residual |   74143.558     2,242  33.0702756   R-squared       =    0.0030
---------+----------------------------------   Adj R-squared   =    0.0017
   Total |  74367.9674     2,245  33.1260434   Root MSE        =    5.7507
--------------------------------------------------------------------------
    wage |      Coef.   Std. Err.      t    P>|t|     [95% Conf. Interval]
---------+----------------------------------------------------------------
       T |   .0207734   .2430667     0.09   0.932    -.4558859    .4974328
     age |  -.0692555   .0396688    -1.75   0.081    -.1470469     .008536
 married |  -.4965241   .2532568    -1.96   0.050    -.9931663    .0001182
   _cons |   10.78741   1.573337     6.86   0.000     7.702057    13.87276
--------------------------------------------------------------------------

--------------------------------------------------------------------------
        Effect                 |  Mean           [95% Conf. Interval]
-------------------------------+------------------------------------------
        ACME                   |  .0017282     -.0202188      .0232875
        Direct Effect          |  .0315363     -.4083132      .4908015
        Total Effect           |  .0332645     -.4082737      .4941851
        % of Tot Eff mediated  |  .0040861     -.1086679      .1275682
-------------------------------------------------------------------------

结果表明,婚姻对工资的平均直接效应为 0.0315363,年龄的平均中介效应为 0.0017282,婚姻对工资的总效应为 0.0332645。

5. 小结

相比于传统的中介分析,因果中介分析可以处理一些更复杂的情况,比如 XM 的交互作用。然而因果中介分析对复杂情况的适应性也决定了它的分析过程比传统中介分析更为复杂。因此,在进行因果中介分析时,大家一定要小心分析,谨慎选择对应软件程序。

6. 参考资料

  • Valente M J, Rijnhart J J M, Smyth H L, et al. Causal Mediation Programs in R, M plus, SAS, SPSS, and Stata[J]. Structural Equation Modeling: A Multidisciplinary Journal, 2020, 27(6): 975-984. -Link-
  • Holland P W. Statistics and causal inference[J]. Journal of the American statistical Association, 1986, 81(396): 945-960. -Link-
  • Rubin D B. Estimating causal effects of treatments in randomized and nonrandomized studies[J]. Journal of educational Psychology, 1974, 66(5): 688. -Link-
  • Muthén B O, Muthén L K, Asparouhov T. Regression and mediation analysis using Mplus[M]. Los Angeles, CA: Muthén & Muthén, 2017. -Link-
  • Mplus User’s Guide. -Link-, -PDF-

7. 相关推文

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

相关课程

免费公开课

最新课程-直播课

专题 嘉宾 直播/回看视频
最新专题 文本分析、机器学习、效率专题、生存分析等
研究设计 连玉君 我的特斯拉-实证研究设计-幻灯片-
面板模型 连玉君 动态面板模型-幻灯片-
面板模型 连玉君 直击面板数据模型 [免费公开课,2小时]
  • Note: 部分课程的资料,PPT 等可以前往 连享会-直播课 主页查看,下载。

课程主页

课程主页

关于我们

  • Stata连享会 由中山大学连玉君老师团队创办,定期分享实证分析经验。
  • 连享会-主页知乎专栏,400+ 推文,实证分析不再抓狂。直播间 有很多视频课程,可以随时观看。
  • 公众号关键词搜索/回复 功能已经上线。大家可以在公众号左下角点击键盘图标,输入简要关键词,以便快速呈现历史推文,获取工具软件和数据下载。常见关键词:课程, 直播, 视频, 客服, 模型设定, 研究设计, stata, plus, 绘图, 编程, 面板, 论文重现, 可视化, RDD, DID, PSM, 合成控制法

连享会小程序:扫一扫,看推文,看视频……

扫码加入连享会微信群,提问交流更方便

✏ 连享会-常见问题解答:
https://gitee.com/lianxh/Course/wikis

New! lianxh 命令发布了:
随时搜索连享会推文、Stata 资源,安装命令如下:
. ssc install lianxh
使用详情参见帮助文件 (有惊喜):
. help lianxh