其实很早之前给大家写中介分析的做法的时候我也有思考过当中介变量或者因变量不是连续变量的时候,中介怎么做?或者说这个时候中介的结果如何解释?当时反正是一直没有太想明白这些问题,毕竟这些情况在发表的文献中也较少见,也就稀里糊涂过去了。

近期又被好多同学多次问及这些问题。想着逃避不过去了,试着看些文献给大家写写,而且我看中文的关于这些方面的讲解的资源也很少,希望我写下的东西能给大家一些启发。

传统中介方法

写反事实框架之前我们先回顾传统的中介做法,就是下面4步,其中第一步可以省略不要:

我们期望通过分析知道暴露对结局的作用有多大部分是被中介变量介导的。分析方法包括两种:

一种是difference method:

另外一种是Product method:

通过这两方法我们就计算出来了中介效应。但是比如说我的中介变量是一个二分类变量这个时候因为两个回归方程是不一样尺度的,一个线性回归,一个逻辑回归,这个时候再用上面的方法就完全是讲不通的。

Traditional mediation analysis defines direct and indirect effects in terms of linear regression coefficients. It is unclear how these traditional effects are estimated in settings with binary variables

就是说传统中介方法只能服务于线性回归框架,只适用于中介变量和结局变量均为连续变量的情况。当中介变量或者结局变量是非连续变量的时候整个中介效应就无法分解了。

Traditional mediation methods are also limited to simple linear models,all continuous exposure and mediators are assumed to have a linear effect. Incorporating non-linearities in the traditional approach is not straigthforward.

针对上述问题的解决方法就是换一个思维去看待中介作用。

反事实框架

反事实,或者叫潜在结局,指的是个案在我们设定的暴露情形下将会观测到的结局。

比如个案在干预条件下的结局表示为y1,在控制条件下观测到的结局表示为y0。如果同一个个案可以同时有两种结局,那么干预的效应就可以表示为y1-y0。这句加粗的话对理解反事实框架下的效应表达很重要,多读几遍,多感受下这句话的正确性。

但是这句话存在一个问题就是同一个个体不可能同时接受干预又在控制组,我们不可能同时观测到y1和y0。这与事实情况不符所以叫反事实或者潜在结局。

Participants cannot realistically serve in all conditions which is a Fundamental Problem of Causal Inference.

虽然对个体来讲不可实现,但是对群体来讲我们可以估计平均的y1和y0,从而可以得到平均干预效应the average causal intervention effect E[Yi(1) − Yi(0)]。

对中介分析来讲,在反事实框架中我们还涉及到中介变量m,反事实情形的表达就更加的复杂一些了,比如 E[Yi(1, m)]就表示当暴露为1中介变量为m的时候y的值,Mi(1)就是表示个案在干预组时中介变量的取值。

像这样的反事实结果表示还有很多,可以一张表格总结如下:

借助这些反事实的表达我们就可以用两个反事实结果的差值来定义中介作用了,这么一整套中介的定义方法就叫做基于反事实框架的因果中介。

Causal mediation analysis defines causal effects as the difference between two potential outcomes. These definitions can be applied to any mediation model to estimate natural direct and indirect effects, including models with binary variables and an exposure–mediator interaction.

基于反事实框架的因果中介

比如:

x对y的总效应就可以表示为x取a的时候y的期望与x取a的反事实时(a*)y的期望的差值,即:E[Y(X=a,M=M(a))] – E[Y(X=a*,M=M(a*))]

x对y的间接效应就可以表示为x取a的时候y的期望与x取a,m取a的反事实时(a*)y的期望的差值,即:E[Y(X=a,M=M(a))] – E[Y(X=a,M=M(a*))]

x对y的直接效应就可以表示为x取a,m取a的反事实时(a*)y的期望与x取a的反事实时(a*)y的期望的差值,即:E[Y(X=a,M=M(a*))] – E[Y(X=a*,M=M(a*))]

上面两个红色的式子相加刚好就是总效应。在考虑直接效应的时候m可以设定在不同的水平,设定在M(a*)时叫做自然直接效应,设定在别的水平时叫做控制直接效应

上面的叙述也可以总结成下图:

或者更详细一点,总结成如下图:

到这儿,在完全没有依赖于任何模型的情况下我们将整个中介分析重新定义了。

