引入

首先我们需要明确相关性和因果推断本质上有什么区别?
最大的区别是是否控制了混杂因素。(理论上,当回归控制了所有可观测和不可观测的混杂因素,就可以探究因果关系),Causal analysis可以简单理解为 regression analysis (or any analysis) + hypothesis

在之前的几篇中,我们学习了传统的中介分析方法

中介分析(一)
中介分析(二)多重中介分析
中介分析(三):R语言lavaan包实现
关于中介分析的一些补充

1 传统中介分析模型的局限

传统中介分析是基于系数乘积法或系数差值法来估计间接效应
如上图中间接效应被定义和估计为 a 和 b 系数的乘积 (ab) 或者 c 系数和 c’ 系数之间的差 (c-c’)。当回归时,这两个间接效应在数学上是等价的

1. 传统中介分析是基于参数回归假设

传统中介分析假设线性回归模型的残差是呈正态分布的,且模型中的自变量满足方差齐性,a、b、c 和 c’ 系数代表其正确的函数形式(例如,线性或二次),观测样本间互相独立,并且假设估计的效应没有效应修正因子或混杂因素的干扰。

其中效应修正因子的干扰可以考虑通过在模型中包括交互项(i.e., exposure-by-covariate or mediator-by-covariate),随后估计效应修正因子取不同值时的直接和间接效应来解释。

2. 传统中介不适用于离散中介变量或者结果变量

当使用传统中介分析来估计具有非连续中介变量或结果变量的中介模型的效应时,就会出现歧义。例如,当基于来自非线性回归模型,例如逻辑回归或 Cox 比例风险回归。系数乘积和系数差值方法会提供不同的间接效应估计(ab != c-c’)

3. 此外,尽管在传统中介分析的文献中建议评估exposure- mediator交互作用,但么有给出具有暴露-中介交互作用的中介模型的效应估计和解释的指导

2 因果中介分析

因果中介分析可以在暴露-中介交互作用存在时,基于潜在结果框架(potential outcomes framework),将总暴露效应分解为因果直接影响和间接影响

因果效应定义的一个优势是它是非参数的,因此可以应用于任何类型的中介模型以得出因果效应估计,包括具有暴露-中介交互作用的模型和具有非连续中介变量或非连续结果变量的模型等

假如我们中介分析拟合以下三个模型:
如果满足以下五个假设,则ab 是中介效应(也称为间接效应)的因果估计量:

(1)X - Y 间没有混淆因素,
(2)X - M 间没有混淆因素(3)  M - Y 间没有混淆因素(4)  M 到 Y 间关联不会受到的 X 的混淆影响同时也假设(5) X 和 M 之间不存在影响 Y 的交互作用,尽管如果需要,将交互作用添加到等式 3 可提供对该关系的估计。

将参与者随机分配到 X 水平消除了混淆 X 与 M 和 X 与 Y 的关系的可能性(假设1和2),但未能解决(3)M - Y 间没有混淆因素以及(4) M 到 Y 间关联不会受到的 X 的混淆影响的假设
即使对于研究人员将参与者随机分配到 X 水平的实验性中介设计,M 和 Y 之间的关系(b 效应)也无法提供作为因果效应的明确解释,从而限制了对中介分析的间接效应的解释。

反事实和潜在结果模型Counterfactual and Potential Outcomes Model

理想情况下,在一项完美的因果推理的实验中,同一参与者应该同时参与治疗组(treatment)和对照组(control group),并在每种条件下对因变量进行评估。那么显而易见这是不可能发生的,例如,要了解童年时期社会阶层对健康的影响,一个人必须在较低的社会阶层中长大并接受健康评估,同时还要在较高的社会阶层中成长并接受健康评估。两种健康评估之间的差异为社会阶层对该人健康的影响提供了因果证据。然而,很明显,一个人不能同时在下层和上层社会环境中成长,也就是说,一个人通常不能参与每个实验条件并提供每个条件下因变量的评估。

Causal effect definition

因果效应定义是基于这样一个假设,即每个单独的被试对于每个治疗水平(treatment or control)都有一个潜在的结果值。

