【基于R语言群体遗传学】-4-统计建模与算法(statistical tests and algorithm)

news2024/11/16 10:12:37

之前的三篇博客,我们对于哈代温伯格遗传比例有了一个全面的认识,没有看的朋友可以先看一下前面的博客:

群体遗传学_tRNA做科研的博客-CSDN博客

1.一些新名词

(1)Algorithm: A series of operations executed in a specific order.

算法:按照特定顺序执行的一系列操作。

(2)Probability: The chance of an occurrence given repeated attempts.

概率:在重复尝试中发生的可能性。

(3)Likelihood: The chance of an occurrence given a model assumption.

可能性:在给定模型假设下发生的机会。

(4)Machine Learning: A process where computational results are validated to improve accuracy.

机器学习:验证计算结果以提高准确性的过程。

(5)Parthenogenesis: Development of an embryo without fertilization.

单性生殖:胚胎未经受精而发育。

(6)Autogamic: Self-fertilizing.

自花授粉:自我受精。

2.期望的偏差(Deviation from exception)

在这一点上,我们已经花费了大量时间来验证我们对哈代-温伯格假设下的等位基因频率的期望是否合理。我们可以做出的最有趣的观察之一是,某个种群正在违背我们的期望,当这种情况发生时,我们就可以开始探索其他可能性。在这个探索中,我们可以使用的一个特定的统计工具叫做χ2(卡方)统计检验。我们可以使用这个检验来看我们的观察到的基因型频率是否真的偏离了基于哈代-温伯格预测的期望。关于R语言统计相关的知识,可以看我写的博客:

【R语言从0到精通】-3-R统计分析(列联表、独立性检验、相关性检验、t检验)_r 列联表分析-CSDN博客

我们通过一个真实的数据集,该数据集包含了来自尼日利亚拉各斯501人样本的基因型计数(Taiwo等人,2011年)。这些是产生血红蛋白的基因的基因型,该基因与镰状细胞贫血症(血红蛋白S)相关。首先,我们计算等位基因和预期基因型频率,然后我们可以对这些数据进行χ2检验。 首先,将每个观察到的基因型计数保存为它们自己的变量。我们将使用AA表示纯合子非镰刀基因型SS表示纯合子镰刀等位基因基因型AS表示杂合子,三者的和就是总人数N。

GenotyoeAASSAS
number36612123

我们计算镰刀型等位基因S的等位基因频率:

AA <- 366
AS <- 123
SS <- 12
N <- AA + AS + SS
p <- (SS + (AS/2))/N
p

根据观察到的等位基因频率p,我们现在可以计算预期的基因型。因为我们想要追踪两种不同的等位基因(S和A),因此有两种不同的纯合性,我们将SS纯合子定义为p²,而AA纯合子定义为(1-p)²。这里的含义是,只有两种可能的等位基因:S的频率为p,A的频率为非p的所有部分。 现在,通过将我们计算出的基因型频率乘以实际抽样个体的数量,我们可以得到我们预期的个体基因型数量:

ExpAA <- N*(1-p)^2
ExpAS <- N*2*p*(1-p)
ExpSS <- N*p^2

为了确定我们所看到的基因型数量是否真的符合我们的预期,我们将使用内置的R函数pchisq()来计算来自χ²分布的概率值(P值)。在pchisq()函数中,我们希望将参数lower.tail设置为FALSE,因为我们想看到我们的χ²值高于实际值的概率。随着我们的观察和预期差异越来越大,我们的χ²值应该增加,粗略地说,得到一个非常大的χ²值的概率应该越来越小。

其中E是预期的计数数量,O是观察到的计数数量,这会在所有类别上进行求和。我们希望找到这个χ²统计量在分布中的位置,但为了有一个合适的分布,我们必须告诉函数考虑多少自由度(df)来进行测试。一般来说,我们在计算自由度时,从数据的类别数减一开始,所以在这个例子中有三个类别(ExpAA、ExpAS和ExpSS)减一。然而,我们还必须从观测数据中估计一个参数p,以生成每个类别的预期值。这意味着我们又失去了一个自由度。因此,df = 3 - 2 = 1(通过从观察数据中估计参数,预期数值“拟合”观察数据更紧密,所以这是有代价的)

chi2 <- (ExpAA-AA)^2/ExpAA+
  (ExpAS-AS)^2/ExpAS+
  (ExpSS-SS)^2/ExpSS