Causal inference methods for mediation analysis (“causal mediation”) are an extension of the traditional approach, developed to better address the main limitations described above. First, these methods allow for effect decomposition in the presence of X-M interaction by defining direct and indirect effects (controlled or natural) from a potential outcomes (PO) framework and developing estimations of these quantities that are not model specific。

理论上定义各种效应的表达确实没问题,但是这些效应都是两个反事实情况的差值,在实际情况下我又不能同时观测到两个反事实,那么这些基于反事实框架定义出来的中介效应值又如何算呢?

这个时候依然需要建模做预测(一个预测m的模型和一个预测y的模型),模型出来了后,我们可以利用模型得到每个个案的反事实结果,这样就可以得出直接效应和间接效应了。

和传统中介不同的是这些模型不是服务于效应分解的,是用来估计反事实结果的。

就是根据原来数据模拟预测然后得到个案的反事实结果,再根据反事实结果,得到中介的效应分解。比如我们来看一个实际例子:下面数据集中有5个个案,通过模型估计出每个个案的反事实结果,然后根据反事实框架的下效应的计算方法即可得到我们需要的中介效应:

比如上图中我们的总效应就是85-4.2,我们的自然间接效应就是31.4-4.2。

以上就是和大家分享的反事实框架下的因果中介理解方法,最后再给大家放一张总结图,图中详细地总结了上面的内容:

因果中介的结果报告

对于因果中介的结果表达,我们也来看一篇文献,文献来自Journal of the American College of Cardiology文献名字如下:

Long-Term Cardiovascular Risk in Women With Hypertension During Pregnancy

作者的研究了hypertensive disorder of pregnancy和cardiovascular disease的关系,利用因果中介方法探究了3个中介变量在上述关系中起到的中介作用。作者通过中介占比的显著性检验得到是否中介成立的结论,中介部分具体报告内容如下:

可以看到对于因果中介分析,作者就报告了中介占比的点估计和置信区间以及p值,省略了对各种间接效应的报告和解释(可能是因为作者的结局是个生存数据,效应解释起来蛮有挑战性的,报告中介占比其实也完全够了,所以没报)。大家写文章的时候完全可以借鉴。

上图的报告内容在R语言中的Mediation包中可以轻松实现,实操我们安排在下一篇文章,请持续关注。

文献推荐:

Rijnhart JJM, Valente MJ, Smyth HL, MacKinnon DP. Statistical Mediation Analysis for Models with a Binary Mediator and a Binary Outcome: the Differences Between Causal and Traditional Mediation Analysis. Prev Sci. 2023 Apr;24(3):408-418. doi: 10.1007/s11121-021-01308-6. Epub 2021 Nov 16. PMID: 34782926; PMCID: PMC9108123.

R数据分析:反事实框架和因果中介的理论理解的更多相关文章

  1. R数据分析:纵向数据如何做中介,交叉滞后中介模型介绍

    看似小小的中介,废了我好多脑细胞,这个东西真的不简单,从7月份有人问我,我多重中介,到现在的纵向数据中介,从一般的回归做法,到结构方程框架下的路径分析法,到反事实框架做法,从中介变量和因变量到是连续变 ...

  2. 【论文笔记】用反事实推断方法缓解标题党内容对推荐系统的影响 Click can be Cheating: Counterfactual Recommendation for Mitigating Clickbait Issue

    Click can be Cheating: Counterfactual Recommendation for Mitigating Clickbait Issue Authors: 王文杰,冯福利 ...

  3. R数据分析:潜类别轨迹模型LCTM的做法,实例解析

    最近看了好多潜类别轨迹latent class trajectory models的文章,发现这个方法和我之前常用的横断面数据的潜类别和潜剖面分析完全不是一个东西,做纵向轨迹的正宗流派还是这个方法,当 ...

  4. R数据分析:二分类因变量的混合效应,多水平logistics模型介绍

    今天给大家写广义混合效应模型Generalised Linear Random Intercept Model的第一部分 ,混合效应logistics回归模型,这个和线性混合效应模型一样也有好几个叫法 ...

  5. Django框架 之 ORM中介模型

    Django框架 之 ORM中介模型 中介模型 处理类似搭配 pizza 和 topping 这样简单的多对多关系时,使用标准的ManyToManyField  就可以了.但是,有时你可能需要关联数据 ...

  6. R数据分析:跟随top期刊手把手教你做一个临床预测模型

    临床预测模型也是大家比较感兴趣的,今天就带着大家看一篇临床预测模型的文章,并且用一个例子给大家过一遍做法. 这篇文章来自护理领域顶级期刊的文章,文章名在下面 Ballesta-Castillejos ...

  7. R数据分析:如何简洁高效地展示统计结果

    之前给大家写过一篇数据清洗的文章,解决的问题是你拿到原始数据后如何快速地对数据进行处理,处理到你基本上可以拿来分析的地步,其中介绍了如何选变量如何筛选个案,变量重新编码,如何去重,如何替换缺失值,如何 ...

  8. R数据分析:临床预测模型中校准曲线和DCA曲线的意义与做法

    之前给大家写过一个临床预测模型:R数据分析:跟随top期刊手把手教你做一个临床预测模型,里面其实都是比较基础的模型判别能力discrimination的一些指标,那么今天就再进一步,给大家分享一些和临 ...

  9. 游戏UI框架设计(一) : 架构设计理论篇

    游戏UI框架设计(一) ---架构设计理论篇 前几天(2017年2月)看到一篇文章,国内王健林.马云等大咖们看好的未来十大最有"钱途"产业中,排名第一的就是"泛娱乐&qu ...

  10. R数据分析:孟德尔随机化中介的原理和实操

    中介本身就是回归,基本上我看到的很多的调查性研究中在中介分析的方法部分都不会去提混杂,都是默认一个三角形画好,中介关系就算过去了,这里面默认的逻辑就是前两步回归中的混杂是一样的,计算中介效应的时候就自 ...

