アレルA とアレルa がある。
アレルA の存在確率がのとき、アレルa の存在確率は
である。
1世代交配して得られる遺伝子型はである。
これは、アレルA とアレルA を持つ者同士は強制的に子孫残してね、というような神の見えざる手が働かない、つまり、完全にランダムなときにこの比率になる。
この場合にHWE という。
実際には、完全にランダム、とはならず、とある係数(近交係数と呼ばれる)により
となる。
AA とaa からが計算できるので、ゴリ押しすると
N1 <- c(36, 48, 16) # p = 0.6, F = 0 N2 <- c(42, 36, 22) # p = 0.6, F = 0.25 HWE_F <- function(vec){ p <- ((vec[1]-vec[3])/sum(vec)+1)/2 F <- 1-vec[2]/sum(vec) /2/p/(1-p) return(list(p=p, F=F, HWE=c(p^2, 2*p*(1-p), (1-p)^2), HWD=c(p^2+p*(1-p)*F, 2*p*(1-p)*(1-F), (1-p)^2+p*(1-p)*F))) }
HWE_F(N1) # F = 0
$p [1] 0.6 $F [1] 0 $HWE [1] 0.36 0.48 0.16 $HWD [1] 0.36 0.48 0.16
HWE_F(N2) # F > 0
$p [1] 0.6 $F [1] 0.25 $HWE [1] 0.36 0.48 0.16 $HWD [1] 0.42 0.36 0.22
アレルA/a, B/b の組を考える。確率はそれぞれ、,
,
,
である。
これがお互いになんの関係もなく、交配したとしたら、次世代の遺伝子型の確率は次のようになる。
いま、A/a, B/b が独立ではなく、連鎖不平衡という現象によって偏って次世代に交配すると
ただし、
AB とab からを消去すると
となる二次方程式をsolve で解けばよい。
M1 <- matrix(c(42, 18, 28, 12), 2) # p1 = 0.6, p2 = 0.7, r = 0 M2 <- matrix(c(48, 12, 22, 18), 2) # r ~ 0.25 LD <- function(mat){ a <- matrix(c(1, 1, 1, -1), 2) b <- c(1+(mat[1,1]-mat[2,2])/sum(mat), (mat[2,1]-mat[1,2])/sum(mat)) p12 <- solve(a, b) delta <- mat[1,1]/sum(mat) - prod(p12) LE <- matrix(c(prod(p12), p12[1]*(1-p12[2]), (1-p12[1])*p12[2], prod(1-p12)), 2) return(list(p = p12, r = delta/sqrt(prod(c(p12, 1-p12))), LE = LE, LD = LE + matrix(c(1, -1, -1, 1), 2)*delta)) }
LD(M1) # No disequilibrium
$p [1] 0.6 0.7 $r [1] -2.472663e-16 $LE [,1] [,2] [1,] 0.42 0.28 [2,] 0.18 0.12 $LD [,1] [,2] [1,] 0.42 0.28 [2,] 0.18 0.12
LD(M2) # with disequilibrium
$p [1] 0.6 0.7 $r [1] 0.2672612 $LE [,1] [,2] [1,] 0.42 0.28 [2,] 0.18 0.12 $LD [,1] [,2] [1,] 0.48 0.22 [2,] 0.12 0.18