R数据分析:反事实框架和因果中介的理论理解
其实很早之前给大家写中介分析的做法的时候我也有思考过当中介变量或者因变量不是连续变量的时候,中介怎么做?或者说这个时候中介的结果如何解释?当时反正是一直没有太想明白这些问题,毕竟这些情况在发表的文献中也较少见,也就稀里糊涂过去了。
近期又被好多同学多次问及这些问题。想着逃避不过去了,试着看些文献给大家写写,而且我看中文的关于这些方面的讲解的资源也很少,希望我写下的东西能给大家一些启发。
传统中介方法
写反事实框架之前我们先回顾传统的中介做法,就是下面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数据分析:反事实框架和因果中介的理论理解的更多相关文章
- R数据分析:纵向数据如何做中介,交叉滞后中介模型介绍
看似小小的中介,废了我好多脑细胞,这个东西真的不简单,从7月份有人问我,我多重中介,到现在的纵向数据中介,从一般的回归做法,到结构方程框架下的路径分析法,到反事实框架做法,从中介变量和因变量到是连续变 ...
- 【论文笔记】用反事实推断方法缓解标题党内容对推荐系统的影响 Click can be Cheating: Counterfactual Recommendation for Mitigating Clickbait Issue
Click can be Cheating: Counterfactual Recommendation for Mitigating Clickbait Issue Authors: 王文杰,冯福利 ...
- R数据分析:潜类别轨迹模型LCTM的做法,实例解析
最近看了好多潜类别轨迹latent class trajectory models的文章,发现这个方法和我之前常用的横断面数据的潜类别和潜剖面分析完全不是一个东西,做纵向轨迹的正宗流派还是这个方法,当 ...
- R数据分析:二分类因变量的混合效应,多水平logistics模型介绍
今天给大家写广义混合效应模型Generalised Linear Random Intercept Model的第一部分 ,混合效应logistics回归模型,这个和线性混合效应模型一样也有好几个叫法 ...
- Django框架 之 ORM中介模型
Django框架 之 ORM中介模型 中介模型 处理类似搭配 pizza 和 topping 这样简单的多对多关系时,使用标准的ManyToManyField 就可以了.但是,有时你可能需要关联数据 ...
- R数据分析:跟随top期刊手把手教你做一个临床预测模型
临床预测模型也是大家比较感兴趣的,今天就带着大家看一篇临床预测模型的文章,并且用一个例子给大家过一遍做法. 这篇文章来自护理领域顶级期刊的文章,文章名在下面 Ballesta-Castillejos ...
- R数据分析:如何简洁高效地展示统计结果
之前给大家写过一篇数据清洗的文章,解决的问题是你拿到原始数据后如何快速地对数据进行处理,处理到你基本上可以拿来分析的地步,其中介绍了如何选变量如何筛选个案,变量重新编码,如何去重,如何替换缺失值,如何 ...
- R数据分析:临床预测模型中校准曲线和DCA曲线的意义与做法
之前给大家写过一个临床预测模型:R数据分析:跟随top期刊手把手教你做一个临床预测模型,里面其实都是比较基础的模型判别能力discrimination的一些指标,那么今天就再进一步,给大家分享一些和临 ...
- 游戏UI框架设计(一) : 架构设计理论篇
游戏UI框架设计(一) ---架构设计理论篇 前几天(2017年2月)看到一篇文章,国内王健林.马云等大咖们看好的未来十大最有"钱途"产业中,排名第一的就是"泛娱乐&qu ...
- R数据分析:孟德尔随机化中介的原理和实操
中介本身就是回归,基本上我看到的很多的调查性研究中在中介分析的方法部分都不会去提混杂,都是默认一个三角形画好,中介关系就算过去了,这里面默认的逻辑就是前两步回归中的混杂是一样的,计算中介效应的时候就自 ...
随机推荐
- Java Web 拾遗
许是年纪大了,老是回忆起以前的点点滴滴.翻看当初的代码,如同偶遇多年未见的前女友,曾经一起深入交流的情谊在颔首之间消散,令人烦躁. 今天就来聊聊老生常谈的 Java Web 开发.缘于一个简单的Spr ...
- 【赵渝强老师】删除表和Oracle的回收站
一.Oracle的Drop Table语句 首先,我们来看一下Oracle Drop Table的语法格式. 解释一下里面的参数: schema Schema表示方案名称,这里可以理解为用户名,缺省为 ...
- 运维管理平台OEM定制集成开发,激发IT价值
对硬件设备商而言,借助优秀的网管.运维管理平台,可以形成完整的产品解决方案,直接提升产品的形象和适用范围.同时还可以通过网管.运维管理平台,切入到外围的产品及集成领域,并在用户后续的升级改造活动中占据 ...
- 封装setItem 和 getItem 本地存储
store.js 文件 按需导出setItem 和 getItem 函数 :在utils文件里面 : export const setItem = (key, value) => { // 复杂 ...
- 谈一谈 vuex 里边,actions,mutations ,state 之间的运转方式
首先,调用 actions 中的方法,一般我们在 actions 做登录和登出的请求 : 然后调用 mutations 的方法修改数据 ,因为 mutations 方法是修改state的数据的唯一方法 ...
- 集成InfluxDb, telegraf, Grafana, App Metrics以记录性能指标
前情概要 刚好有半天得闲功夫, 从项目里面找个功能来水一篇文章. 上线的项目通常都是需要做性能数据收集工作的, 它好处就不想打字了. 业界有很多套方案, 工具[收费的, 免费的], 收集采用[拉取的, ...
- Monaco Editor 实现一个日志查看器
我们是袋鼠云数栈 UED 团队,致力于打造优秀的一站式数据中台产品.我们始终保持工匠精神,探索前端道路,为社区积累并传播经验价值. 本文作者:文长 前言 在 Web IDE 中,控制台中展示日志是至关 ...
- 数据运算中关于字符串""的拼接问题
例子中准备了3种类型数据,分别针对是否在运算存在空字符串参与运算进行了演示,结果如下: 1 int x = 10; 2 double y = 20.2; 3 long z = 10L; 4 Syste ...
- Machine Learning Week_1 Welcome
目录 0 Welcome 0.1 Video: Welcome to Machine Learning! Transcript unfamiliar words 0.2 Reading: Machin ...
- 项目中maven依赖无法自动下载
[解决方法]: 安装目录conf--修改settting.xml文件在mirrors标签下添加子节点 <mirrors> <!-- mirror | Specifies a repo ...