随机推荐

  1. .NET 工具库高效生成 PDF 文档

    前言 QuestPDF 是一个开源 .NET 库,用于生成 PDF 文档.使用了C# Fluent API方式可简化开发.减少错误并提高工作效率.利用它可以轻松生成 PDF 报告.发票.导出文件等. ...

  2. linux 内核中READ_ONCE宏定义

    在Linux内核编程中,READ_ONCE 宏用于确保从内存中读取一个变量的值时,编译器不会对这个读取操作进行优化,从而保证了读取操作的原子性.这个宏通常在需要防止编译器优化.多线程或中断上下文中使用 ...

  3. vue前端开发仿钉图系列(5)右侧编辑页面的开发详解

    右侧编辑页面主要有两个入口,一是添加marker或者线面双击结束的时候,新建数据信息:二是点击底部数据的单元行或者查看编辑或者点击地图上的marker以及线面,编辑相关数据.整理总结不易,如需全部代码 ...

  4. 封装setItem 和 getItem 本地存储

    store.js 文件 按需导出setItem 和 getItem 函数 :在utils文件里面 : export const setItem = (key, value) => { // 复杂 ...

  5. npm/yarn是什么,他们的区别 ? & node.js 又是个啥

    是什么? npm(全称Node Package Manager,即 node 包管理器) ,是Node.js默认的包管理系统 ; 区别: yarn 的速度开快,因为yarn 是并行安装,npm是串行安 ...

  6. HEU KMS:一款超稳的MS Windows激活工具

    HEU KMS ACTIVATOR是一款功能齐全的免费Windows和Office系列激活工具. 打开程序,一步到位.直接点击开始就可以准备激活,Windows11/10乃至更早的版本都可以通用,顺带 ...

  7. Graphische Datenverarbeitung Ⅰ 学习笔记

    1. Pipeline 1.1 Graphische Primitive 1.2 Model and View Transform 1.3 Vertex Shading 1.4 Clipping 1. ...

  8. 🎈Fluent Editor 富文本开源2个月的总结:增加格式刷、截屏、TypeScript 类型声明等新特性

    你好,我是 Kagol,个人公众号:前端开源星球. Fluent Editor 是一个基于 Quill 2.0 的富文本编辑器,在 Quill 基础上扩展了丰富的模块和格式,框架无关. 功能强大.开箱 ...

  9. windows当中C++版本的Opencv安装(动态库+静态库)

    主要参考2篇博客,其实就是dll文件和lib文件的使用方法而已.链接如下: 1.静态库opencv配置 2.动态库opencv安装

  10. 如何在原生鸿蒙APP中使用RN的bundle包

    一.创作背景 上一篇博客中,我给大家分享了如何创建一个RN的项目,并且解决了其中的问题点,成功打出了Bundle包.接下来就是我给大家分享一下,如何在原生鸿蒙项目中使用那个Bundle包,这一篇分享完 ...