pvalue <- pchisq(chi2, df = 1, lower.tail = FALSE)
chi2
pvalue

结果得到的P值(0.664>0.5),这表明我们的观察值与预期值相当一致(如果P值小于0.05,则认为一个值与预期显著不同)。因此,这个观察数据似乎完全符合我们从哈代-温伯格预测中所期望的结果。 χ²检验实际上是对似然比检验的一种便捷近似,这种检验被称为G检验或拟合优度检验,也常用于评估模型预测与实际现实世界数据之间的一致性:

这种方法,顾名思义,关注的是我们的观察值与预期值的似然比。这种G检验方法使用与χ²检验相同的分布,并且表现相似。χ²检验通常被教授而不是G检验,因为它不需要你计算对数值;我们进行稍微更简化的G检验统计量的计算:

geno <- c(AA, AS, SS)
expe <- c(ExpAA, ExpAS, ExpSS)
G <- 2 * sum(geno * log(geno/expe))
pvalue <- pchisq(G, df = 1, lower.tail = FALSE)
G
pvalue

G检验得出的P值(0.668),与χ²检验(0.664)非常相似,因此我们再次相当确信我们的观察数据与我们的预期没有太大差异。

如果你还记得前一章的我们说哈代-温伯格预测的必要条件之一是没有任何遗传变异受到自然选择的影响。在这里,我们处理的等位基因对某一表型有重大影响,例如在纯合子时导致镰刀型贫血,在杂合子时赋予抗疟疾能力,这明显违反了这一假设(Luzzatto 2012)。但是,正如我们从刚才分析的血红蛋白S数据中看到的,这些假设经常被违反,然而与哈代-温伯格预期的偏离可能看起来非常小。我们看一个违法的例子:

哈代-温伯格假设之一是每一代配子的有效随机结合,无论潜在的等位基因频率如何。这在克隆物种中严重破坏,其中一个亲本产生一个与自己基因相同的后代。水蚤就是这样一种物种,雌性通常通过孤雌生殖(未受精的卵发育成胚胎)繁殖,一些种群甚至必须进行孤雌生殖(Paland等人,2005)

让我们来看一个例子,采集的118只水蚤个体,关于磷酸葡萄糖异构酶(PGI)的两个等位基因,我们再次称之为“A”和“S”,以便我们可以重用之前的代码(Hebert和Crease 1983)。发现了100个AS杂合子和34个AA纯合子,而SS纯合子在样本中完全缺失。我们再次进行卡方检验: 

AA <- 34
AS <- 100
SS <- 0
N <- AA + AS + SS
p <- (SS + (AS/2))/N
p
ExpAA <- N*(1-p)^2
ExpAS <- N*2*p*(1-p)
ExpSS <- N*p^2

chi2 <- (ExpAA-AA)^2/ExpAA+
  (ExpAS-AS)^2/ExpAS+
  (ExpSS-SS)^2/ExpSS
pvalue <- pchisq(chi2, df = 1, lower.tail = FALSE)
chi2
pvalue

我们得到新的p值:

我们可以看到,这与我们的预期有很大的偏差,P值为5.56×10⁻¹²,我们可以得出结论,PGI基因中的至少一个变体超出哈代-温伯格条件下预期的东西;也就是说,我们没有在每个新世代中随机结合配子。 我们可以使用R函数barplot()将这些数据可视化为条形图。

dat <- matrix(c(geno,expe), nrow = 2, byrow = T)
barplot(dat,beside=T,
        col=c("turquoise4", "sienna1"),
        names.arg=c("AA", "SA", "SS"))
legend(x="topright", legend=c("Observed","Expected"),pch=15, col=c("turquoise4","sienna1"))

在处理较小的样本量时,考虑使用替代的检验方法可能更为合适,例如“精确检验”(exact test)。在精确检验中,会使用所有可能的等位基因基因型配置来为观察到的配置分配一个P值。关于这一背景下的精确检验的进一步讨论,可以参考Guo和Thompson(1992年)、Wigginton等人(2005年)、Engels(2009年)以及其中的参考文献。然而,一般来说,如果样本量足够大,能够检验感兴趣效应的大小,并且不过分关注接近显著性截断边界的结果(例如,Johnson 1999年),这些不同的统计方法在最终解释上将会是一致的。

