1. 哈迪-温伯格(Hardy-Weinberg )平衡定义
哈迪-温伯格平衡描述了在理想群体中,基因频率和基因型频率在没有进化力量(如突变、选择、迁移、遗传漂变)的影响下,经过一代随机交配后,将达到并保持平衡状态,并且这种平衡状态会在后续世代中持续保持。
2. 哈迪-温伯格平衡的假设条件
(1)大群体:群体足够大,以避免遗传漂变的影响。
(2)随机交配:个体之间随机交配,没有选型交配或近亲交配等非随机交配模式。
(3)无突变:等位基因不会发生突变。
(4)无选择:不同基因型的个体具有相同的适合度,不存在自然选择。
(5)无迁移:没有个体从外部群体迁入或迁出。
3. 哈迪-温伯格平衡的计算
假设初始群体中,等位基因 A 的频率为 ,等位基因 a 的频率为 ,且p+q=1。
在随机交配的情况下,各种基因型的频率可以通过以下方式计算:
4. 哈迪-温伯格平衡检验步骤
在实际研究中,可以通过观察的基因型频率来检验群体是否处于哈迪-温伯格平衡状态,可以使用卡方检验:
(1)计算观察到的基因型频率:假设观察到的基因型 AA、Aa和aa 的数量分别为N_AA 、N_Aa、N_aa,总样本量N= N_AA +N_Aa+N_aa。
(2)计算观察到的等位基因频率:
等位基因A的频率 p = ( 2 * N_AA + N_Aa ) / ( 2 * N)
等位基因a的频率 q = ( 2 * N_aa + N_Aa ) / ( 2 * N)
(3)计算期望的基因型频率:
期望的AA频率p^2 , 期望Aa的频率2pq, 期望aa的频率q^2
(4)卡方检验:
设置自由度和显著性水平,查找卡方分布表, 比较卡方值与临界值,如果计算的卡方值小于临界值,则认为群体处于 Hardy-Weinberg 平衡状态;否则,认为群体偏离平衡状态。卡方检验公式如下:
5. python实现哈迪-温伯格平衡检验
import numpy as np
from scipy.stats import chi2
def hardy_weinberg_test(n_AA, n_Aa, n_aa):
N = n_AA + n_Aa + n_aa
p = (2 * n_AA + n_Aa) / (2 * N)
q = 1 - p
# 期望的基因型频率
expected_AA = N * p ** 2
expected_Aa = N * 2 * p * q
expected_aa = N * q ** 2
# 计算卡方值
chi_square = (
(n_AA - expected_AA) ** 2 / expected_AA +
(n_Aa - expected_Aa) ** 2 / expected_Aa +
(n_aa - expected_aa) ** 2 / expected_aa
)
# 设置卡方检验自由度为df=1, 显著性水平0.95
# 如果计算的卡方值小于临界值,则认为群体处于 Hardy-Weinberg 平衡状态;否则,认为群体偏离平衡状态。
critical_value = chi2.ppf(0.95, df=1)
print(f"卡方值: {chi_square}")
print(f"临界值: {critical_value}")
if chi_square < critical_value:
print("群体处于 Hardy-Weinberg 平衡状态\n")
else:
print("群体偏离 Hardy-Weinberg 平衡状态\n")
# 测试数据
hardy_weinberg_test(n_AA = 49, n_Aa = 101, n_aa=50)
hardy_weinberg_test(n_AA = 45, n_Aa = 115, n_aa=40)