例如,假设治疗 X 是具有两个水平 (X = 0 和 X = 1) 的二元变量,每个单独的被试(表示为 i),如果处于 X = 0 水平,他的结果变量为 Yi (0 ),如果该被试处于 X = 1 水平,他的结果变量即为 Yi (1)。个体层面的因果效应为 Yi (1) – Yi (0)。

然而,不可能在这两种情况下观察到每个个体的结果。也就是说, 对于分配到 X = 0 的个人,将观察到 Yi (0) 而不是 Yi (1),而对于分配到级别 X = 1 的个人,将观察到 Yi (1) 而不是 Yi (0). 那么假设治疗组和对照组在没有混杂的情况下可以互换,因果治疗效果就可以在平均水平上估计,即casual effect = E[Yi (1)-Yi (0)]。

每个被试的潜在中介值不依赖于其他被试的治疗状态,每个被试的潜在结果也不依赖于其他被试的治疗状态和中介值。

那么我们可以用 E[Yi(0, m)] 表示将中介变量固定在值为 m 时,在对照组中观察到的个体 Y 值,E[Yi(1, m)] 表示将中介变量固定在值为 m 时,中介变量的值也可以保持不变,如果被试在对照组,即表示为 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))]) 表示治疗组中个体的平均结果值,其中介变量值固定为在治疗组观察到的期望值。

因果中介分析自然地将 XM 交互作用纳入效应估计中。当存在 XM 交互时,治疗结果效应因中介水平而异,而中介结果效应因治疗水平而异。

Causal effect estimation

有几种软件程序可用于估计因果中介效应,包括 SAS 和 SPSS mediation macros、 Stata PARAMED macro,SAS 中的 PROC CAUSALMED、Stata 中的 Med4Way macro、Mplus 中的 MODEL INDIRECT 语句 、 R 中"mediation" 包和 “MedFlex” 包。所有这些程序都需要估计两个回归方程作为输入来估计单中介模型的因果效应:

当没有 XM 交互时,等式 (2 )中的 h 系数接近零。

因果直接效应、因果间接和总效应被定义为两个潜在结果之间的差异。总共定义了六种因果效应:1) total natural indirect effect; 2)pure natural indirect effect; 3) total natural direct effect; 4) pure natural direct effect; 5)controlled direct effect; and 6) total effect.
CDE 是 TE 中非交互和非中介的部分
当不存在XM交互以及不是非线性时,TNDE = PNDE, TNIE = PNIE.
以上h为XM交互项的系数。

R语言因果中介分析实现

这里我们以R语言“mediation”包为例,“mediation”包可以提供给我们
Average Direct Effect (ADE) (treated) (即TNDE), ADE (control) (即PNDE), Average Causal Mediated Effect (ACME) (treated) (即TNIE),ACME (control) (即 PNIE) 以及TE, 但是不提供CDE.