原书内容写的有点不清晰,很多地方重复冗余,我进行提炼总结,许多R语言的错误我也进行了纠正,如果有什么问题,欢迎大家进行讨论。

下一篇博客我们将不只讨论两个等位基因的情况,而是进行一些拓展,下个博客见!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1891411.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

uni-app上传失败超出文件限制解决方法-分包处理-预加载

分包背景 当你的上传出现一下错误&#xff1a; Error: 系统错误&#xff0c;错误码&#xff1a;80051,source size 2089KB exceed max limit 2MB [20240703 10:53:06][wxbf93dfb6cb3eb8af] [1.06.2405010][win32-x64] 说明你主包太大需要处理了&#xff0c;一下两种方法可以…

51单片机嵌入式开发:STC89C52操作8八段式数码管原理

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 STC89C52操作8八段式数码管原理 1 8位数码管介绍1.1 8位数码管概述1.2 8位数码管原理1.3 应用场景 2 原理图图解2.1 74HC573原理2.2 74HC138原理2.3 数码管原理 3 数码管程序…

QT_GUI

1、QT安装 一个跨平台的应用程序和用户界面框架&#xff0c;用于开发图形用户界面&#xff08;GUI&#xff09;应用程序以及命令行工具。QT有商业版额免费开源版&#xff0c;一般使用免费开源版即可&#xff0c;下面安装的是QT5&#xff0c;因为出来较早&#xff0c;使用较多&…

【前端CSS3】CSS引入方式总结(黑马程序员)

文章目录 一、前言&#x1f680;&#x1f680;&#x1f680;二、CSS引入方式&#xff1a;☀️☀️☀️2.1 内部样式表2.2 行内样式表 三、总结&#x1f680;&#x1f680;&#x1f680; 一、前言&#x1f680;&#x1f680;&#x1f680; ☀️ 回报不在行动之后&#xff0c;回报…

ETL数据集成丨使用ETLCloud实现MySQL与Greenplum数据同步

我们在进行数据集成时&#xff0c;MySQL和Greenplum是比较常见的两个数据库&#xff0c;我们可以通过ETLCloud数据集成平台&#xff0c;可以快速实现MySQL数据库与数仓数据库&#xff08;Greenplum&#xff09;的数据同步。 MySQL数据库&#xff1a; 优点&#xff1a; 轻量级…

Java实现电子围栏的小例子

