有相关性就有因果关系吗,教你玩转孟德尔随机化分析(mendelian randomization )
流行病学研究常见的分析就是相关性分析了。
相关性分析某种程度上可以为我们提供一些研究思路,比如缺乏元素A与某种癌症相关,那么我们可以通过补充元素A来减少患癌率。这个结论的大前提是缺乏元素A会导致这种癌症,也就是说元素A和癌症有因果关系。
但实际上,元素A和癌症有相关性,不代表他们之间就有因果关系。也有可能是患癌症的人同时有其他的并发症,这种并发症会导致元素A缺乏。
再比如,研究表明,大胸女生与不爱运动相关。那么,到底是因为胸大的女性不爱运动,还是因为不爱运动导致胸大(肥胖)。
如果不做其他分析,光看这个相关性,我们是无法得知这两个表征之间是否有真实的因果关系。
为了阐明这些表征是否有因果关系,我们一般在研究中考虑加入孟德尔随机化分析。
1 孟德尔随机化分析的思想
还是前面的例子,假定我们认为大胸的人(因)不愿意运动(果)。
那我们的研究思路就是找到与大胸有关的显著遗传位点,再分析这些遗传位点是否也与不爱运动相关。
如果与大胸相关的遗传位点同时也与不爱运动相关,那么我们就会认为大胸的人就是不爱运动。
反过来,如果与大胸相关的遗传位点与不爱运动没有关系,那么我们认为大胸跟不爱运动是没有因果关系的,他们之间存在相关性可能是由其他的因素导致的。
2 为什么孟德尔随机化研究采用遗传位点作为分析媒介
原因很简单,遗传位点是我们出生就决定了的,后期不会随文化、经济等因素改变。
如果我们发现位点A与大胸有相关性,那么毫无疑问,是位点A影响了胸部大小。
反过来说就不成立了,因为胸大,所以遗传位点会变为A,这样的结论听起来就很怪异。
3 孟德尔随机化研究计算原理
3.1 找到影响大胸的SNP位点
这个目前最流行的方法就是全基因组关联分析了。
通过获取不同个体的罩杯大小(表型)和他们的遗传位点(基因型),做全基因组关联分析。
3.2 将影响大胸的显著信号位点作为后续分析的位点
我们对显著信号位点的定义是P值<5*10-8
3.3 计算大胸显著信号位点与不爱运动的关系
同样可以用全基因组关联分析的方法。
随后获得大胸显著信号位点与不爱运动的效应值(BETA)或者风险值(OR)
3.4 画显著信号位点分别在大胸和不爱运动的效应值散点图,散点图的斜率代表大胸对不爱运动这个行为的影响大小(causal effect)
4 怎么做孟德尔随机化分析
下面举一个简单的小例子。
4.1 安装R包
install.packages("devtools")
library(devtools)
install_github("MRCIEU/TwoSampleMR")
4.2 导入大胸(exposure)的显著信号位点
library(TwoSampleMR)
bmi_file <- system.file("data/bmi.txt", package="TwoSampleMR")
exposure_dat <- read_exposure_data(bmi_file)
大胸显著信号位点数据格式如下:
4.3 导入显著信号位点与不爱运动的相关性数据
outcome_dat <- read_outcome_data(snps = exposure_dat$SNP,filename = "F:/download/test.csv", sep = ",",snp_col = "SNP",beta_col = "beta",se_col = "se",effect_allele_col = "effect_allele",other_allele_col = "other_allele",eaf_col = "eaf",samplesize_col = "samplesize")
不爱运动信号位点数据格式test.csv如下:
导入显著信号位点与不爱运动的相关性数据outcome_dat如下:
4.4 统一大胸和不爱运动的效应值方向
dat <- harmonise_data(exposure_dat, outcome_dat)
4.5 孟德尔随机化分析
res <- mr(dat)
结果不显著,说明两者有相关性,但是没有因果关系。
4.6 画散点图
p1 <- mr_scatter_plot(res, dat)
p1[[1]]
4.7 补充其他分析
4.7.1 Heterogeneity statistics
mr_heterogeneity(dat)
4.7.2 Horizontal pleiotropy
mr_pleiotropy_test(dat)
4.7.3 Single SNP analysis
res_single <- mr_singlesnp(dat)
4.7.4 Leave-one-out analysis
res_loo <- mr_leaveoneout(dat)
4.7.5 Forest plot
res_single <- mr_singlesnp(dat)
p2 <- mr_forest_plot(res_single)
p2[[1]]
4.7.6 Leave-one-out plot
res_loo <- mr_leaveoneout(dat)
p3 <- mr_leaveoneout_plot(res_loo)
p3[[1]]
4.7.7 Funnel plot
res_single <- mr_singlesnp(dat)
p4 <- mr_funnel_plot(res_single)
p4[[1]]
关于孟德尔随机化的研究就讲到这,更多详情内容请看:https://mrcieu.github.io/TwoSampleMR/。 另外,本文提到的大胸与运动的关系,不是我瞎想出来的,真有人做过研究,对这篇文章感兴趣的,请到微信公众号“bio生物信息”后台回复“大胸” :D
有相关性就有因果关系吗,教你玩转孟德尔随机化分析(mendelian randomization )的更多相关文章
- 手把手教你玩转SOCKET模型之重叠I/O篇(下)
四. 实现重叠模型的步骤 作 了这么多的准备工作,费了这么多的笔墨,我们终于可以开始着手编码了.其实慢慢的你就会明白,要想透析重叠结构的内部原理也许是要费点功夫,但是只是学会 如何来使用它,却 ...
- 腾讯工程师教你玩转 RocksDB
欢迎大家前往云+社区,获取更多腾讯海量技术实践干货哦~ 作者:腾讯云数据库内核团队 原文标题:[腾讯云CDB]教你玩转MyRocks/RocksDB-STATISTICS与后台线程篇 0. Intro ...
- 转:变手把手教你玩转SOCKET模型之重叠I/O篇
手把手教你玩转SOCKET模型之重叠I/O篇 “身为一个初学者,时常能体味到初学者入门的艰辛,所以总是想抽空作点什么来尽我所能的帮助那些需要帮助的人.我也希望大家能把自己的所学和他人一起分享,不要去鄙 ...
- 不止是联网!教你玩转PC自带Wi-Fi网卡
前言:Wi-Fi对于现在的智能手机来说已经是再熟悉不过的配置了,而主板自带Wi-Fi网卡的设计也越来越普及,但有些玩家可能思维还停留在“Wi-Fi网卡 = 连无线网络用的网卡,我用有线就不需要”的层次 ...
- 手把手教你玩转 CSS3 3D 技术
css3的3d起步 要玩转css3的3d,就必须了解几个词汇,便是透视(perspective).旋转(rotate)和移动(translate).透视即是以现实的视角来看屏幕上的2D事物,从而展现3 ...
- 手把手教你玩转CSS3 3D技术
手把手教你玩转 CSS3 3D 技术 要玩转css3的3d,就必须了解几个词汇,便是透视(perspective).旋转(rotate)和移动(translate).透视即是以现实的视角来看屏幕上 ...
- 大数据江湖之即席查询与分析(下篇)--手把手教你搭建即席查询与分析Demo
上篇小弟分享了几个“即席查询与分析”的典型案例,引起了不少共鸣,好多小伙伴迫不及待地追问我们:说好的“手把手教你搭建即席查询与分析Demo”啥时候能出?说到就得做到,差啥不能差人品,本篇只分享技术干货 ...
- 教你玩转Linux系统目录结构
Linux 内核最初只是由芬兰人林纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的.Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POS ...
- 手把手教你搭建 ELK 实时日志分析平台
本篇文章主要是手把手教你搭建 ELK 实时日志分析平台,那么,ELK 到底是什么呢? ELK 是三个开源项目的首字母缩写,这三个项目分别是:Elasticsearch.Logstash 和 Kiban ...
随机推荐
- C++(四十五) — 类型转换(static_cast、dynamic_cast 、const_cast、reinterpreter_cast)
0.总结 (1)要转换的变量,转换前.转换后.转换后的结果. (2)一般情况下,避免进行类型转换. 1._static_cast(静态类型转换,int 转换为char) 格式:TYPE B = st ...
- CVE-2019-0708:RDP终极EXP复现
0x00 前言 每次复现都会遇到各种各样的问题,这次也不例外,经过多次尝试才复现成功,因此把可能的解决方法也和大家分享一下,有想要一起复现学习/投稿的可以联系我哈 0x01 影响版本 Windows ...
- 数据库索引数据结构总结——ART树就是前缀树
数据库索引数据结构总结 from:https://zhewuzhou.github.io/2018/10/18/Database-Indexes/ 摘要 数据库索引是数据库中最重要的组成部分,而索引的 ...
- python coding style guide 的快速落地实践——业内python 编码风格就pep8和谷歌可以认作标准
python coding style guide 的快速落地实践 机器和人各有所长,如coding style检查这种可自动化的工作理应交给机器去完成,故发此文帮助你在几分钟内实现coding st ...
- python笔记36-装饰器之wraps
前言 前面一篇对python装饰器有了初步的了解了,但是还不够完美,领导看了后又提出了新的需求,希望运行的日志能显示出具体运行的哪个函数. __name__和doc __name__用于获取函数的名称 ...
- centos7部署postgresql集群高可用 patroni + etcd 之patroni篇
实验环境:centos7.4纯净版 postgres版本: 9.6.15 etcd版本:3.3.11 patroni版本:1.6.0 patroni介绍可参考:https://github.com/z ...
- Laravel —— 多模块开发
Laravel 框架比较庞大,更适用于比较大的项目. 为了整个项目文件结构清晰,不同部分分为不同模块很有必要. 一.安装扩展包 1.根据不同 Laravel 版本,选择扩展包版本. packagest ...
- 决策树——C4.5
-- coding: utf-8 -- """ Created on Thu Aug 2 17:09:34 2018 决策树ID3,C4.5的实现 @author: we ...
- jmxtrans docker-compose 运行
以下是一个简单的demo,使用jmxtrans 进行jmx 指标的处理,项目使用docker-compose 运行 同时写入数据到graphite 环境准备 docker-compose文件 ve ...
- 洛谷 P1536 村村通
目录 题目 思路 \(Code\) 题目 P1536 村村通 思路 并查集,一开始连通快的数量为\(n\),输入\(m\)条边时如果该边起点和终点不在同一联通块内就合并并让联通块数量减一,最后输出联通 ...