当我们计算出MR的结果后,接下来就要进行敏感性分析,这里我们主要从如下三方面进行检验:
(1)异质性检验(Heterogeneity test):主要是检验各个IV之间的差异,如果不同IV之间的差异大,那么这些IV的异质性就大。
(2)多效性检验 (Pleiotropy test):主要检验多个IV是否存在水平多效性,常用MR Egger法的截距项表示,如果该截距项与0差异很大,说明存在水平多效性。除此以外,MR-PRESSO包也是常用的检验水平多效性的R包。
(3)逐个剔除检验 (Leave-one-out sensitivity test):主要是逐个剔除IV后计算剩下IV的MR结果,如果剔除某个IV后其它IV估计出来的MR结果和总结果差异很大,说明MR结果对该IV是敏感的。
首先,我们一起回顾一下往期代码:
library(TwoSampleMR)
bmi_exp <- extract_instruments(
outcomes='ieu-a-835',
clump=TRUE, r2=0.01,
kb=5000,access_token = NULL
)
dim(bmi_exp)
# [1] 80 15
t2d_out <- extract_outcome_data(
snps=bmi_exp$SNP,
outcomes='ieu-a-26',
proxies = FALSE,
maf_threshold = 0.01,
access_token = NULL
)
dim(t2d_out)
# [1] 80 16
mydata <- harmonise_data(
exposure_dat=bmi_exp,
outcome_dat=t2d_out,
action= 2
)
res <- mr(mydata)
res
第一部分 异质性检验
代码如下:
het <- mr_heterogeneity(mydata)
het
从上述结果来看,这些IV之间存在很强的异质性(Q_pval远小于0.05),这时候我们需要剔除某些outcome的P值非常小的SNP,或者直接使用随机效应模型来估计MR效应量,代码如下:
mr(mydata,method_list=c('mr_ivw_mre')) #使用随机效应模型
从随机效应模型的结果不难看出,BMI和二型糖尿病确实存在因果关系(pval < 0.05),并且BMI升高后二型糖尿病发病风险也相应增高(b > 0)。
第二部分 多效性检验
代码如下:
pleio <- mr_pleiotropy_test(mydata)
pleio
从上述结果看,MR-Egger的egger_intercept和0没有统计学差异(pval > 0.05),因此我们可以认为没有水平多效性的存在。
第三部分 逐个剔除检验
代码如下:
single <- mr_leaveoneout(mydata)
mr_leaveoneout_plot(single)
从上图来看,无论去除哪个SNP都不会对结果产生根本影响(所有的线条均在0的右侧),那就是说这个MR结果实际是稳健的。
总结一下,我们利用孟德尔随机化研究发现BMI的升高可以增加二型糖尿病的发病风险,这个结果没有统计学上的水平多效性并且结果比较稳健,针对存在的异质性问题,我们使用随机效应模型来估计效应量。