カイ二乗検定の説明

カイ二乗検定とは何かが発生する頻度(度数)について偏りがあるかどうかを調べる手法。

「予想通りの結果なのか?」あるいは「出来事に関連があるのか?」という2種類の検定がある。

  • 観測されたデータが予測される確率(割合)の通りになっているかどうかを調べる 適合度の検定

  • 2つの出来事について、独立かどうか(関連性があるかどうか)を調べる 独立性の検定

    両者は形式的には全く同じであるが,データの採取法により両者は区別される。例えば,「男女の 2 群で食物嗜好の回答の分布が異なるか」を知りたいときに,まえもって m 人の男子と n 人の女子を対象として調査することを決めてからデータを集めた場合には男女で分布が異なるかどうかの検定になる。これに対して,N 人の対象者について調査し,得られたデータを性別と回答別に集計した場合には,性別と食物嗜好が独立であるかどうかの検定になる。

    —引用 http://aoki2.si.gunma-u.ac.jp/lecture/Cross/warning.html

ややこしい話はさておき、カイ二乗検定の結果から p値 というのを求めることができる。

p値とは 実際に観測された分布が理論的に予想される分布にどれだけ近づいているかを表す確率 のこと。

p値が大きければ 、実際に観測された分布は 理論的に予想される分布に近い ことを示し、 p値が小さければ 、実際に観測された分布は 理論的に予想される分布から離れている ことを示す。

一般にこの値が5%未満(p < 0.05)の場合にデータには「統計学的に有意な差がある」とされるため、 p値が 0.05 未満だと、実際に観測されたデータの分布は 理論的に予想されるデータの分布から離れている と解釈する。

p値 解釈
p > 0.05 分布に偏りあるいは関連があるとは言えない
p < 0.05 分布に偏りあるいは関連があると言えそう

ナンバーズの予想に使うには

ナンバーズの予想にカイ二乗検定をどのように使うのか?

それは 数字の出現回数の偏りについて調査する のに使える。

数字の出現回数が理論的に予想されるようになっているのか、それとも理論的な予想から外れるのかを調べる。

「理論的な出現回数(これを「期待度数」という)と実際の出現回数(これを「観測度数」という)の数値は一致する」というのを前提にp値を解釈する。

つまり「数字の出現回数に偏りなんてない!」という前提で、

  • p値が0.05未満であれば、数字の出現回数に偏りが見られるとする。
  • p値が0.05よりも大きければ、数字の出現回数は理論的に予想されるように出現しているとする。

カイ二乗検定の例

「観測されたデータが予測される確率の通りになっているか」の検定

位ごとに0から9の数字の出現回数に偏りがあるのかを検定する。

ナンバーズ3の第1回から第4163回の抽せん数字で、まずは100の位で出現した数字の分布(出現回数)は以下のとおりである。

第1回から第4163回: 100の位の数字別出現回数
抽せん数字 出現回数
0 389
1 420
2 422
3 409
4 410
5 388
6 428
7 402
8 446
9 449

scipy を使ってカイ二乗値とp値を計算する。

obs = [389, 420, 422, 409, 410, 388, 428, 402, 446, 449]
scipy.stats.chisquare(obs)
(9.5558491472495799, 0.38762219399330916)
# タプルの左がカイ二乗値、右がp値

p値は有意水準 5% より大きい( 0.05 < 0.38 ) ので、 理論的に予想される分布と実際に観測された分布が ほぼ同じである という結果となり 出現回数に偏りがあるとは言えない。

同様に第1回から第4163回の抽せん数字で、10の位と1の位の分布について検定した結果は下記のようになった。

10の位の場合

obs = [419, 420, 426, 438, 400, 413, 401, 417, 390, 439]
scipy.stats.chisquare(obs)
(5.5347105452798466, 0.7854306943071645)
# タプルの左がカイ二乗値、右がp値

p値は有意水準 5% より大きい( 0.05 < 0.78 )ので出現回数に偏りがあるとは言えない。

1の位の場合

obs = [404, 406, 432, 400, 417, 412, 393, 416, 455, 428]
scipy.stats.chisquare(obs)
(7.124909920730242, 0.62411620834015213)
# タプルの左がカイ二乗値、右がp値

p値は有意水準 5% より大きい( 0.05 < 0.62 )ので出現回数に偏りがあるとは言えない。

「抽せん数字と位に関連があるか」の検定

ナンバーズ3は毎回3つの数字が選ばれるので100,10,1の位の度数分布から 抽せん数字と位に関連があるか を検定する。

第1回から第4163回: 位ごとの数字別出現回数
抽せん数字 100の位 10の位 1の位
0 389 419 404
1 420 420 406
2 422 426 432
3 409 438 400
4 410 400 417
5 388 413 412
6 428 401 393
7 402 417 416
8 446 390 455
9 449 439 428
obs100 = [389, 420, 422, 409, 410, 388, 428, 402, 446, 449]
obs10 = [419, 420, 426, 438, 400, 413, 401, 417, 390, 439]
obs1 = [404, 406, 432, 400, 417, 412, 393, 416, 455, 428]
obs = np.array([obs100, obs10, obs1])
#
# このように行単位で配列を作っても良い。
#
# obs = np.array([[389,419,404],[420,420,406],[422,426,432],[409,438,400],[410,400,417],[388,413,412],[428,401,393],[402,417,416],[446,390,455],[449,439,428]])


chi2,p,dof,ex = scipy.stats.chi2_contingency(obs)
# p 0.78840730473960119

p値は有意水準 5% より大きい( 0.05 < 0.78 )ので3つの数字をまとめて検定しても出現回数に偏りがあるとは言えない。 つまり、理論的に予想される分布とほぼ同じような分布であると言えそう。

カイ二乗検定の補足説明

検定の前に仮説を立てる。仮説には「 帰無仮説 」と「 対立仮説 」がある。

適合度の検定

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

独立性の検定

  • 帰無仮説: 2つの事象A,Bは独立である(関連性がない)
  • 対立仮説: 2つの事象A,Bは独立ではない(関連性がある)

観測度数と期待度数

観測度数とは「実際に観測された数値」で期待度数とは「確率的に予測される数値」のこと。

ナンバーズは位ごとに0から9の数字が選ばれる。 抽せん数字に偏りがないのであれば位ごとに10分の1の確率でそれぞれの数値が出てくるはずなので この10分の1の確率をもとに期待度数を計算できる。

例えば、第1回から第4000回まで抽せん数字を用いて100の位の数字だけを集計したとき、それぞれの数値が出現すると期待される回数は400回になる。 第1回から第4136回までの抽せん数字だと、期待度数は 413.6 になる。


最終更新日: 2016年02月13日(土)


Back to top