R数据分析:孟德尔随机化中介的原理和实操
中介本身就是回归,基本上我看到的很多的调查性研究中在中介分析的方法部分都不会去提混杂,都是默认一个三角形画好,中介关系就算过去了,这里面默认的逻辑就是前两步回归中的混杂是一样的,计算中介效应的时候就自动消掉了。
但是,实际上对不对,还是有待具体分析的:
Traditional, non-instrumental variable methods for mediation analysis experience a number of methodological difficulties, including bias due to confounding between an exposure, mediator and outcome and measurement error
孟德尔随机化作为一个天然的免去混杂的方法,和中介结合,整个中介又变得更纯净了,是一种更加值得推崇的中介做法,也是孟德尔随机化研究的必要的延申。
今天给大家介绍孟德尔随机化中介分析的两个方法multivariable MR (MVMR) and two-step MR
先回顾中介作用
中介分析的基本的概念,就是大家熟悉的三角形:
c是总效应,加上中介变量后,A*B是间接效应,C'是直接效应,有总效应=间接效应+直接效应。
上图中如果总效应,直接效应和间接效应方向都相同的情况下,我们还可以报告中介效应比例,为间接效应比上总效应。
上面的图中的中介效应成立依赖几个假设:
首先就是没有混杂,包括变量之间没有混杂(或者像前面写的直接抵消);暴露不会造成额外混杂;暴露和中介变量没有交互。
再看孟德尔随机化的优势之一就是不受混杂影响,得到纯净的效应,所以将孟德尔随机化延伸一步去探究中介有天然优势。
MR approach retains the benefits of using genetic instruments for causal inference, such as avoiding bias due to confounding, while allowing for estimation of the different effects required for mediation analysis
multivariable MR
按照传统的回归中介的做法思想,我们如果可以跑多变量孟德尔,就可以做出中介分析的结果,具体就是两个暴露的孟德尔,一个是我们关心的暴露,另一个是中介。
MVMR estimates the “direct” causal effects of each exposure included in the estimation on the outcome, conditional on the other exposures included in the model.
跑多变量孟德尔后我们就可以得到中介模型中的直接效应:
就是说这样子跑下来我们就可以得到下图中的c'(直接效应)和B:
再加上我们单独跑一个暴露到结局的孟德尔,我们就有总效应了,利用总效应减去直接效应我们就可以得到间接效应(有了b,a也就出来了),整个中介分析就跑完了,这个就是多变量孟德尔跑中介分析的逻辑。
MR estimates the “total” effect of the exposure on the outcome, whereas MVMR estimates the “direct” effect of each exposure on the outcome
The genetic instrument for both the primary exposure and the second exposure (mediator) are included as instruments in the analysis . The indirect effect can then be estimated by subtracting the direct effect from the total effect (akin to the difference in coefficients method)
Two-step MR
此方法也可以用来计算中介,分为两步,第一步是计算暴露对中介变量的效应得到a,第二步是计算中介到结局的效应得到b,然后两系数相乘得到中介效应。
用总效应(单独跑一个暴露到结局的孟德尔,我们就有总效应了)减去中介效应后得到直接效应,到这儿所有的系数都有了。
The indirect effect of the exposure on the outcome can then be calculated by multiplying the effect of the exposure on the mediator and the effect of the mediator on the outcome. This is equivalent to the product of coefficients method of mediation analysis.
普通的回归肯定是不能这么做的(要得到系数B必须控制暴露),但是我们是跑的孟德尔,就意味着此时的我们跑出来的暴露到中介的效应A是纯净的,相应地B也是纯净的,所以我们才能这么跑。
两步孟德尔在跑的时候要注意,第二步使用的工具变量需要排除第一步就使用过的,因为合格的工具变量本身就不能重复,按理说两步的工具变量本身不应该存在重复,所以如果有重复在第二步的时候得排除掉。
First, genetic IVs associated with the risk factor are used to determine the causal effect of the risk factor on the potential mediator (step one). Secondly, genetic IVs associated with the potential mediator and independent of those used for step one are used to determine the effect of the potential mediator on the outcome of interest (step two)
上面两种方法都是孟德尔中介做法的思想,具体到操作上会有一些问题,比如用MVMR我们得到直接效应,用总效应减去直接效应我们其实只能得到间接效应的点估计,同样的,Two-step MR也存在这个问题,我们只能得到间接效应的点估计,怎么求标准误,和置信区间是在实操中要解决的问题。
下面给大家介绍几种解决方法。
delta方法
上面的流程跑通之后,对于中介分析,我们需要报告间接效应的估计值和置信区间,还有中介比例的估计值和置信区间,类似下面的这样:
但是其实我们是光跑孟德尔是得不到上面的需要的值的(比如间接效应的标准误,中介比例的标准误),此时需要借助的方法之一叫做delta method。
As individual level data is not available in summary data MR, bootstrapping cannot be used to estimate the confidence intervals for the indirect effect or proportion mediated, but the delta method can be used to approximate these confidence intervals if samples are independent
delta method可以帮助我们得到ab相乘的标准误,从而算出中介效应的置信区间。
也就是说我们知道了A,B路径的点估计和标准误,根据上面的公式就可以得到间接效应的置信区间,在R中实现起来也容易的,使用RMediation包,这个包作者有开发shiny应用,输入A,B的估计值和标准误就可以得到间接效应的估计值和标准误和置信区间了(下图圈内):
bootstrap方法
bootstrap方法也可以用来帮助我们计算中介效应和中介比例的置信区间:
Bootstrapping is a technique used in inferential statistics that work on building random samples of single datasets again and again. Bootstrapping allows calculating measures such as mean, median, mode, confidence intervals, etc. of the sampling.
bootstrap基本思路是对原来的分析数据进行有放回的随机抽样形成抽样数据集,bootstrap1000次就会形成1000个抽样数据集,每个抽样数据集都可以算我们需要的统计量,这样统计量的分布就出来了,也就有了置信区间。
bootstrap对象生成后计算中介效应和中介比例部分代码见下:
通过bootstrap形成比如1000个统计量的分布后,取0.025,0.975百分位就是95置信区间.
此处我们再补一个bootstrap过程的例子,在做bootstrap的时候我们需要用到boot函数,主要参数就3个:
其中最重要的就是我们需要计算的统计量statistic,这个是以函数的形式给出的,并且该函数接受不少于2个参数,一个是数据,另一个是抽样的indices。
为了对比我先将跑的孟德尔随机化的结果贴出来:
结果中有正常跑出来的b和对应的se,我通过bootstrap再将5个se跑出来,作为对比演示,代码如下:
mr_function <- function(data, indices) {
d <- dat[indices,]
jieguo <- mr(d)
return(jieguo %>% pull(b))
}
reps_mr <- boot(data=dat, statistic=mr_function, R=1000)
上面的代码中mr_function是我要喂给boot函数的statistic参数,在mr_function已经申明了我返回的值,也就是我要bootstrap的统计量是MR结果的b,所以运行完了会出来5个b的bootstrap的SE。
因为计算时间太长,上面就只设置了抽1000个数据集,数据不算很密,看看情况:
可以看到5种方法的系数的bootstrapt标准误都出来了,但是t3也就是IVW方法的标准误通过bootstrap是最接近原来值的,这应该也是为什么报告中介都是依照IVW的系数的原因之一。
上面演示的目的只是bootstrap的做法过程,实际我们需要改动mr_function中的return为我们需要的统计量,也就是中介效应和中介效应占比。
Propagation of error
再计算中介效应和中介比例的置信区间时也可以用误差传染法,比如下面这篇文献:
这个方法比较好理解,顺带也写个例子给大家介绍一下
Propagation of error refers to the methods used to determine how the uncertainty in a
calculated result is related to the uncertainties in the individual measure
误差传染法的计算积的标准差的过程如下:
完全是初中的多项式乘法,中间涉及到把较小的项删掉,应该看懂没问题,这儿就不写解释了。商的标准差计算如下:
中间过程涉及到高中的极限,总体也不难,上面的方法就是“误差传染法”Propagation of error。掌握积和商的标准差的算法后,我们在用Two-step MR得到a和b之后就可以得到得到中介效应ab的置信区间,相应地用商的标准差算法可以算出中介占比的置信区间。
上面介绍的方法帮助我们计算出来标准误后通过正态近似后和界值对比即可得到相应的p值,比如中介效应分布画出来后和界值0对比,分布曲线下横轴和0轴曲线下面积即为p值。
整个的孟德尔随机化中介就给大家分享完了。
R数据分析:孟德尔随机化中介的原理和实操的更多相关文章
- kafka拦截器原理|案例实操
拦截器原理 Producer拦截器(interceptor)是在Kafka 0.10版本被引入的,主要用于实现clients端的定制化控制逻辑. 对于producer而言,interceptor使得用 ...
- 有相关性就有因果关系吗,教你玩转孟德尔随机化分析(mendelian randomization )
流行病学研究常见的分析就是相关性分析了. 相关性分析某种程度上可以为我们提供一些研究思路,比如缺乏元素A与某种癌症相关,那么我们可以通过补充元素A来减少患癌率.这个结论的大前提是缺乏元素A会导致这种癌 ...
- R数据分析:孟德尔随机化实操
好多同学询问孟德尔随机化的问题,我再来尝试着梳理一遍,希望对大家有所帮助,首先看下图1分钟,盯着看将下图印在脑海中: 上图是工具变量(不知道工具变量请翻之前的文章)的模式图,明确一个点:我们做孟德尔的 ...
- R数据分析:潜类别轨迹模型LCTM的做法,实例解析
最近看了好多潜类别轨迹latent class trajectory models的文章,发现这个方法和我之前常用的横断面数据的潜类别和潜剖面分析完全不是一个东西,做纵向轨迹的正宗流派还是这个方法,当 ...
- 15、R语言聚类树的绘图原理
聚类广泛用于数据分析.去年研究了一下R语言聚类树的绘图原理.以芯片分析为例,我们来给一些样品做聚类分析.聚类的方法有很多种,我们选择Pearson距离.ward方法. 选择的样品有: "GS ...
- R数据分析:二分类因变量的混合效应,多水平logistics模型介绍
今天给大家写广义混合效应模型Generalised Linear Random Intercept Model的第一部分 ,混合效应logistics回归模型,这个和线性混合效应模型一样也有好几个叫法 ...
- R数据分析:临床预测模型中校准曲线和DCA曲线的意义与做法
之前给大家写过一个临床预测模型:R数据分析:跟随top期刊手把手教你做一个临床预测模型,里面其实都是比较基础的模型判别能力discrimination的一些指标,那么今天就再进一步,给大家分享一些和临 ...
- 孟德尔随机化(Mendelian Randomization) 统计功效(power)和样本量计算
孟德尔随机化(Mendelian Randomization) 统计功效(power)和样本量计算 1 统计功效(power)概念 统计功效(power)指的是在原假设为假的情况下,接受备择假设的概率 ...
- R数据分析:跟随top期刊手把手教你做一个临床预测模型
临床预测模型也是大家比较感兴趣的,今天就带着大家看一篇临床预测模型的文章,并且用一个例子给大家过一遍做法. 这篇文章来自护理领域顶级期刊的文章,文章名在下面 Ballesta-Castillejos ...
- R数据分析:样本量计算的底层逻辑与实操,pwr包
样本量问题真的是好多人的老大难,是很多同学科研入门第一个拦路虎,今天给本科同学改大创标书又遇到这个问题,我想想不止是本科生对这个问题不会,很多同学从上研究生到最后脱离科研估计也没能把这个问题弄得很明白 ...
随机推荐
- Archlinux安装Picgo配置Typora
Typora堪称为markdown界的老大哥,其大名我们多有耳闻,所见即所的就是他的特点.但是在日常使用中,也经常会碰到一些特别的需求,比如:希望图片能够上传到云端. 怎么将markdown即时粘贴的 ...
- 1.python基础使用
1.git简介 git是一个免费的开源的分布式版本控制系统,可以快速高效的处理从小型到大型项目的所有事务 在实际工作中可以保留项目的所有版本,可以快速的实现版本的回滚和修改 git整体可以分为4个区域 ...
- 在 Tomcat 10.x 上部署 SpringMVC 5.x
在Tomcat10.x 上部署 SpringMVC 5.x的时候,项目一直无法访问 运行截图 原因 Tomcat10基于Jakarta EE 9,其中api的包名已经从javax更改到jakarat ...
- Linux中如何开启一个定时任务
Linux的定时任务是基于cron驱动做到的 安装 Ubantu系统下安装crontab 正常情况下需要先执行:apt-get upgrade 进行升级 安装:apt-get install cron ...
- 正则表达式之前戏、字符组、量词、特殊符号、贪婪与非贪婪匹配等,python正则模块之re
目录 正则表达式前戏 正则表达式之字符组 正则表达式之特殊符号 正则表达式之量词 贪婪匹配与非贪婪匹配 转义符 正则表达式实战建议 re模块 re模块补充说明 作业 正则表达式前戏 案例:京东注册手机 ...
- oracle 分析函数——ration_to_report 求占有率(百分比)
oracle 的分析函数有很多,但是这个函数总是会忘记,我想通过这种方式能让自己记起来,不至于下次还要百度. 创表.表数据(平时练手的表): prompt PL/SQL Developer impor ...
- vscode+springboot+gradle
vscode+springboot+gradle 项目搭建 demo 目标:项目中抛弃所有xml格式文件 啰嗦: 一直在用maven作为项目的依赖包管理,最近看到基于Java17 的 Spring f ...
- Promise知一二
Promise 1.Promise的前置知识 进程(厂房) 程序的运行环境 线程(工人) 线程是实际进行运算的东西 同步 通常情况代码都是自上向下一行一行执行的 前边的代码不执行后边的代码也不会执行 ...
- Java语言进阶 day02【Collection、泛型】
主要内容 Collection集合 迭代器 增强for 泛型 教学目标
- 《HTTP权威指南》– 7.缓存
Web缓存的概念 Web缓存是可以自动保存常见文档副本的HTTP设备. 使用缓存的优点: 减少了数据的数据传输,节省了网络费用: 缓解了网络瓶颈的问题,不需要更多的带宽就能更快地加载页面: 降低了原始 ...