【学习】孟德尔随机化
Last updated on March 19, 2024 pm
MR定义
孟德尔随机化是一种基于全基因组测序数据(GWAS数据),利用单核首酸多态性(SNPs)作为工具变量(IV),用于揭示因果关系的新型流行病学方法,相较于队列研究等观察性研究,暴露在出生前便已确定,较少受到反向因果及混杂因素的影响,因而能够有效减少偏倚。
MR的核心是运用遗传学数据作为桥梁,来探索某一暴露和某一结局之间的因果关联。与RCT将参与者随机分配到试验组或对照组类似,MR研究基于影响危险因素的一个或多个等位基因,对参与基因进行"随机化"(自然的随机化),以确定这些遗传变异的携带者与非携带者相比,是否具有不同的疾病发生风险,因此,孟德尔随机化可以被认为类似于"自然的随机对照试验"。MR的相关术语
理论假设
- the variant is associated with the exposure
- the variant is not associated with the outcome via a confounding pathway
- the variant does not affect the outcome directly, only possibly indirectly via the exposure
- 关联性假设:变异与暴露有关
- 独立性假设:变异与结果之间没有通过混杂途径相关
- 排他性假设:变异不直接影响结果,只可能通过暴露途径间接影响
- 关联性假设:p值,F统计量,R^2
- 排他性假设:与结局的相关性计算时,p值要大于0.05
- MR-Egger回归相比线性回归可以弱化对排他性假设的要求
适用范围
- 不确定先有鸡还是先有蛋,比如,到底是抑郁导致肺癌还是肺癌导致了抑郁?
- 暴露因素难以测量,或者花费昂贵。例如,水溶性维生素等生物标志物的检测金标准可能成本太高,大样本无法承受,或者空腹血糖的测量需要隔夜空腹,可能不现实。
- 暴露与结局数据来自同一人群,且不存在或存在少量可接受范围内的样本重叠
配置环境
1 | conda create -n MR -c conda-forge r-devtools -y |
数据来源
一些参考数据
1 | wget http://fileserve.mrcieu.ac.uk/ld/1kg.v3.tgz |
示例结局数据
1 | # zcat ADHD2022_iPSYCH_deCODE_PGC.meta.gz | head |
1 | CHR Chromosome (hg19) |
其中SNP
,Effect allele
,Beta(OR)
,SE
,P
这五列是必须的。遇到没有提供EAF的数据,可以匹配千人基因组数据的EAF,get_eaf_from_1000G
。
示例暴露数据
1 | wget -c https://gwas.mrcieu.ac.uk/files/ieu-a-2/ieu-a-2.vcf.gz |
1 | VCF_dat = VariantAnnotation::readVcf('~/upload/GWAS/IEU/ieu-a-2.vcf.gz') |
获取暴露数据
自己的数据
1 | df_gwas <- data.frame( |
gwas_catalog
1 | df_gwas <- |
metab_qtls
1 | df_gwas <- |
proteomic_qtls
1 | df_gwas <- |
某个基因
1 | df_gwas <- |
某个性状的某个甲基化位点相关QTL
1 | df_gwas <- |
IEU的ID
1 | exp_gwas <- TwoSampleMR::extract_instruments(outcomes = 'ieu-a-2') |
UK_Biobank
1 | hyperten_tophits <- ieugwasr::tophits(id="ukb-b-12493", clump=0) |
计算统计效力
1 | # 分类变量 |
1 | MR_calc_r2_F = function(beta, eaf, N, se){ |
获取结局数据
IEU
1 | out_gwas = TwoSampleMR::extract_outcome_data(snps = exp_gwas$SNP, outcomes = 'ieu-a-7') |
UK_Biobank
1 | anxiety_hyperten_liberal <- TwoSampleMR::extract_outcome_data(snps = exp_dat_clumped$SNP, outcomes = "ukb-b-11311") |
PGC的示例
1 | df_gwas = read.table(gzfile('~/upload/GWAS/PGC/ADHD2022_iPSYCH_deCODE_PGC.meta.gz'), header = T) |
附加 代理SNP
一部分暴露的SNPs在结局中找不到,可以找和这部分SNPs连锁不平衡的SNPs来代替。相关网站:snipa
Harmonization
- 将Exposure-SNP及Outcome-SNP等位基因方向协同
- 根据EAF大小,剔除不能判断方向的回文SNP
- 剔除incompatible SNP
1 | dat <- TwoSampleMR::harmonise_data( |
附加 一键报告
1 | TwoSampleMR::mr_report(dat, output_type = "md") |
MR分析
回归分析
1 | TwoSampleMR::mr_method_list() # 查看mr支持的MR分析方法 |
异质性检测
- 有异质性用随机效应模型
ivw
,无异质性用固定效应模型(也可以用随机效应模型,两者结果一致) - 异质性可能带来多效性,如果没有多效性,则可以说异质性没有带来多效性
1 | TwoSampleMR::mr_heterogeneity(dat) # ivw的 Q_pval < 0.05 则说明有异质性 |
水平多效性
- P < 0.05 说明不满足独立性假设,建议放弃继续做这个课题
- P < 0.05 拒绝了截距为0的假设,说明SNP效应为0时依然有影响(截距存在),有其他因素在起作用
1 | TwoSampleMR::mr_pleiotropy_test(dat) |
敏感性分析
- Leave-one-out analysis
- 所有结果都不应该存在跨过0的情况,否则说明结果不稳定,不再能说明因果关系
1 | mr_loo <- TwoSampleMR::mr_leaveoneout(dat) |
单SNP分析
- 对每个暴露-结果组合进行多次分析,每次使用不同的单 SNP 进行分析
1 | mr_res_single <- TwoSampleMR::mr_singlesnp(dat) |
方向性检测
1 | TwoSampleMR::directionality_test(dat) # TRUE表示确实是暴露导致了结果 |
附加 稳健回归
1 | dat2 <- TwoSampleMR::dat_to_MRInput(dat) |
附加 绘制森林图
附加 计算Power
- Calculating statistical power in Mendelian randomization studies
- Power calculations for Mendelian Randomization
- Sample size: 结局总的样本量,不是暴露的样本量
- K: 结局中病例的比例,case/(case+control)
- OR: IVW的OR值,exp(beta)
- R2: MR_calc_r2_F 计算得到的所有R2的sum
【学习】孟德尔随机化
https://hexo.limour.top/Mendelian-Randomization