前言

关于全基因组关联分析(GWAS)原理的资料,网上有很多。

这也是我写了这么多GWAS的软件教程,却从来没有写过GWAS计算原理的原因。

恰巧之前微博上某位小可爱提问能否写一下GWAS的计算原理。我一顺口就答应了。

后面一直很懒,不愿意动笔,但想着既然答应了,不写说不过去。

我写这段话的意思是,如果你有任何关于GWAS分析问题或者疑问,希望我能写一下的,可以跟我说。

如果我认为有价值,写出来对大家有帮助的话,会写的。

GWAS所涉及的公式:最小二乘法

首先,我们来一个知识点的回顾:最小二乘法。

看下图,熟不熟悉!

这可是我们中学时解了很多遍的算术题。

图片来源:http://kitsprout.blogspot.com/2015/11/algorithm-least-squares.html

公式可以写为: y = ax + b

y:我们研究的表型

x:基因型数据,这里指每一个SNP

a:SNP的系数

b:残差,可以是环境变量,或者除了SNP之外的影响表型的因素

来个例子给我们讲讲呗,公式怎么套进去

如图所示,假定有一个SNP,叫 rs123: T>C

我们定义C为风险位点,以加性模型为例,一个C=1,T=0

那么CC=2,CT=1,TT=0

根据上面的公式:

SNP对应的值x分别为:2,2,1,2,1,1,0,2
对应的表型y分别为10,7,6,8,5,4,2,6

回顾我们前面提到的公式:y = ax + b

现在我们有:

10= 2a+b

7= 2a+b

6= 1a+b

8= 2a+b

5= 1a+b

4= 1a+b

2= 0+b

6= 2a+b

转化一下,就是:

2a+b - 10 = 0

2a+b - 7 = 0

1a+b - 6 = 0

2a+b - 8 =0

1a+b - 5 = 0

1a+b - 4 = 0

0+b -2 = 0

2a+b -6 = 0

我们的任务就是,找到合适的a,b使得

(2a+b - 10)^2 + (2a+b - 7)^2 + (1a+b - 6)^2 + (2a+b - 8)^2 + (1a+b - 5)^2 + (1a+b - 4)^2 + (0+b -2)^2 + (2a+b -6)^2 最小。

a,b的求值涉及到最小二乘法的推导,感兴趣的看这篇文章:https://zhuanlan.zhihu.com/p/53556591

用公式表示就是:

b = cor(y,x)*Sd(y)/Sd(x)

a = (10+7+6+8+5+4+2+6)/8 - ((2+2+1+2+1+1+0+2)/8)*b

cor(y,x)表示x和y的相关系数

Sd(y),Sd(x)分别表示y和x的标准差

可以自己手算一下,也可以借助R语言:

x=c(2,2,1,2,1,1,0,2)

y=c(10,7,6,8,5,4,2,6)

Ex=mean(x);Ex

Ey=mean(y);Ey

Sx=sd(x);Sx

Sy=sd(y);Sy

corn=cor(y,x) ; corn

b=corn*Sy/Sx ; b

a=Ey-b*Ex ; a

最后拟合的结果是:a的最优化为 2.8387, b的最优化为 2.0968 ,公式 y = 2.8387* x + 2.0968

R语言的lm函数也可以计算a和b,完全不需要我们自己一个个手动推导。lm函数结果的Intercept即为b值,x所在行对应的Estimate值即为a值

回归到我们的全基因组关联分析,这里的a即为beta(OR)值

所以搞明白全基因组关联分析的值是怎么来的了吗,这个就是它的计算原理

其他变量呢

上面列出来的公式只是简单的计算基因型与表型之间的相关性。

实际上,我们在计算的时候,会加入其他的变量,比如性别,年龄,品系等。

这些因素也是影响表型的变量。

因此,当考虑其他变量存在时,计算公式会稍微改变一下:y = ax + zβ + b

y:我们研究的表型

x:基因型数据,这里指每一个SNP

a:SNP的系数

z:年龄,性别等因素

β:年龄,性别等因素的系数

b:残差,除了我们纳入的SNP,性别年龄等因素外等其他可能影响表型的因素;

计算原理同上。

