χ2検定

χ2検定

かんかんラーメンと公益軒のラーメンの売り上げ比較。

しょうゆラーメン カレーラーメン 合計
かんかんラーメン 435 165 600
公益軒 265 135 400

まず行列(matrix)にする。

ramen <- matrix(c(435,265,165,135),2,2)
ramen
     [,1] [,2]
[1,]  435  165
[2,]  265  135

表計算上にある観測度数の4つの値(2x2セル)部分をコピーし, read.table("clipboard") でtableとして読み込んでもよい。

χ2値を求め,同時に検定を行なうには chisq.test 関数を用いる(chi-square test)。 引数に検定対象の行列と correct=F を指定する。

chisq.test(ramen, correct=F)

  Pearson's Chi-squared test

data:  ramen 
X-squared = 4.4643, df = 1, p-value = 0.03461

2x2の度数分布ゆえ,自由度が (2-1)×(2-1) = 1 であることを前提にし,その場合のp値も0.03(3%)と出している。

なお,自由度 n, の下側確率pのときの χ2 値は

qchisq(p, 1)

で得られる。たとえば自由度,下側確率95%(上側5%)と 下側確率99%(上側1%)の χ2値は以下のようにして得られる。

qchisq(0.95, 1)
[1] 3.841459
qchisq(0.99, 1)
[1] 6.634897

グラフ

グラフの描き方を簡潔に示す。

plot() 関数を利用するとグラフやプロット図が得られる。 数学関数のxyグラフを得たい場合は

plot(x軸値の集合, 関数 [, 他のパラメータ])

の形式で呼び出す。x軸値の集合 は seq() で生成したものを利用するとよい。 いくつか例を示す。

# y=x2 を -3≦x≦3 の範囲で描画
x <- seq(-3, 3, 0.2)
x
 [1] -3.0 -2.8 -2.6 -2.4 -2.2 -2.0 -1.8 -1.6 -1.4 -1.2 -1.0 -0.8 -0.6 -0.4 -0.2
[16]  0.0  0.2  0.4  0.6  0.8  1.0  1.2  1.4  1.6  1.8  2.0  2.2  2.4  2.6  2.8
[31]  3.0

# y=x^2 のグラフをプロット(xが0.2刻み)
plot(x, x^2)                      # [画像]

# 同上,点を線(line)で繋ぐ
plot(x, x^2, type="l")            # [画像]

# 同上,xy比を 1.0 に
plot(x, x^2, type="l", asp=1.0)   # [画像]

χ2の確率密度関数(0≦x≦8)を描いてみる。 自由度3のχ2分布の確率密度関数は dchisq(x, 3) で,これを描くには以下のようにする。

x <- seq(0, 8, 0.01)
# オレンジ色で,線の太さ5
plot(x, dchisq(x, 3), type="l", col='orange', lwd=5)
# [ 画像 ]

練習問題

チーズラーメンの問題

第2回 χ2検定 の[6]の練習問題を,Rを用いて解いてみる。

しょうゆラーメン カレーラーメン チーズラーメン
かんかんラーメン 4351656501250
公益軒 265135350750
合計 70030010002000

店ごとの,各ラーメンの人気に有意な差はあるか。

検定対象となる数値を2つの方法で代入して検定してみる。

各品注文数を店ごとにベクトルに代入して,2つのベクトルを chisq.test() 関数に渡す方法。

kankan3 <- c(435, 165, 650)
kankan3
[1] 435 165 650
koeki3 <- c(265,135,350)
koeki3
[1] 265 135 350

chisq.test(kankan3, koeki3, correct=F)

  Pearson's Chi-squared test

data:  kankan3 and koeki3 
X-squared = 6, df = 4, p-value = 0.1991

Warning message:
In chisq.test(kankan3, koeki3, correct = F) :
   カイ自乗近似は不正確かもしれません 

matrixに代入して検定。

(cheeze <- matrix(c(435,165,650,265,135,350),3,2))
     [,1] [,2]
[1,]  435  265
[2,]  165  135
[3,]  650  350
chisq.test(cheeze, correct=F)

以上の手順を念頭にいれつつ,手順を追って検定せよ。

  1. 帰無仮説を立てよ
  2. 対立仮説を立てよ
  3. chisq.test() 関数で検定せよ
  4. 結論を述べよ

食中毒の問題

ある飲食店で出した芋サラダを食べた人が具合悪さを訴えた。 調査したところ,同じ日にその品を食べた人に同様の症状が見られたが, 食べない人の中にも症状が見られた。摂取の有無と症状の有無は 以下のようになった。

該当品を食べた食べなかった計
症状確認あり20424
症状確認できず252550
計 452974

該当品は食中毒症状と無関係と言えるか。

  1. 帰無仮説を立てよ
  2. 対立仮説を立てよ
  3. chisq.test() 関数で検定せよ
  4. 結論を述べよ

今週の課題

問題

第2回 χ2検定 の[7]のレポート課題を,Rを用いて解け。 計算に関る手順はすべてRに任せてよい。

提出方法

宛先 sip-12-14@e.koeki-u.ac.jp

締切 3日後

Subjectに Chi-square test と書き,本文の先頭に 氏名,学籍番号を入れ,その後の本体を以下のようにする。

解答の検定部分は,Rに対する入力と出力を本文内に貼り付ける。 ただし,検定の手順に関する言葉は正確に記述すること。

yuuji@e.koeki-u.ac.jp