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

但是,实际上对不对,还是有待具体分析的:

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数据分析:孟德尔随机化中介的原理和实操的更多相关文章

  1. kafka拦截器原理|案例实操

    拦截器原理 Producer拦截器(interceptor)是在Kafka 0.10版本被引入的,主要用于实现clients端的定制化控制逻辑. 对于producer而言,interceptor使得用 ...

  2. 有相关性就有因果关系吗,教你玩转孟德尔随机化分析(mendelian randomization )

    流行病学研究常见的分析就是相关性分析了. 相关性分析某种程度上可以为我们提供一些研究思路,比如缺乏元素A与某种癌症相关,那么我们可以通过补充元素A来减少患癌率.这个结论的大前提是缺乏元素A会导致这种癌 ...

  3. R数据分析:孟德尔随机化实操

    好多同学询问孟德尔随机化的问题,我再来尝试着梳理一遍,希望对大家有所帮助,首先看下图1分钟,盯着看将下图印在脑海中: 上图是工具变量(不知道工具变量请翻之前的文章)的模式图,明确一个点:我们做孟德尔的 ...

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

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

  5. 15、R语言聚类树的绘图原理

    聚类广泛用于数据分析.去年研究了一下R语言聚类树的绘图原理.以芯片分析为例,我们来给一些样品做聚类分析.聚类的方法有很多种,我们选择Pearson距离.ward方法. 选择的样品有: "GS ...

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

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

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

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

  8. 孟德尔随机化(Mendelian Randomization) 统计功效(power)和样本量计算

    孟德尔随机化(Mendelian Randomization) 统计功效(power)和样本量计算 1 统计功效(power)概念 统计功效(power)指的是在原假设为假的情况下,接受备择假设的概率 ...

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

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

  10. R数据分析:样本量计算的底层逻辑与实操,pwr包

    样本量问题真的是好多人的老大难,是很多同学科研入门第一个拦路虎,今天给本科同学改大创标书又遇到这个问题,我想想不止是本科生对这个问题不会,很多同学从上研究生到最后脱离科研估计也没能把这个问题弄得很明白 ...

随机推荐

  1. 基于Spring的发布订阅模式 EventListener

    基于Spring的发布订阅模式 在我们使用spring开发应用时,经常会碰到要去解耦合一些依赖调用,比如我们在做代码的发布流程中,需要去通知相关的测试,开发人员关注发布中的错误信息.而且通知这个操作又 ...

  2. 小巧快速的ZooKeeper可视化管理+实时监控工具

    Zookeeper: 是一个分布式的.开源的程序协调服务,是 hadoop 项目下的一个子项目.他提供的主要功 能包括:配置管理.名字服务.分布式锁.集群管理. 平时用zkCli.sh进行管理不免有点 ...

  3. 32bit和64bit系统的区别,运行机制浅析

    32bit:内存的最大寻址空间是2^32=4G,就是说32位系统的处理器最大只支持到4G内存 64bit:内存的最大寻址空间是2^64,大于1亿GB,但是实际上支持不到那么大的内存,大概是2^40+ ...

  4. CLR、CLS、CTS概述

    在学习.NET的过程中,都会不可避免地接触到这三个概念,那么这三个东西是什么以及它们之间的关系是怎样的呢?任何编程语言,如果想要在.NET CLR上执行,就必需提供一个编译器,将此语言的程序编译成.N ...

  5. 重要内置函数、常见内置函数、可迭代对象、迭代器对象、for循环的本质、异常捕获处理

    重要内置函数 #zip拉链 zip 函数是可以接收多个可迭代对象,然后把每个可迭代对象中的第i个元素组合在一起,形成一个新的迭代器,类型为元组. l1 = [11, 22, 33] l2 = ['a' ...

  6. 6. PyQt5 中的多线程的使用(上)

    专栏地址 ʅ(‾◡◝)ʃ 这一节引入了多线程这个非常重要概念, 在我认为多线程的重要性是紧紧次于信号与槽函数的, 因为在平时经常使用 1. 为什么要用多线程 先看下面这一个示例代码 6.1 from ...

  7. ArcGIS 通过字段计算 设置顺序编码

    地块编号="前缀" & left("0000",4-len( [FID]+1)) & ([FID] +1)

  8. Zabbix技术分享——使用Zabbix6.0监控业务日志

    企业日常IT运维过程中,常会碰到需要监控业务日志的情况,以下将介绍如何使用Zabbix6.0监控业务日志. 应用场景描述: 企业IT运维部门使用自建zabbix平台对公司某业务系统进行了监控.近段时间 ...

  9. Burpsuite2022.1详细图文安装教程(含工具链接)

    ​ 应用概述: Burp Suite 是用于攻击web 应用程序的集成平台,包含了许多工具.Burp Suite为这些工具设计了许多接口,以加快攻击应用程序的过程.所有工具都共享一个请求,并能处理对应 ...

  10. avue框架 拼接后端返回的数据到table中

    根据要求展示下列详细地址情况: 后端返回的数据: 具体实现步骤: { label: "详细地址", prop: "buildingName", display: ...