カイ2乗検定

ある事象を観察するとき,何種類かの事象が観測されるときの 割合が一定であるような分布であるかを検定するときに用いるのが カイ2乗(χ2)検定である。観察される事象はお互いに排他的, つまり同時に2つ以上の事象が起こらないようなものでなければならない。 男女比や,サイコロの目,選択肢から1つを選ぶアンケートなどが該当する。

複数の集団があり,何かの兆候が観察される割合が互いに等しいと 言えるかどうかの検定に用いられる。

χ2検定

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

しょうゆラーメン もつ煮ラーメン 合計
看々ラーメン 333 117 450
公益軒 165 85 250

2つの店舗間で,「しょうゆらーめん」vs.「もつ煮ラーメン」の 人気に差があると言ってよいか。

まず行列(matrix)にする。

ramen <- matrix(c(333,165,117,85),2,2)
ramen
     [,1] [,2]
[1,]  333  117
[2,]  165   85

表計算上にある観測度数の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 = 5.0101, df = 1, p-value = 0.0252

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

χ2検定の例題

花粉症の症状を緩和するある薬(A)を開発した。薬の効果を試すため, A薬とニセ薬(プラセボ)を同じ種類の花粉症に悩む何人かの被検者に 一定期間服用してもらい,その効果を「改善した」,「改善せず」で 評価してもらった。

改善した改善せず合計
A薬15823
プラセボ81220
合計232043

A薬に症状改善効果があると言ってよいか? 検定せよ

(この枠内をクリックするとまた隠れる)

これを検定する。表計算ソフト上に上の表を貼り付ける。そのうち 合計以外の数字部分のみをマウスでドラッグし,コピーする。 Rを起動しているkterm(C-2)に戻り,clipboardから表を読み込む。

kafun <- read.table("clipboard")
kafun
V1 V2
1 15  8
2  8 12

あるいは,4つの数値を直接以下のように打ち込んでもよい。

kafun <- matrix(c(15,8,8,12), 2, 2)
kafun
     [,1] [,2]
[1,]   15    8
[2,]    8   12

kafun 変数に得られた値を検定する。

chisq.test(kafun, correct=F)
        Pearson's Chi-squared test

data:  kafun 
X-squared = 2.7344, df = 1, p-value = 0.0982

p=0.982 ≒ 10% であり,有意水準5%で帰無仮説は棄却されない。 よって,A薬とニセ薬の効果に差があるとは言い切れない。

グラフ

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

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)
# [ 画像 ]

練習問題

住みやすさ調査

住みやすさの調査をいくつかの都市で行なった。そのうちの A市,B市の住みやすさの回答結果は以下のとおりであった。

住みやすいふつう住みにくい合計
A市38206605205000
B市29885005124000

A市とB市の住みやすさ意識に有意な差はあるか。 以下の手順で検定せよ

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

(この枠内をクリックするとまた隠れる)

これを検定する。表計算ソフト上に上の表を貼り付ける。そのうち 合計以外の数字部分のみをマウスでドラッグし,コピーする。 Rを起動しているkterm(C-2)に戻り,clipboardから表を読み込む。

city <- read.table("clipboard")
city
V1  V2  V3
1 3820 660 520
2 2988 500 512

city 変数に得られた値を検定する。

chisq.test(city, correct=F)
Pearson's Chi-squared test

data:  city
X-squared = 12.8566, df = 2, p-value = 0.001615

p=0.982 ≒ 10% であり,有意水準5%で帰無仮説は棄却されない。 よって,A薬とニセ薬の効果に差があるとは言い切れない。

食中毒の問題

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

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

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

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

今週の課題

問題

上記の問題をRを用いて解け。

レポート作成方法

A4用紙2枚以内に, 氏名,学籍番号を入れ,その後の本体を以下のようにする。

解答の検定部分は,Rに対する入力と出力を記述する。 長い出力は適宜中略してよい。

yuuji@e.koeki-u.ac.jp