4. 群体遗传学中的哈代-温伯格平衡

哈代-温伯格平衡,简称HWE。我这几年做群体遗传学分析,几乎每个项目都要跟它打交道。说白了,它就是一把尺子,用来衡量一个群体在理想状态下,基因频率到底该长什么样。

这个原理本身不难理解:在一个非常大的、随机交配的群体里,如果没有突变、没有选择、没有迁移,那么等位基因频率和基因型频率会一代代保持不变。我在给团队培训时总说,你把这个平衡当作一个“零假设”就行——如果实际数据偏离它,说明背后有故事。

4.1 核心公式

假设某个位点有两个等位基因:A和a。频率分别是p和q。那么p + q = 1。这个很简单,没什么可说的。

基因型频率的预期值就是:

AA 的频率 = p²
Aa 的频率 = 2pq
aa 的频率 = q²

我遇到过一些新手,拿到数据后直接上来就算p²,结果发现和观测值对不上。嗯,这里要注意:前提条件必须满足,不然算出来的只是“理论值”,不是现实。

核心要点:哈代-温伯格平衡不是假设群体不会进化,而是提供了一个基准线。任何偏离都可能意味着进化力量在起作用。

4.2 五个假设条件

实际群体很少完美满足这五个条件。但正因为如此,HWE才更有用。你想想看,如果数据全完美,那我们分析什么呢?

  1. 随机交配:每个个体与另一个体交配的概率相同,不受基因型影响。
  2. 无自然选择:所有基因型存活和繁殖能力一样。
  3. 无突变:等位基因不会从A变成a,也不会反过来。
  4. 无迁移:没有个体流入或流出群体。
  5. 群体无限大:没有遗传漂变的影响。

避坑指南:我曾经在分析一个人类全基因组数据时,发现某个位点严重偏离HWE。一开始以为是技术错误,后来排查发现那个位点正好位于一个免疫相关基因上,实际上是受到了选择压力。所以,偏离的不一定是实验问题,也可能是生物学信号。

4.3 如何检验HWE

最常用的方法是卡方检验。公式很简单:

χ² = Σ(观测值 - 预期值)² / 预期值

具体步骤我一般这么走:

  1. 先算等位基因频率p和q。
  2. 用p²、2pq、q²算基因型预期个数。
  3. 套卡方公式,算χ²值。
  4. 自由度是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值就全错了。

哈代-温伯格平衡分析框架 原始基因型计数 计算等位基因频率 (p, q) 计算预期基因型频率 卡方检验 / Fisher精确检验 p ≥ 0.001 ✅ 平衡 p < 0.001 ❌ 偏离 偏离HWE ≠ 数据错误。可能是选择、群体结构或近亲交配的生物学信号。 先排查技术原因,再解读生物学含义。

4.7 QC中的应用

在GWAS等大规模分析中,HWE检验是标准质控步骤。我通常这样用:

  • 对照组:p值阈值设得比较严,比如1×10⁻⁶。
  • 病例组:阈值可以放宽松,因为选择效应可能让位点偏离。
  • 全基因组:只看对照组,排除所有p小于阈值的情况。

为什么?因为疾病相关位点在病例组中可能真的受选择影响,把它过滤掉反而可能漏掉信号。

最佳实践:我个人建议,在任何群体遗传学分析的第一步,都跑一下HWE检验。这不仅是QC,还能帮你了解数据质量,提前发现异常。我这些年踩过的坑,大半都是靠HWE检验提前发现的。