全基因组关联分析(GWAS)的计算原理的更多相关文章

  1. 一行命令学会全基因组关联分析(GWAS)的meta分析

    为什么需要做meta分析 群体分层是GWAS研究中一个比较常见的假阳性来源. 也就是说,如果数据存在群体分层,却不加以控制,那么很容易得到一堆假阳性位点. 当群体出现分层时,常规手段就是将分层的群体独 ...

  2. GWAS 全基因组关联分析 | summary statistic 概括统计 | meta-analysis 综合分析

    有很多概念需要明确区分: 人有23对染色体,其中22对常染色体autosome,另外一对为性染色体sex chromosome,XX为女,XY为男. 染色体区带命名:在标示一特定的带时需要包括4项:① ...

  3. 【GWAS文献解读】疟原虫青蒿素抗药性的全基因组关联分析

    英文名:Genetic architecture of artemisinin-resistant Plasmodium falciparum 中文名:疟原虫青蒿素抗药性的全基因组关联分析 期刊:Na ...

  4. 全基因组关联分析(Genome-Wide Association Study,GWAS)流程

    全基因组关联分析流程: 一.准备plink文件 1.准备PED文件 PED文件有六列,六列内容如下: Family ID Individual ID Paternal ID Maternal ID S ...

  5. GWAS | 全基因组关联分析 | Linkage disequilibrium (LD)连锁不平衡 | 曼哈顿图 Manhattan_plot | QQ_plot | haplotype phasing

    现在GWAS已经属于比较古老的技术了,主要是碰到严重的瓶颈了,单纯的snp与表现的关联已经不够,需要具体的生物学解释,这些snp是如何具体导致疾病的发生的. 而且,大多数病找到的都不是个别显著的snp ...

  6. 全基因组关联分析(GWAS):为何我的QQ图那么飘

    前段时间有位小可爱问我,为什么她的QQ图特别飘,如果你不理解怎样算飘,请看下图: 理想的QQ图应该是这样的: 我当时的第一反应是:1)群体分层造成的:2)表型分布有问题.因此让她检查一下数据的群体分层 ...

  7. 全基因组关联分析(GWAS)扫不出信号怎么办(文献解读)

    假如你的GWAS结果出现如下图的时候,怎么办呢?GWAS没有如预期般的扫出完美的显著信号,也就没法继续发挥后续研究的套路了. 最近,nature发表了一篇文献“Common genetic varia ...

  8. R语言画全基因组关联分析中的曼哈顿图(manhattan plot)

    1.在linux中安装好R 2.准备好画曼哈顿图的R脚本即manhattan.r,manhattan.r内容如下: #!/usr/bin/Rscript #example : Rscript plot ...

  9. 全基因组关联分析学习资料(GWAS tutorial)

    前言 很多人问我有没有关于全基因组关联分析(GWAS)原理的书籍或者文章推荐. 其实我个人觉得,做这个分析,先从跑流程开始,再去看原理. 为什么这么说呢,因为对于初学者来说,跑流程就像一个大黑洞,学习 ...

随机推荐

  1. SHELL脚本编程-expect

    SHELL脚本编程-expect 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.expect概述 1>.expect介绍 expect 是由Don Libes基于Tcl( ...

  2. 亚洲唯一:瀚思科技入选2019 Gartner SIEM 领域 Peer Insights,其他第一象限的有splunk和logrithym,elastic==,RSA、fortinet、rapid7和翰思一样都在第二象限

    亚洲唯一:瀚思科技入选 Gartner SIEM 领域 Peer Insights     网络安全技术与产业,正在由传统的合规驱动,走向合规与需求双轮驱动.关注用户需求.倾听用户声音,根据实际情况打 ...

  3. Kotlin反射操纵构造方法与伴生对象

    反射操纵伴生对象: 先定义一个伴生对象: 然后咱们通过反射来调用一下它: 比较简单. 反射操纵构造方法: 先来定义一个类: 然后咱们通过反射来调用一个其中的方法,之前当然就得先来调用构造方法,由于我们 ...

  4. less-3

    首先来了解语句构造方法: 我们输入id=1可以看到未报错,输入id=1’报错,输入id=1’’未报错. 再对比下之前我们在less-1中的报错信息(如下图),可以看到,在less-3中报错信息中“1” ...

  5. postgresql从库提升为主库

    一.停主库 1.查看当前连接 select pid,datname,usename,client_addr,client_port, application_name from pg_stat_act ...

  6. vue cli4.0 快速搭建项目详解

    搭建项目之前,请确认好你自己已经安装过node, npm, vue cli.没安装的可以参考下面的链接安装. 如何安装node? 安装好node默认已经安装好npm了,所以不用单独安装了. 如何安装v ...

  7. 时间戳显示为多少分钟前,多少天前的JS处理,JS时间格式化,时间戳的转换

    var dateDiff = function (timestamp) { // 补全为13位 var arrTimestamp = (timestamp + '').split(''); for ( ...

  8. LeetCode 1135. Connecting Cities With Minimum Cost

    原题链接在这里:https://leetcode.com/problems/connecting-cities-with-minimum-cost/ 题目: There are N cities nu ...

  9. webpack提高打包速度

    通过使用插件和配置插件的参数. 1. 打包速度分析 首先通过speed-measure-webpack-plugin分析打包的各个插件和loader的耗时.然后具体问题,具体分析. 按照插件 npm ...

  10. Linux 系统管理——账号管理

    一.用户账号管理 1.用户账户概述 用户账户的常见分类: 超级用户:root  uid=0  gid=0  权限最大 普通用户:uid>=500  做一般权限的系统管理,权限有限. 程序用户:1 ...