流行病学研究常见的分析就是相关性分析了。

相关性分析某种程度上可以为我们提供一些研究思路,比如缺乏元素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 )的更多相关文章

  1. 手把手教你玩转SOCKET模型之重叠I/O篇(下)

    四.     实现重叠模型的步骤 作 了这么多的准备工作,费了这么多的笔墨,我们终于可以开始着手编码了.其实慢慢的你就会明白,要想透析重叠结构的内部原理也许是要费点功夫,但是只是学会 如何来使用它,却 ...

  2. 腾讯工程师教你玩转 RocksDB

    欢迎大家前往云+社区,获取更多腾讯海量技术实践干货哦~ 作者:腾讯云数据库内核团队 原文标题:[腾讯云CDB]教你玩转MyRocks/RocksDB-STATISTICS与后台线程篇 0. Intro ...

  3. 转:变手把手教你玩转SOCKET模型之重叠I/O篇

    手把手教你玩转SOCKET模型之重叠I/O篇 “身为一个初学者,时常能体味到初学者入门的艰辛,所以总是想抽空作点什么来尽我所能的帮助那些需要帮助的人.我也希望大家能把自己的所学和他人一起分享,不要去鄙 ...

  4. 不止是联网!教你玩转PC自带Wi-Fi网卡

    前言:Wi-Fi对于现在的智能手机来说已经是再熟悉不过的配置了,而主板自带Wi-Fi网卡的设计也越来越普及,但有些玩家可能思维还停留在“Wi-Fi网卡 = 连无线网络用的网卡,我用有线就不需要”的层次 ...

  5. 手把手教你玩转 CSS3 3D 技术

    css3的3d起步 要玩转css3的3d,就必须了解几个词汇,便是透视(perspective).旋转(rotate)和移动(translate).透视即是以现实的视角来看屏幕上的2D事物,从而展现3 ...

  6. 手把手教你玩转CSS3 3D技术

    手把手教你玩转 CSS3 3D 技术   要玩转css3的3d,就必须了解几个词汇,便是透视(perspective).旋转(rotate)和移动(translate).透视即是以现实的视角来看屏幕上 ...

  7. 大数据江湖之即席查询与分析(下篇)--手把手教你搭建即席查询与分析Demo

    上篇小弟分享了几个“即席查询与分析”的典型案例,引起了不少共鸣,好多小伙伴迫不及待地追问我们:说好的“手把手教你搭建即席查询与分析Demo”啥时候能出?说到就得做到,差啥不能差人品,本篇只分享技术干货 ...

  8. 教你玩转Linux系统目录结构

    Linux 内核最初只是由芬兰人林纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的.Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POS ...

  9. 手把手教你搭建 ELK 实时日志分析平台

    本篇文章主要是手把手教你搭建 ELK 实时日志分析平台,那么,ELK 到底是什么呢? ELK 是三个开源项目的首字母缩写,这三个项目分别是:Elasticsearch.Logstash 和 Kiban ...

随机推荐

  1. springboot socketio

    pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="htt ...

  2. 第一次使用Git(常用的dos命令整理)

    在使用git的过程中,有许多dos命令也要会用才行 Git 工具分类 命令行 bash.cmd.power shell GUI Git GUI.GitHub Desktop IDE 集成 Visual ...

  3. Educational Codeforces Round 64 (Rated for Div. 2)题解

    Educational Codeforces Round 64 (Rated for Div. 2)题解 题目链接 A. Inscribed Figures 水题,但是坑了很多人.需要注意以下就是正方 ...

  4. python学习类与方法的调用规则

    1类方法的特点是类方法不属于任何该类的对象,只属于类本身 2类的静态方法类似于全局函数,因为静态方法既没有实例方法的self参数也没有类方法的cls参数,谁都可以调用 3.实例方法只属于实例,是实例化 ...

  5. 微信小程序中padding-right和margin-right无效

    在小程序中遇到样式padding-right和margin-right无效,调试发现设置了padding后,宽度已经大于页面的实际宽度,除了设置float:right之外,找不到办法让右侧paddin ...

  6. 51nod1423 最大二“货”

    [传送门] 单调栈其实就是个后缀$max/min$,这道题可以维护一个单调递减的单调栈,pop元素的时候,能pop掉的元素就是第二大,当前元素为第一大.遇到第一个不能pop掉的时候当前元素就是第二大, ...

  7. Win如何查看某个端口被谁占用并停掉

    第一步在我们的电脑上按win+R键打开运行,输入cmd, 第二步进去命令提示符之后,输入“netstat -ano”,按回车键,查出所有端口,如下图所示: 第三步如果我们想找8089端口,输入nets ...

  8. [Debug] How to Debug a NestJs Backend using the Chrome Dev Tools

    TO debug NestJS code with Chrome dev tool, we can run: node --inspect-brk dist/rest-api/src/main.js ...

  9. 是Mscoreei.dll的正确版本吗?

    在安装.NET 4.0或更高版本之后,您可能会注意到.NET进程有点不寻常.下面是用.NET 2.0编译器编译的简单“Hello World”可执行文件的加载模块的部分列表. 开始-结束模块名称 60 ...

  10. C# 监测每个方法的执行次数和占用时间(测试5)

    又找到了一个bug 测试的类: public class Class11_1 { public virtual List<int> test2_1(List<tb_SensorRec ...