Hi,大家好,我是晨曦
今天这期推文依旧是孟德尔随机化系列,上一期推文我们系统的学习了如何获取数据,包括通过R包直接获得以及下载后本地导入到R中并整理成需要的形式,两种方式如果各位小伙伴没有看上一期的推文,那么需要各位小伙伴补下课哦~然后我们接下来开始今天的内容,来对孟德尔随机化分析所需要的工具进行一个比较全面的总结,以及挑选一下我们比较喜欢的R包进行重点的讲解首先第一个R包自然不必多说,就是我们的TwoSampleMR包1.TwoSampleMR包本身其实就是一个分析流程,可以这么说,这个R包一个就可以完成MR分析的基本所有步骤!2.TwoSampleMR包本身链接了GWAS数据库,而且这个GWAS数据库应该算是质量很高的数据库了3.我们在使用TwoSampleMR包的时候,可以通过把自己的数据转换成R包需要的形式然后使用设计好的流程注意:这个包其实就是我们后续主要进行MR分析的R包,我们先把与MR分析的R包介绍完,然后再重点解析一下这个R包那么,第二个MR分析的R包我们介绍——MendelianRandomization包这个R包笔者用的不是很多,所以也是在写这篇推文的时候去使用了一下这个R包,但是不知道是先入为主的思想还是R包本身的问题,笔者在使用这个R包的时候感觉到有一丢丢别扭,那么下面说一下笔者对于这个R包的一些感想:1.这个R包本身也是链接数据库的,但是笔者在更喜欢TwoSampleMR包链接的数据库(可能是因为看上去比较直接)2.MendelianRandomization包拥有的统计学方法是要比TwoSampleMR包丰富的,但是笔者在进行一些MR分析的时候,用TwoSampleMR包就可以基本解决问题,也有可能是笔者并没有进行完整的MR分析的缘故,当然最好是两个R包都进行学习,然后互为补充,那么后面也会更新相关R包的教程注意:这里笔者建议学习MR分析推荐先学习TwoSampleMR包,然后再学习MendelianRandomization包那么,我们将在后续推文着重介绍这两个R包的使用方法,我们先从TwoSampleMR包开始以下内容翻译自官方文档:Introduction • TwoSampleMR (mrcieu.github.io)2.选择合适的工具变量(如果有必要需要进行clumping)3.读取终点结局的GWAS数据,并对暴露因素的GWAS数据取交集SNP以上图片转载自:孟德尔随机化系列之二:两样本MR – TwoSampleMR – GWASLab – GWAS实验室
library(TwoSampleMR)
read_exposure_data
我们首先需要知道的是read_exposure_data函数,用来读取我们的暴露数据,需要提供至少下面的信息:SNP- rs ID
beta - The effect size. If the trait is binary then log(OR) should be used
se - The standard error of the effect size
effect_allele - The allele of the SNP which has the effect marked in beta
other_allele - The non-effect allele
eaf - The effect allele frequency
Phenotype - The name of the phenotype for which the SNP has an effect
bmi2_file <- system.file("extdata/bmi.csv", package = "TwoSampleMR")
bmi_exp_dat <- read_exposure_data(
filename = bmi2_file,
sep = ",",
snp_col = "rsid",
beta_col = "effect",
se_col = "SE",
effect_allele_col = "a1",
other_allele_col = "a2",
eaf_col = "a1_freq",
pval_col = "p-value",
units_col = "Units",
gene_col = "Gene",
samplesize_col = "n"
)
然后在读取完数据以后,我们就可以开始常规的分析,也就是以下代码的流程:bmi_exp_dat <- clump_data(bmi_exp_dat,clump_r2=0.01 ,pop = "EUR")
chd_out_dat <- extract_outcome_data(
snps = bmi_exp_dat$SNP,
outcomes = 'ieu-a-7'
)
dat <- harmonise_data(
exposure_dat = bmi_exp_dat,
outcome_dat = chd_out_dat
)
一般来说,这上面的每一个函数都会有一些参数可以供我们选择,这里绝大多数情况是需要太多变动的,我们只需要查看帮助文档后,把里面一些相关的参数写在我们的文章里就可以比如说会有小伙伴问如何去除连锁不平衡,用的是哪些变量来衡量的,其实函数内的参数都自动帮我们做了,查看帮助文档即可然后后续的流程就是执行一些标准的操作,包括一些已经制定好的分析流程res <- mr(dat)#查看相关统计学方法#mr_method_list()#obj name PubmedID Description use_by_default heterogeneity_test#<chr> <chr> <chr> <chr> <lgl> <lgl>#mr_wald_ratio Wald ratio TRUE FALSE#mr_two_sample_ml Maximum likelihood FALSE TRUE#mr_egger_regression MR Egger 26050253 TRUE TRUE#mr_egger_regression_bootstrap MR Egger (bootstrap) 26050253 FALSE FALSE#mr_simple_median Simple median FALSE FALSE#mr_weighted_median Weighted median TRUE FALSE#mr_penalised_weighted_median Penalised weighted median FALSE FALSE#mr_ivw Inverse variance weighted TRUE TRUE#mr_ivw_radial IVW radial FALSE TRUE#mr_ivw_mre Inverse variance weighted (multiplicative random effects) FALSE #FALSE#mr_ivw_fe Inverse variance weighted (fixed effects) FALSE FALSE#mr_simple_mode Simple mode TRUE FALSE#mr_weighted_mode Weighted mode TRUE FALSE#mr_weighted_mode_nome Weighted mode (NOME) FALSE FALSE#mr_simple_mode_nome Simple mode (NOME) FALSE FALSE#mr_raps Robust adjusted profile score (RAPS) FALSE FALSE#mr_sign Sign concordance test Tests for concordance of signs between exposure #and outcome FALSE FALSE#mr_uwr Unweighted regression Doesn't use any weights FALSE TRU
那么本期关于这个R包的宏观框架就给大家介绍到这里~相信肯定还有很多小伙伴觉得这个流程这么简单,那么MR分析是不是就没有什么门槛呢?其实笔者最近做了两个MR分析的流程,发现MR分析有几个不太好做的点:1.数据本身不是特别容易获得心仪的数据,尽管数据库有很多,但是有些数据库下载麻烦,整理数据麻烦,网速慢等等2.找到好的idea,但是工具变量和结局变量取交集,SNP就一两个,那么显然也无法进行后续的分析个人感觉大多数小伙伴在后续的分析都会遇到上述这两个问题,但是这两个问题其实都无法很好的解决,只能通过不断的修正方向来弥补那么既然宏观讲解完毕,那么下一期就会开始进行MR分析中统计学方法的一些介绍,其实就是告诉各位小伙伴,什么时候应该写什么方法,因为如果直接运行代码得到的结果也是类似,因为MR分析的代码真的很简洁了~1.孟德尔随机化系列之二:两样本MR - TwoSampleMR - 知乎 (zhihu.com)2.Exposure data • TwoSampleMR (mrcieu.github.io)