R数据分析:反事实框架和因果中介的理论理解

news2025/7/23 19:10:47

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

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

传统中介方法

写反事实框架之前我们先回顾传统的中介做法,就是下面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.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1156960.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

作为20年老程序员,我如何使用GPT4来帮我写代码

如果你还在用google寻找解决代码bug的方案,那你真的out了,试试gpt4, save my life. 不是小编危言耸听,最近用gpt4来写代码极大地提高了代码生产力和运行效率,今天特地跟大家分享一下。 https://www.promptspower.comhttps://www.…

.WP、.WL、.WT格式数据转Shp解决方案

下载 http://dt3.8tupian.net/2/29913a52b1000.pg3操作办法:mapgis创建数据库——导入.WP、.WL、.WT格式数据——导出shp数据 (1)安装mapgis10.6高级版(有一个月得试用期); (2)打开mapgis右侧MapGISLocal右键创建数据库&#xff…

Day15力扣打卡

打卡记录 使数组变美的最小增量运算数&#xff08;动态规划&#xff09; 链接 class Solution { public:long long minIncrementOperations(vector<int>& nums, int k) {long long f0 0, f1 0, f2 0;for (int x : nums) {long long inc f0 max(k - x, 0);f0 …

【计算机网络笔记】传输层——可靠数据传输原理之Rdt协议

系列文章目录 什么是计算机网络&#xff1f; 什么是网络协议&#xff1f; 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 分组交换 vs 电路交换 计算机网络性能&#xff08;1&#xff09;——速率、带宽、延迟 计算机网络性能&#xff08;2&#xff09;…

2023年10月随笔之婚宴趣事多

1. 回头看 日更坚持了304天。 读《高性能MySQL&#xff08;第4版&#xff09;》更新完成 学信息系统项目管理师第4版系列主体部分更新完成&#xff0c;仅余结语预计11月5日后更新 读《图数据库实战》开更 10月码字125384字&#xff0c;日均码字数4044字&#xff0c;累计码…

如何创建 SpringBoot 多模块项目

1. 创建父模块 【添加依赖】 【删除父模块资源】 父模块只需要保留 pom.xml&#xff0c;其他文件的全部删除&#xff08;包括 src&#xff09; 2. 创建子模块 3. 修改父模块 3.1 删除不必要的依赖 3.2 添加打包类型 3.3 添加所有子模块 声明子模块有两个好处&#xff1a; …

LeetCode136——只出现一次的数字

LeetCode136——只出现一次的数字 给你一个 非空 整数数组 nums &#xff0c;除了某个元素只出现一次以外&#xff0c;其余每个元素均出现两次。找出那个只出现了一次的元素。 你必须设计并实现线性时间复杂度的算法来解决此问题&#xff0c;且该算法只使用常量额外空间。 R…

面试官:Nacos有几种负载均衡策略?

作者 | 磊哥 来源 | Java中文社群&#xff08;ID&#xff1a;javacn666&#xff09; 转载请联系授权&#xff08;微信ID&#xff1a;GG_Stone&#xff09; Nacos 作为目前主流的微服务中间件&#xff0c;包含了两个顶级的微服务功能&#xff1a;配置中心和注册中心。 1.配置中心…

10月第4周榜单丨飞瓜数据B站UP主排行榜榜单(B站平台)发布!

飞瓜轻数发布2023年10月23日-10月29日飞瓜数据UP主排行榜&#xff08;B站平台&#xff09;&#xff0c;通过充电数、涨粉数、成长指数、带货数据等维度来体现UP主账号成长的情况&#xff0c;为用户提供B站号综合价值的数据参考&#xff0c;根据UP主成长情况用户能够快速找到运营…

【数智化案例展】某国有电力企业——看电力公司如何做好数据资产高效管理,赋能业务决策...

‍ 逸迅科技案例 本项目案例由逸迅科技投递并参与数据猿与上海大数据联盟联合推出的《2023中国数智化转型升级创新服务企业》榜单/奖项”评选。 ‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 2020年8月25日&#xff0c;国资委办公厅颁布《关于加快推进国有企业数字化转型…

