分布の適合度検定を行う(カイ二乗検定)【Python】

観測した度数分布が理論的に予測される度数分布と一致しているかどうかを確認するにはどのようにしたらよいでしょうか?度数分布を見比べて何となく一致していそうだということは言えますが、統計学的に一致しているかどうかを示す方法はあるのでしょうか?

このようなことを示す方法として観測度数が理論確率に適合しているかどうかを検定する適合度検定があります。ここではPythonを用いて適合度検定を行う方法を見ていきましょう。

開発環境

  • Python 3.7.9
  • scipy 1.6.0

適合度検定の数学的背景

\(A_1, A_2, …, A_k\)について合計\(n\)個を観察したとき、それぞれについて実際に観測された個数を\(f_1, f_2, …, f_k\)、それが従っていると想定される分布(検定したい分布)から計算される確率を\(p_1, p_2, …, p_k\)、そこから期待される個数を\(np_1, np_2, …, np_k\)とします。

ここで、観測度数と期待度数との差を評価するために、以下の統計量を考えます。この統計量はピアソンの適合度基準と呼ばれています。

$$ピアソンの適合度基準:\chi^2=\sum{\frac{(f-np)^2}{np}}=\sum{\frac{(観測度数-期待度数)^2}{期待度数}}$$

ここで、Z1, Z2, … ,Zkをそれぞれ独立で、標準正規分布N(0,1)に従う確率変数とするとき、確率変数\(\chi^2\) = Z12+Z22+ … + Zk2 の従う分布を自由度kの\(\chi^2\)分布といいいます。先ほどのピアソンの適合度基準はnが十分大きい場合に自由度k-1の\(\chi^2\)分布に従うことが知られており、適合度検定ではこの性質を用いて\(\chi^2\)検定を行います。

なお、ピアソンの適合度基準が\(\chi^2\)分布に従うことは中心極限定理より証明されます(ピアソンの定理)。詳しい照明は以下のサイトをご覧ください。

具体的な例

具体的な例をもとに実際の適合度検定を行ってみましょう。

サイコロを3000回振ったとき、それぞれの目の出た回数は次のようになりました。

  • 1の目が出た回数:468回
  • 2の目が出た回数:494回
  • 3の目が出た回数:532回
  • 4の目が出た回数:494回
  • 5の目が出た回数:517回
  • 6の目が出た回数:495回

この時、このサイコロはすべての目が等しい確率で出ていると言えるでしょうか?

予測される分布に適合するかを検定する

それでは、先ほどのサイコロの目が等しい確率で出ていると言えるかどうかを適合度の検定で確認してみましょう。先ほどの結果の観測度数(観測されたその目の出た回数)と期待度数(理論確率から計算されるその目の出る回数)は次の表のようになります。ここで、理論確率はすべての目が1/6の確率で出るとして、サイコロを3000回振っているので期待度数は\(3000\times1/6=500\)となります。

この観測度数と期待度数が一致するかどうか(観測度数が期待度数に適合するかどうか)を有意水準5%で検定してみましょう。帰無仮説と対立仮説は次のようになります。

  • 帰無仮説:観測度数と期待度数は一致する
  • 対立仮説:観測度数と期待度数は一致しない

Pythonを用いて仮説検定を行う場合はscipy.statsモジュールを用います。適合度の検定では\(\chi^2\)検定を行うので、chisquare関数を用いましょう。chisquare関数の引数に観測度数のリストと期待度数のリストを順番に指定します。

from scipy import stats

observed = [468, 494, 532, 494, 517, 495]
expected = [500, 500, 500, 500, 500, 500]

result = stats.chisquare(observed, expected)
print(result)
Power_divergenceResult(statistic=4.868, pvalue=0.43220129557978904)

これよりp値が0.43220… ということが分かります。これは、仮に帰無仮説が真であるとすると今回の観測度数と同じか、より極端な観測度数が偶然得られる確率は0.43220…であるという意味になります。ここでは最初に有意水準を5%としているので、「その確率が5%以下であるならば、それは偶然ではない(=有意である)」とあらかじめ設定しています。帰無仮説が真であるときに今回の観測度数が偶然得られる確率は0.43220…であり0.05(5%)よりも大きいことから、これは偶然ではない(=有意である)とは言えず、帰無仮説は棄却できません。つまり、今回の観測度数は理論確率に従っている(少なくとも観測度数が理論確率に従っていないとは言えない)といえます。

関連記事・スポンサーリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)