適合度検定とは、観測度数分布が期待度数分布と同じかどうかを統計的に確かめる方法である。

適合度検定を行う手順は次の通りである。

  1. 仮説を立てる。
    • 帰無仮説 H0:観測度数分布と期待度数分布が同じ。
    • 対立仮説 H1:観測度数分布と期待度数分布が同じではない。
  2. A1 A2 ・・・ An 合計
    観測度数 x1 x2 ・・・ xn X
    期待度数 y1 y2 ・・・ yn Y
  3. 期待度数yi{i=1,..,n}が5以下の場合は、隣接する列と合わせる。
  4. 検定統計量Tを次のように計算する。
    chi-square-test-test-of-goodness-of-fit-test-statistic
  5. このとき、検定統計量Tは自由度(n-1)のカイ二乗分布に従うので、有意水準のカイ二乗値kと比較する。
  6. T>kであれば、帰無仮説を棄却して、対立仮説を採用する。

日本人のABO式血液型の分布は大まかにA型が40%、B型が20%、O型が30%、AB型が10%とされている(「ABO式血液型 – Wikipedia」より)。
100人に血液型を調査したとき、A型が47人、B型が18人、O型が27人、AB型が8人であった場合、日本人のABO式血液型の分布に従っているかを確認してみる。
そこで、帰無仮説は次のようになる。

  • 帰無仮説 H0:A型が40%、B型が20%、O型が30%、AB型が10%である。

期待度数は観測度数合計×割合となるので、まとめると次のようになる。

血液型 A型 B型 O型 AB型 合計
観測度数 47 18 27 8 100
割合 0.4 0.2 0.3 0.1 1
期待度数(=観測度数合計×割合) 40 20 30 10 100

次にそれぞれに対して、(観測度数 – 期待度数)2/期待度数を求める。

血液型 A型 B型 O型 AB型 合計
(観測度数-期待度数)2/期待度数 (47-40)2/40 (18-20)2/20 (27-30)2/30 (8-10)2/10
(観測度数-期待度数)2/期待度数 1.225 0.200 0.300 0.400 2.125

これから検定統計量はT=2.125となる。
これは、自由度(4-1)=3のカイ二乗分布に従うので、有意水準を0.05とするとカイ二乗値は7.81473となる。
エクセルでこの値を求めるときは、CHIINV関数を使えば良い。

CHIINV(確率,自由度)

今回の例では、セルに「=CHIINV(0.05,3)」を入力する。

chi-square-test-test-of-goodness-of-fit-excel-chiinv
T=2.125<7.81473から棄却域に入らないので帰無仮説H0を棄てられない。
よって、調査結果は統計的にA型が40%、B型が20%、O型が30%、AB型が10%であるといえる。

Rで計算する

Rで適合度検定を行う場合は、次のようになる。


> chisq.test(c(47, 18, 27, 8), p = c(0.4, 0.2, 0.3, 0.1))

    Chi-squared test for given probabilities

    data:  c(47, 18, 27, 8)
    X-squared = 2.125, df = 3, p-value = 0.5469

よって、有意水準を5%(=0.05)とすると、p-value=0.5469>0.05となるため、帰無仮説は棄却されない。

Pythonで計算する

Pythonで適度度検定を行う場合は、次のようになる。あらかじめ、scipyパッケージをインストールしておく。


from scipy import stats
result = stats.chisquare([47, 18, 27, 8], f_exp = [40, 20, 30, 10])
print(result)

これを実行すると、次のようになる。


(2.125, 0.5468716738890154)

これは、カイ二乗値2.125、p値0.5468という意味である。

関連する記事

  • Journal of Statistical Software: 記事一覧 Journal of Statistical Software の記事一覧をご紹介する。英語での説明文をgoogle翻訳を使用させていただき機械的に翻訳したものを掲載した。 確認日:2017/03/24 論文数:1089 Introduction to stream: An Extensible Framework for Data Stream […]
  • 決定木 – 分類木決定木 – 分類木 決定木とは、分類ルールを木構造で表したものである。分類したいデータを目的変数(従属変数)、分類するために用いるデータを説明変数(独立変数)という。目的変数がカテゴリデータなどの場合は「分類木」、連続値などの量的データの場合は「回帰木」と呼ばれる。 決定木の最大のメリットは、結果にグラフを用いることができるため、視覚的に確認できることである。 ここでは、R言語の「r […]
  • 決定木 – 回帰木決定木 – 回帰木 ここでは、決定木の目的変数が連続値である場合の回帰木について、R言語の「rpart」パッケージを用いて簡単に見ていく。 まずは必要となるパッケージのインストールとロードを行う。「rpart」パッケージは決定木を行うためのものだが、「rpart.plot」と「partykit」パッケージは結果を視覚的に表示するために使うので、あらかじめインストールとロードをしておく。 […]
  • カイ二乗検定 – 独立性検定カイ二乗検定 – 独立性検定 独立性検定とは、クロス集計表を作成したとき、2つの属性が独立であるかどうかを統計的に判定する方法である。 独立性検定を行う手順は次の通りである。 仮説を立てる。 帰無仮説H0:属性Ai(i=1,...,m)とBj(j=1,...,n)は独立である。 対立仮説H1:属性Ai(i=1,...,m)とBj(j=1,...,n)は少なくとも一つ以上は独立でない。 […]
  • R 関数に時間制限を設ける方法 ある処理にとても時間が掛かるため、一定時間経過後はその処理を途中で打ち切りたいときがある。 例えば、for文で、あるループだけが重いため全体として時間が掛かってしまう場合、その処理を一旦スキップしてfor文の先に処理を進めたい、などである。 ここでは、そのひとつの解決策として、関数に時間制限を設けて、一定時間経過後はその関数を強制終了するコードをご紹介する。 ただし […]
カイ二乗検定 – 適合度検定