孟德尔随机化步骤相对简单固定,一共就是3步,但是如果我们一个一个的对研究变量和结果数据进行筛选,也是挺费时间的,在上篇文章《自编R语言小程序助力孟德尔随机化(Mendelian Randomization)数据挖掘》中,咱们自编了一个小程序帮助咱们进行数据挖掘,反响还是不错的。但是这个函数也是有个明显的缺点,第一就是它是通过在线下载数据,如果你的网络不行,下载不到数据,它就会报错。
我这几天突然看到别的博主提供了一段while循环代码,可以针对下载不到数据的,我一看刚好可以针对我这个函数的缺陷,咱们知道while循环循环可以设定一个目标,不达目的不罢休,这样我们就可以给它添加一个设定,不下载到数据不停止,这样大大提高了成功率和程序的稳定性。
下面我来演示一下,做法基本和没改良前一样。
函数体为
Mendelian.help(exposure,outcome)
Exposure就是我们的研究变量,outcome就是我们的结果变量。
我这次特地设置复杂点,假设我们研究的想研究的原因变量有3个"ieu-a-22",“prot-b-66”,“ukb-b-15590”,想研究的结局变量有3个"finn-b-O15_MEMBR_PREMAT_RUPT",“ukb-b-12621”,“finn-b-O15_PLAC_PREMAT_SEPAR”",如果我们一个一个的做也是要花费一定时间的,如果变量更多就需要更多时间了。
我们先定义暴露变量和结果变量,你把全部变量一起上,就是说又是暴露又是结局也是可以的。
exposure<-c("ieu-a-22","prot-b-66","ukb-b-15590")
outcome<-c("finn-b-O15_MEMBR_PREMAT_RUPT","ukb-b-12621","finn-b-O15_PLAC_PREMAT_SEPAR")
一句话然后生成结果,还是非常简单的。
dat<-Mendelian.help(exposure,outcome)
这样就结果就生成啦,我们可以看到每个暴露变量和结果变量匹配的情况,看出有没有意义,对于大规模变量的筛选我个人认为还是有帮助的。P值的筛选是通过孟德尔随机化P值中最要的方法Inverse variance weighted提取出的P值。
最后,加上while循环以后,感觉多了一点技术含量,虽然成功率高了很多,但是还是应该在网络好的时候使用,比如白天,毕竟还是还是靠下载数据的,需要我改良后的小程序的公众号回复:代码,可以获得该程序。