孟德尔随机化(Mendelian Randomization, MR)是一种利用遗传变异作为工具变量来评估变量之间潜在因果关系的统计方法。这种方法尤其适用于那些难以通过随机对照试验(RCT)直接研究的场景,因为它可以绕过传统研究中常见的一些偏差和限制。
基本概念和问题
1. 确定因果关系的挑战
在常规的关联分析中,很难区分一个变量是真正的因果变量还是仅仅与结果变量相关联。这种困难通常涉及到以下几个方面的问题:
- 反向因果关系:即可能出现结果影响因子的情况。
- 忽略的混杂变量:未观测的变量可能同时影响研究变量和结果,导致偏见。
- 测量误差:数据收集过程中的误差可能影响结果的准确性。
- 双向因果关系:因子和结果可能互相影响,形成因果回路。
2. RCT的优势与局限
随机对照试验(RCT)被认为是确定因果关系的“金标准”,通过将受试者随机分配到对照组和实验组来控制混杂变量的影响。然而,RCT成本高昂,有时由于伦理限制不可行,这时候孟德尔随机化提供了另一种可能性。
实践中的应用
孟德尔随机化的实施
以下是通过使用TwoSampleMR包进行孟德尔随机化分析的一个实例,展示如何在R环境中操作:
- 数据提取:从大型公共GWAS数据库提取相关的遗传工具变量。
- 数据处理:对暴露(exposure)和结果(outcome)数据进行处理和调和。
- 执行MR分析:应用多种MR方法来估计因果效应,并进行敏感性分析。
install.packages("remotes")
remotes::install_github("MRCIEU/TwoSampleMR")
library(TwoSampleMR)
# 提取工具变量
bmi_exp <- extract_instruments(outcomes='ieu-a-835', clump=TRUE, r2=0.01, kb=5000, access_token = NULL)
# 提取结果数据
t2d_out <- extract_outcome_data(snps=bmi_exp$SNP, outcomes='ieu-a-26', proxies = FALSE, maf_threshold = 0.01, access_token = NULL)
# 数据调和
mydata <- harmonise_data(exposure_dat=bmi_exp, outcome_dat=t2d_out, action=2)
# 执行MR分析
res <- mr(mydata)
敏感性分析
- 异质性检验、多效性检验、逐个剔除检验:通过这些方法评估分析的稳定性和可靠性。
数据可视化
- 绘制散点图、森林图和漏斗图:这些图形帮助解释结果,显示可能的偏差和工具变异的影响范围。
绘制敏感性分析图
mr_leaveoneout_plot(single)
绘制散点图
mr_scatter_plot(res,mydata)
绘制森林图
res_single <- mr_singlesnp(mydata)
mr_forest_plot(res_single)
绘制漏斗图
mr_forest_plot(res_single)
汇总
library(TwoSampleMR)
# 异质性检验
het <- mr_heterogeneity(mydata)
print(het)
# 多效性检验(多元回归Egger测试)
pleio <- mr_pleiotropy_test(mydata)
print(pleio)
# 逐个剔除检验
single <- mr_leaveoneout(mydata)
print(single)
# 绘制逐个剔除敏感性分析图
mr_leaveoneout_plot(single)
# 绘制散点图
mr_scatter_plot(mydata, res)
# 获取单个SNP分析的结果
res_single <- mr_singlesnp(mydata)
# 绘制森林图
mr_forest_plot(res_single)
# 绘制漏斗图
mr_funnel_plot(res_single)
学习资源
Two Sample MR Functions and Interface to MR Base Database • TwoSampleMR (mrcieu.github.io)