SpringBoot概要简介SpringBoot入门,pom文件剖析,打jar包以及banner的修改(附banner生成网址)

SpringBoot概要 SpringBoot介绍 随着动态语言的流行&#xff08;Ruby、Scala、Node.js&#xff09;, Java的开发显得格外的笨重&#xff1b;繁多的配置、低下的开发效率、复杂的部署流程以及第三方技术整合难度大。 在上述环境下&#xff0c;Spring Boot由此诞生&#xff0c…

C++前缀和算法的应用:统计上升四元组

C前缀和算法的应用&#xff1a;统计上升四元组 本文涉及的基础知识点 C算法&#xff1a;前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 题目 给你一个长度为 n 下标从 0 开始的整数数组 nums &#xff0c;它包含 1 到 n 的所有数字&#xff0c;请你返回上…

基于松鼠算法的无人机航迹规划-附代码

基于松鼠算法的无人机航迹规划 文章目录 基于松鼠算法的无人机航迹规划1.松鼠搜索算法2.无人机飞行环境建模3.无人机航迹规划建模4.实验结果4.1地图创建4.2 航迹规划 5.参考文献6.Matlab代码 摘要&#xff1a;本文主要介绍利用松鼠算法来优化无人机航迹规划。 1.松鼠搜索算法 …

EasyRecovery16优秀的电脑数据恢复软件

你是不是也有过这样的经历&#xff0c;当需要一个文件的时候&#xff0c;却发现不小心被删除了&#xff1b;或者在某个瞬间身体像不受大脑控制般&#xff0c;按下删除或格式化键。气的半夜都能从床上爬起来抽自己一巴掌&#xff0c;反正我是这样的。 我从小到大不小心删除和格…

PowerToys使用:Windows自定义键盘(非编程)

使用紧凑型键盘或者苹果键盘有时候觉得挺麻烦&#xff0c;常用的键偏偏没有&#xff0c;特别是苹果键盘&#xff0c;没有【del】键&#xff0c;非常非常不爽。 笔记本电脑用久了&#xff0c;难免弄坏一两个键&#xff0c;比如【s】键&#xff0c;维修挺麻烦的&#xff0c;换新太…

第五章 子图的绘制及坐标轴共享

第五章 子图的绘制及坐标轴共享 1.绘制固定区域的子图 ​ matplotlib可以将整个画布规划成等分布局的mn&#xff08;行列&#xff09;的矩阵区域&#xff0c;并按照先行后列的方式对每个区域进行编号&#xff08;编号从1开始&#xff09;&#xff0c;之后在选中的某个或某些区…

在图表中添加图例plt.legend()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 在图表中添加图例 plt.legend() plt.legend的作用是? import matplotlib.pyplot as plt x [1, 2, 3, 4, 5] y1 [1, 2, 4, 8, 16] y2 [1, 3, 9, 27, 81] fig, (ax1, ax2) plt.sub…

Mysql系列-索引类型

一 、索引类型别 根据叶子节点的内容分类的索引类型 InnoDB 使用B tree 索引模型&#xff0c;根据叶子节点是否存储数&#xff08;根据叶子节点的内容&#xff09;分为主键索引和非主键索引&#xff1b;非主键索引包括&#xff1a;普通索引、唯一索引、组合索引主键索引的叶子…

sql-50练习题16-20

sql-50练习题16-20 前言数据库表结构介绍学生表课程表成绩表教师表 1-6 检索"01"课程分数小于60&#xff0c;按分数降序排列的学生信息1-7 按平均成绩从高到低显示所有学生的所有课程的成绩以及平均成绩1-8 查询各科成绩最高分、最低分和平均分&#xff1a;以如下形式…

上海亚商投顾:三大指数小幅调整,医药股继续活跃

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 市场情绪 沪指昨日弱势震荡&#xff0c;尾盘探底回升一度翻红&#xff0c;深成指盘中跌超1%&#xff0c;午后跌幅有所收窄。…