主要需求是实现一个电子围栏判断的小例子其中包括前端和后端的demo代码 public class GeoFenceUtils {/** geometryFactory */private static final GeometryFactory geometryFactory new GeometryFactory();/*** 判断指定的GPS点是否在电子围栏内** param fencePointsList 包…

上海小程序开发需要进行定制开发吗?

随着互联网技术与移动设备的不断成熟&#xff0c;小程序也已普及到人们日常生活的方方面面。随着企业与互联网联结的愈发深入&#xff0c;小程序的开发可以为企业带来更高效的经营模式&#xff0c;降本增效。那么&#xff0c;上海小程序作为无需安装且开发门槛较低的应用&#…

udp发送数据如果超过1个mtu时,抓包所遇到的问题记录说明

最近在测试Syslog udp发送相关功能&#xff0c;测试环境是centos udp头部的数据长度是2个字节&#xff0c;最大传输长度理论上是65535&#xff0c;除去头部这些字节&#xff0c;可以大概的说是64k。 写了一个超过64k的数据(随便用了一个7w字节的buffer)发送demo&#xff0c;打…

Three.js机器人与星系动态场景(二):强化三维空间认识

在上篇博客中介绍了如何快速利用react搭建three.js平台&#xff0c;并实现3D模型的可视化。本文将在上一篇的基础上强化坐标系的概念。引入AxesHelper辅助工具&#xff0c;带你快速理解camer、坐标原点、可视区域。 Three.js机器人与星系动态场景&#xff1a;实现3D渲染与交互式…

AMEYA360代理:海凌科60G客流量统计雷达模块 4T4R出入口绊数计数

数字化时代&#xff0c;不管是大型商城还是各种连锁店&#xff0c;客流统计分析都可以帮助企业更加精准地了解顾客需求和消费行为。 海凌科推出一款专用于客流量统计的60G雷达模块&#xff0c;4T4R&#xff0c;可以实时进行固定范围内的人体运动轨迹检测&#xff0c;根据人体的…

使用Python3和Selenium打造百度图片爬虫

开篇 本文的目的在于实现一个用来爬取百度图片的爬虫程序,因该网站不需要登录&#xff0c;所以相对来说较为简单。下面的爬虫程序中我写了比较多的注释&#xff0c;以便于您的理解。 准备 请确保电脑上已经安装了与chrome浏览器版本匹配的chromeDriver&#xff0c;且电脑中已经…

使用 HBuilder X 进行 uniapp 小程序开发遇到的问题合集

文章目录 背景介绍问题集锦1. 在 HBuilderX 点击浏览器运行时&#xff0c;报 uni-app vue3编译器下载失败 安装错误2.在 HBuilderX 点击微信小程序运行时&#xff0c;报 微信开发者工具打开项目失败&#xff0c;请参阅启动日志错误 背景介绍 HBuilder X 版本&#xff1a;HBui…

NoSQL 之 Redis 集群部署

前言&#xff1a; &#xff08;1&#xff09;主从复制&#xff1a;主从复制是高可用Redis的基础&#xff0c;哨兵和集群都是在主从复制基础上实现高可用 的。主从复制主要实现了数据的多机备份&#xff0c;以及对于读操作的负载均衡和简单的故障恢复。缺陷&#xff1a; 故障…

Elasticsearch备份数据到本地,并导入到新的服务 es 服务中

文章目录 使用elasticsearch-dump工具备份安装node.js(二进制安装)解压设置环境变量安装elasticsearch-dump docker安装使用ES备份文件到本地 使用elasticsearch-dump工具备份 这个工具备份时间比较长 安装node.js(二进制安装) wget https://nodejs.org/dist/v16.18.0/node-…

E1696 无法打开 源 文件 “point.h“

一段时间没碰vs2022突然导入一个项目就出现下面错误 在网上查了很多办法&#xff0c;都没什么有用。 试了试&#xff0c;相对路径可以解决。 但是每次都要用相对路径太麻烦了。 又试了试&#xff0c;发现还是硬件问题&#xff0c;就像摩托长期不开等到突然想开的时候就死活打…

零障碍入门:SSH免密登录与Hadoop生态系统的完美搭档【实训Day02】

一、 SSH免密登录配置 1 生成公钥和秘钥(在hadoop101上) # su star # cd /home/star/.ssh # ssh-keygen -t rsa 2 公钥和私钥 公钥id_rsa.pub 私钥id_rsa 3 将公钥拷贝到目标机器上(在hadoop101上) # ssh-copy-id hadoop101 # ssh-copy-id hadoop102 # ssh-co…

Hi3861 OpenHarmony嵌入式应用入门--TCP Client

本篇使用的是lwip编写tcp客户端。需要提前准备好一个PARAM_HOTSPOT_SSID宏定义的热点&#xff0c;并且密码为PARAM_HOTSPOT_PSK。还需要准备一个tcp服务&#xff0c;服务ip为PARAM_SERVER_ADDR宏定义&#xff0c;端口为PARAM_SERVER_PORT宏定义。 修改网络参数 在Hi3861开发板…

[C++][设计模式][访问器]详细讲解

目录 1.动机2.模式定义3.要点总结4.代码感受1.代码一2.代码二 1.动机 在软件构件过程中&#xff0c;由于需求的变化&#xff0c;某些类层次结构中常常需要增加新的行为(方法)&#xff0c;如果直接在基类中做这样的更改&#xff0c; 将会给子类带来很繁重的变更负担&#xff0c…

zabbix小白入门:从SNMP配置到图形展示——以IBM服务器为例

作者 乐维社区&#xff08;forum.lwops.cn&#xff09;许远 在运维实践中&#xff0c;Zabbix作为一款强大的开源监控工具&#xff0c;被广泛应用于服务器、网络设备和应用程序的监控&#xff0c;成为保障业务连续性和高效运行的关键。然而&#xff0c;对于Zabbix的初学者来说&a…

法国工程师IMT联盟 密码学及其应用 2023年期末考试题

1 在 Unix 下的安全性 (30 分钟) 1.1 问题 1 1.1.1 问题 我们注意constat到通过 SMTP 服务器发送“假”电子邮件&#xff08;垃圾邮件&#xff09;相对容易。越来越常见的做法是在 SMTP 连接之上部署dployer TLS 协议protocole&#xff08;即 SMTPS&#xff09;。这解决了垃圾…