4. 群体遗传学中的哈代-温伯格平衡
哈代-温伯格平衡,简称HWE。我这几年做群体遗传学分析,几乎每个项目都要跟它打交道。说白了,它就是一把尺子,用来衡量一个群体在理想状态下,基因频率到底该长什么样。
这个原理本身不难理解:在一个非常大的、随机交配的群体里,如果没有突变、没有选择、没有迁移,那么等位基因频率和基因型频率会一代代保持不变。我在给团队培训时总说,你把这个平衡当作一个“零假设”就行——如果实际数据偏离它,说明背后有故事。
4.1 核心公式
假设某个位点有两个等位基因:A和a。频率分别是p和q。那么p + q = 1。这个很简单,没什么可说的。
基因型频率的预期值就是:
AA 的频率 = p²
Aa 的频率 = 2pq
aa 的频率 = q²
我遇到过一些新手,拿到数据后直接上来就算p²,结果发现和观测值对不上。嗯,这里要注意:前提条件必须满足,不然算出来的只是“理论值”,不是现实。
核心要点:哈代-温伯格平衡不是假设群体不会进化,而是提供了一个基准线。任何偏离都可能意味着进化力量在起作用。
4.2 五个假设条件
实际群体很少完美满足这五个条件。但正因为如此,HWE才更有用。你想想看,如果数据全完美,那我们分析什么呢?
- 随机交配:每个个体与另一个体交配的概率相同,不受基因型影响。
- 无自然选择:所有基因型存活和繁殖能力一样。
- 无突变:等位基因不会从A变成a,也不会反过来。
- 无迁移:没有个体流入或流出群体。
- 群体无限大:没有遗传漂变的影响。
避坑指南:我曾经在分析一个人类全基因组数据时,发现某个位点严重偏离HWE。一开始以为是技术错误,后来排查发现那个位点正好位于一个免疫相关基因上,实际上是受到了选择压力。所以,偏离的不一定是实验问题,也可能是生物学信号。
4.3 如何检验HWE
最常用的方法是卡方检验。公式很简单:
χ² = Σ(观测值 - 预期值)² / 预期值
具体步骤我一般这么走:
- 先算等位基因频率p和q。
- 用p²、2pq、q²算基因型预期个数。
- 套卡方公式,算χ²值。
- 自由度是1。查表或用统计软件算p值。
举个例子。假设一个群体有100个人,基因型分布如下:
| 基因型 | 观测值 | 预期值 |
|---|---|---|
| AA | 36 | ? |
| Aa | 48 | ? |
| aa | 16 | ? |
先算等位基因频率:
A 的频率 p = (2 * 36 + 48) / (2 * 100) = 120 / 200 = 0.6
a 的频率 q = 1 - 0.6 = 0.4
再算预期基因型个数:
AA 预期 = 0.6² * 100 = 36
Aa 预期 = 2 * 0.6 * 0.4 * 100 = 48
aa 预期 = 0.4² * 100 = 16
你会发现,观测值和预期值完全一致。这说明这个群体在这个位点上处于哈代-温伯格平衡。
技巧:我在实际项目中,很少手动算卡方。一般都用PLINK或R。如果你用PLINK,一条命令就能搞定:
plink --bfile mydata --hardy
输出的结果里,P列就是p值。我习惯设置p值阈值在0.001以下才算显著偏离。
4.4 偏离HWE的常见原因
如果发现位点偏离HWE,不要慌。我个人把它归为三类原因:
- 技术问题:基因分型错误、样品污染、测序深度不够。我排查时,先看这个。
- 生物学原因:选择、群体分层、近亲交配、基因流。这些是做群体遗传学最关心的信号。
- 统计假象:样本量太小,卡方检验不适用。这时候我会改用精确检验。
为什么要区分?因为处理方式完全不同。技术问题的话,我需要回看原始数据,检查是否有批次效应。生物学原因的话,那就恭喜了——你找到了一个候选位点。
4.5 小样本时的替代方法
样本量小于100时,卡方检验结果不可靠。我曾经吃过一次亏,一个只有50个样本的项目,用卡方检验发现一堆显著偏离的位点,后来发现是统计方法不对。
小样本我推荐用Fisher精确检验。它在R里很好实现:
# 假设观测值向量 obs 为 c(AA, Aa, aa)
obs <- c(36, 48, 16)
n <- sum(obs)
p_est <- (2 * obs[1] + obs[2]) / (2 * n)
q_est <- 1 - p_est
exp <- c(p_est^2, 2 * p_est * q_est, q_est^2) * n
# 如果软件包不够,可用 HWExact 包
library(HWExact)
HWExact(obs)
这个方法对样本量不敏感,更可靠。
4.6 多等位基因的处理
实际数据中,很多位点有3个甚至更多等位基因。公式需要扩展。假设有三个等位基因A、B、C,频率分别是p、q、r。那么p + q + r = 1。
基因型预期频率是:
纯合子:p², q², r²
杂合子:2pq, 2pr, 2qr
自由度计算公式也变了:
自由度 = (等位基因数 * (等位基因数 - 1)) / 2
对于三个等位基因,自由度是 (3 * 2) / 2 = 3。这个不搞清楚,p值就全错了。
4.7 QC中的应用
在GWAS等大规模分析中,HWE检验是标准质控步骤。我通常这样用:
- 对照组:p值阈值设得比较严,比如1×10⁻⁶。
- 病例组:阈值可以放宽松,因为选择效应可能让位点偏离。
- 全基因组:只看对照组,排除所有p小于阈值的情况。
为什么?因为疾病相关位点在病例组中可能真的受选择影响,把它过滤掉反而可能漏掉信号。
最佳实践:我个人建议,在任何群体遗传学分析的第一步,都跑一下HWE检验。这不仅是QC,还能帮你了解数据质量,提前发现异常。我这些年踩过的坑,大半都是靠HWE检验提前发现的。