R语言孟德尔随机化分析实战:从原理到代码实现
R语言孟德尔随机化分析实战:从原理到代码实现
孟德尔随机化(Mendelian Randomization,简称MR)是一种利用遗传变异作为工具变量来评估暴露因素与结局之间因果关系的统计方法。这种方法可以有效避免传统观察性研究中常见的混杂偏倚问题,因此在流行病学和生物医学研究中得到了广泛应用。本文将详细介绍如何使用R语言进行孟德尔随机化分析,包括基本概念、关键术语解释以及具体的操作步骤。
基本概念
在孟德尔随机化分析中,我们感兴趣的是暴露因素(X)与结局(Y)之间的关系,即图中的小b。但是直接分析X对Y的回归关系是不准确的,因为存在未测量的混杂因素U的影响。因此,我们借助基因变量G作为工具变量,通过估计GY(ab)和GX(a)的关系来间接推断X与Y的关系。
关键术语解释
连锁不平衡(Linkage Disequilibrium,LD)
在孟德尔随机化分析中,我们希望使用的基因变量之间是独立的,以避免多重计数(double counting)导致的结果偏倚。然而,实际上不同位点的等位基因之间可能存在关联,这种关联程度可以用LD r方来表示。
水平基因多效性(Horizontal Pleiotropy)
理想情况下,我们希望基因变量只通过GX和GY两条路径影响结局。然而,现实中可能存在额外的f路径,即基因直接对结局产生影响。如果所有工具变量的f路径的期望值为0,则最终估计结果仍然接近真实的小b。但如果所有f路径都偏向同一方向(定向多效性),则需要通过漏斗图等方法进行检验。
实操步骤
以BMI与冠心病(CHD)为例,展示孟德尔随机化分析的基本流程:
# 基本分析
bmi_exp_dat <- extract_instruments(outcomes = 'ieu-a-2')
chd_out_dat <- extract_outcome_data(snps = bmi_exp_dat$SNP, outcomes = 'ieu-a-7')
dat <- harmonise_data(bmi_exp_dat, chd_out_dat)
res <- mr(dat)
# 敏感性分析
mr_heterogeneity(dat) # 异质性检验
mr_pleiotropy_test(dat) # 水平基因多效性检验
res_single <- mr_singlesnp(dat) # 单个SNP结果检验
mr_leaveoneout(dat) # 留一检验
# 可视化
mr_scatter_plot(res, dat) # 点图
mr_forest_plot(res) # 森林图
mr_funnel_plot(res) # 漏斗图
GWAS数据的获取与处理
查找暴露相关的GWAS:
data(gwas_catalog) exposure_gwas <- subset(gwas_catalog, grepl("Blood", Phenotype_simple))
筛选显著性位点:
exposure_gwas <- exposure_gwas[exposure_gwas$pval < 5 * 10^-8, ]
格式化数据:
exposure_data <- format_data(exposure_gwas)
处理连锁不平衡:
exposure_data <- clump_data(exposure_data, clump_r2 = 0.001)
自动提取工具变量:
extract_instruments('ieu-b-40')
提取结局的summary estimates:
outcome_gwas <- subset(ao, grepl("Systolic", trait)) outcome_data <- extract_outcome_data(snps = exposure_data$SNP, outcomes = "ieu-b-5075")
总结
本文详细介绍了孟德尔随机化分析的基本原理、关键术语以及使用R语言进行具体操作的步骤。通过本文的学习,读者可以掌握如何利用遗传变异作为工具变量来评估暴露因素与结局之间的因果关系,为流行病学和生物医学研究提供有力的统计工具。
本文示例来自【中文孟德尔随机化】英国布里斯托大学MRC-IEU《R语言做孟德尔随机化》