二項分布とカイ二乗検定(と遺伝)

とある標本がとある分布に従ってサンプリングされたかを検定する方法として適合度の検定を行うことがあると思います。

今回は、得られた分離集団の形質の分離比が想定する遺伝様式に即しているかについての検定について見ていきたいと思います。

分離比に対する適合検定

例として、とある形質について、異なる表現型を示す純系2系統を用意し、F2を作成したとします。このとき表現型に分離が見られ、50個体中9個体が劣性(潜性)形質と思われる形質を示したとします。

この状況で、この形質は一遺伝子完全優性で説明されるか、つまり分離比は3:1であるかを調べるのに用いられるのが  {\chi}^2 乗検定だと思います。

とはいえこの現象は二項分布で自然に説明できる気がするのでまずは二項分布による検定を行ってみます。

二項分布で検定してみる

統計検定(両側)の流れは一般的に以下のようになると思います。

  1. 帰無仮説  H_0 を立てる
  2. 帰無仮説のもとデータが得られる確率  P(D|H_0) を求める
  3.  P(D|H_0) よりも起きにくい事象の確率の和  p = \sum_{Y : P(Y|H_0) \le P(D|H_0)}P(Y|H_0) を求める( p 値)
  4.  p があらかじめ設定した水準より低いかどうかを確認する

今回の例の場合、二項分布を用いると以下のような帰無仮説を設定できると思います。

 H_0: 観察された劣性(潜性)(と考えられる)形質を示す個体数は母数  p=1/4, n=50 の二項分布に従う

この仮定の上で、二項分布は以下のような確率分布を示します。

f:id:menseki:20211103214217p:plain

 X=9 のときの尤度(帰無仮説のもとでの観察結果が得られる確率)を求めると

 \displaystyle
P(X = 9 | H_0) = {50 \choose 9} \left(\frac{1}{4}\right)^9 \left(\frac{3}{4}\right)^41 
                          \fallingdotseq 0.0720

となります。また、これと同等またはより起きにくい事象の確率の和は図で言うところの赤とオレンジの部分の和であり、以下のようになります。

 \displaystyle
p \fallingdotseq 0.3268

ということで帰無仮説は5%有意水準のもとで棄却できないことになります。 n が増えてくにつれ計算が多くなって大変そうですが、Rを使えばbinom.test で実行できます。

> binom.test(x=9, n=50, p=1/4)

        Exact binomial test

data:  9 and 50
number of successes = 9, number of trials = 50, p-value = 0.3268
alternative hypothesis: true probability of success is not equal to 0.25
95 percent confidence interval:
 0.08576208 0.31436941
sample estimates:
probability of success 
                  0.18 

二項分布を正規分布で近似してみる

ところで、 nが十分大きいとき二項分布  B(n, p) は平均  np 、分散  np(1-p)正規分布で近似できます。

そこで、二項分布から得られたとするデータを  X とすると  Z = \frac{X-np}{\sqrt{np(1-p)}}標準正規分布に従います。つまり標準正規分布表を用いて検定ができるのです。

また、標準正規分布から得られたデータを2乗すると {\chi}^2 分布に従います。実際に Zを2乗してみると、

 \begin{aligned}
Z^2 &= \frac{(X-np)^2}{np(1-p)} \\
&=\frac{(X-np)^2}{np} + \frac{( (n-X) - n(1-p) ) ^ 2}{n(1-p)}
\end{aligned}

となり、ここで得られた式はまさに {\chi}^2検定をする際に計算する \sum_{i} \frac{ (O_i - E_i) ^ 2}{ E_i } と等価になっています。

まとめ

以上から、適合度検定は二項分布に従う確率変数が正規分布に従うと近似したときに {\chi}^2検定として検定ができることがわかりました。カテゴリ数が3以上のときは多項分布に従うと仮定できると思いますので、多項分布による検定ができます。(RではEMTパッケージのmultinomial.testなどで実行できます。)ただ多くの場合は {\chi}^2検定が使われているように思います。

参考