χ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