(1)首先, “mediation” 包使用 “lm” 函数估计公式(1)和(2)中的所有参数;
(2)其次,对每个被试计算四种潜在结果E[Yi (1, Mi (1))])、E[Yi (1, Mi (0))])、E[Yi (0, Mi (1))]) 和 E [Yi (0, Mi(0))])
(3)第三,计算因果中介效应 (比如: PNIE = Yi((0, Mi(1)) − Y(0, Mi(0))).

示例代码如下:

a<-lm(M~X+COV)
b<-lm(Y~X*M+COV)
set.seed(1234)
contcont <- mediate(a, b, sims=2000, treat="X", mediator="M",boot = T,boot.ci.type = 'bca')
summary(contcont)

参考:1. 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.
2. Tingley D, Yamamoto T, Hirose K, et al. Mediation: R package for causal mediation analysis[J]. 2014.
3. MacKinnon D P, Valente M J, Gonzalez O. The correspondence between causal and traditional mediation analysis: The link is the mediator by treatment interaction[J]. Prevention Science, 2020, 21(2): 147-157.
4. https://www.publichealth.columbia.edu/research/population-health-methods/causal-mediation.

如果有帮助的话,欢迎关注我的公众号:聊无的学习笔记

中介分析(四)- 因果中介分析相关推荐

  1. 2022-2028年中国草炭行业市场深度分析及发展趋向分析报告

    [报告类型]产业研究 [报告价格]4500起 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了中国草炭行业市场行业相关概述.中国草炭行业市 ...

  2. 2022版中国科技中介服务产业运行现状分析与发展机遇规划报告

    2022版中国科技中介服务产业运行现状分析与发展机遇规划报告 -------------------------------------  <修订日期>:2022年2月 <出版单位& ...

  3. 一个房屋中介业务建模的实例分析

    一位名叫Midhael Yan的朋友给我发来一封信,信中谈到这样一个问题.我觉得很有代表性,因此公开发布到BLOG上.这位朋友的问题是这样的: 一个租房中介准备提供一个网上中介服务系统,主要包括以下服 ...

  4. 学习笔记34—中介效应分析与调节效应分析

    一.中介效应分析 1)中介效应分析模型和概念: 模型来自文献:中介效应分析: 原理.程序.方法及其应用(作者:陈瑞) 请参考链接: https://wenku.baidu.com/view/886e8 ...

  5. Android 8.1 PowerManagerService分析(四)——亮屏流程分析

    欢迎大家关注我的掘金帐号 我会在那里定期更新最新版本的Android Framework源码分析! 相关文章: [Android Framework] 8.1 PowerManagerService分 ...

  6. 手机自动化测试:Appium源码分析之跟踪代码分析四 1

    手机自动化测试:Appium源码分析之跟踪代码分析四 控制器模块 // Appium webserver controller methods // https://github.com/hugs/a ...

  7. 20155222卢梓杰 实验四 恶意代码分析

    实验四 恶意代码分析 1.系统运行监控 实验步骤如下 1.使用批处理监控程序连接网络的状况 在C盘要目录下建一个文件c:\netstatlog.bat,内容如下: date /t >> c ...

  8. ArcGIS网络分析之Silverlight客户端最近设施点分析(四)

    ArcGIS网络分析之Silverlight客户端最近设施点分析(四) 原文:ArcGIS网络分析之Silverlight客户端最近设施点分析(四) 在上一篇中说了如何实现最近路径分析,本篇将讨论如何 ...

  9. 20155235 《网络攻防》 实验四 恶意代码分析

    20155235 <网络攻防> 实验四 恶意代码分析 实验目的 是监控你自己系统的运行状态,看有没有可疑的程序在运行. 是分析一个恶意软件,就分析Exp2或Exp3中生成后门软件:分析工具 ...

  10. 20145231熊梓宏 《网络对抗》 实验四 恶意代码分析

    20145231熊梓宏 <网络对抗> 实验四 恶意代码分析 基础问题回答 1.如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么.请设计下你想监控的操 ...

最新文章

  1. C++条件变量使用详解
  2. Cordova环境搭建
  3. Supercomputer 解题报告
  4. CDI和EJB:在事务成功时发送异步邮件
  5. python情感分析预测模型_python snownlp情感分析简易demo
  6. hdu 1186(搜索+HASH)
  7. android 多线程编程
  8. 数据结构与算法(Python)第一天
  9. ASP.NET Core Web多语言项目
  10. 【关系抽取】从头来看关系抽取-远程监督来袭
  11. 自动驾驶高精地图-概述与分析
  12. 第5章-着色基础-5.4-锯齿和抗锯齿
  13. win10开始菜单没有反应
  14. 百度Apollo的dreamview的frontend的数据传输部分简单梳理
  15. Springboot连接mysql数据库(jdbcTemplate)
  16. 李嘉诚,原一平的故事
  17. 一键获取隐藏Wi-Fi SSID:利用Python和Scapy发现隐藏无线热点
  18. Android应届生在杭州的求职经历
  19. php 日文汉字代码,日文UTF-8编码
  20. python按日期排序_Python List拆分,按日期排序,然后加入

热门文章

  1. Notion使用详解三Notion小传
  2. 全网最详细的Yolov3训练Caltech Pedestrain数据集并绘制fppi miss rate图
  3. Android如何关闭硬件加速
  4. vue2中监听watch的写法汇总
  5. 计算机之父的童年故事教案,《计算机之父的童年故事》教学设计
  6. win10将用户文件夹改为英文
  7. Thermal engine 解析
  8. Dynamsoft Barcode Reader Crack,强大而快速的条码解码
  9. iOS深拷贝和浅拷贝
  10. chisel线网(wire)和寄存器(reg)详解(更新)