在前三讲的内容中,我和大家逐一介绍了IVW,median-based,MR-Egger和maximum likelihood这四种计算方法,并结合“MendelianRandomization”包的实例进行了演示。今天,我将和大家一起学习一下如何不进行clump,通过矫正SNP之间的相关性来进行MR分析。
代码语言:javascript复制library(MendelianRandomization) #加载R包
MRInputObject.cor <- mr_input(bx = calcium,bxse = calciumse,by = fastgluc,byse = fastglucse,corr = calc.rho) #指定输入文件,参数corr表示SNP的相关系数数据
class(calc.rho) # 查看calc.rho的数据类型
#[1] "matrix"
MRInputObject.cor # 查看输入文件
calc.rho # 查看calc.rho
从上图中我们可以发现,MRInputObject.cor主要存储的是SNP的GWAS summary数据,而calc.rho就是一个SNP间的相关系数矩阵,行列的顺序和MRInputObject.cor中SNP的顺序一致。从相关系数矩阵中,我们可以看出snp4和snp6之间有较强的连锁不平衡(r2=0.446),如果进行clump的话,那么就要去掉其中的一个。一般情况下,SNP间的相关系数矩阵可以从LDlink网站获取(ldlink.nci.nih.gov/,需要使用代理)。当然,如果SNP数目过多的话,建议直接clump,其实最终结果相差无几。
接下来,我们用带有相关系数矩阵的输入文件把之前的四种方法都再学习一遍:
代码语言:javascript复制IVWObject.correl <- mr_ivw(MRInputObject.cor, model = "default", correl = TRUE, distribution = "normal", alpha = 0.05)
IVWObject.correl
代码语言:javascript复制WeightedMedianObject.correl <- mr_median(MRInputObject.cor,weighting = "weighted",distribution = "normal",alpha = 0.05,iterations = 10000,seed = 314159265)
WeightedMedianObject.correl
代码语言:javascript复制EggerObject.correl <- mr_egger(MRInputObject.cor,robust = FALSE,penalized = FALSE,correl = TRUE,distribution = "normal",alpha = 0.05)
EggerObject.correl
代码语言:javascript复制MaxLikObject.correl <- mr_maxlik(MRInputObject.cor,model = "default",correl = TRUE,psi = 0,distribution = "normal",alpha = 0.05)
MaxLikObject.correl
咱们把这4种方法在矫正SNP相关系数的情况下过了一遍,不知道大家有没有发现:只有mr_ivw(), mr_egger()和 mr_maxlik()这三种方法有correl参数,并且我们需要将该参数设置为TRUE的时候才会矫正该相关系数矩阵。
关于如何在“MendelianRandomization”包里矫正SNP的相关系数就先讲到这儿,希望能给大家带来帮助!