t検定

「検定」の手順

異なるサンプルを取り平均や標準偏差などを計算するとき, それぞれが同じ母集団から取ったのであればほぼ同じ 値となることが期待される。平均値が多少ずれた場合でも, そのずれ幅が仮定される分布のバラツキ(標準偏差)と比べて小さければ, そのずれは多いにありうることである。しかし,ずれ幅が 標準偏差の2倍,3倍,…と大きなときは,そうなる確率は著しく低く, 「そもそも[同じ母集団]という最初の仮定が違っていたのでは?」 と結論づける方が自然である。

ある複数のサンプルどうしの,平均が互いに違うことを ある程度の確からしさで結論づけたいとき,上記の流れに基づいて 以下の手順で論理展開する。

  1. 2つの母集団が同じで,同じ平均同じ標準偏差を持っていると 仮定する。
  2. 平均値の違いを標準偏差の大きさと比べ,

たとえば,現行の薬品に比べて新薬の効果が高いことを示したい場合でも, 先に「同じ平均であること,つまり効果に差がない」という仮説を立て, それが起こりそうな確率を求めてその仮説を棄却するしないかを決める。

統計的に何かを調べることを検定といい, 上記のようにいったん排除したい仮説を立ててからその確からしさを 吟味することを仮説検定という。最初に立てる, 言わば都合の悪い結論で,なしにして欲しい(ことの多い)仮説を 帰無仮説 という。これに対応して,逆の結論へと 導く仮説を対立仮説という。

t検定

何かの平均を求めて全体の傾向を見る調査はしばしば行なわれる。 あるサンプルの平均値が特定の値を取りうるかの検定はt検定を用いる。

Rを用いて,平均値の大小比較のt検定を行なう場合は以下の手順による。

  1. 2組のサンプルの各要素が1対1対応するものどうしか吟味する

  2. 対応するものどうしなら 「対応のある2組の平均値の差の検定」を,ないものどうしなら 「対応のない2組の平均値の差の検定」を行なう。

対応のある2組の差の検定は,

t.test(ベクトル1, ベクトル2, paired=T)

で,対応のない2組の平均値の差の検定は

t.test(ベクトル1, ベクトル2, paired=F)

で行なう。

対応のある2組の平均値の差の検定

実験などで,同じ被検者に対して何か1つだけ条件を変えて同じ 作業をやらせたような場合,あるいは同一の機械のあるひとつの部品だけを 変えて同じことの測定を行なったような場合は,各測定値に対応が「ある」。

このような場合,同じ大きさの標本が2つあることになる。 Rでは,t.test() 関数に標本を含む2つのベクトルと paired=T 引数を与えることで検定できる。

例題

8人の被験者が公益軒と看々ラーメンの中華蕎麦を 試食し,以下のような得点をつけた。

被験者公益軒看々
18171
26470
36778
46877
56585
66566
77494
86980

2店の中華蕎麦の評価に有意な差が認められると言ってよいか。

まず,店舗ごとの評価をベクトル化して変数に代入しておく。

koeki.men <- scan()
81 64 67 68 65 65 74 69

kankan.men <- scan()
71 70 78 77 85 66 94 80

この検定では以下の仮説を置く。

これを有意水準5%(0.05)で検定する。

t.test() 関数による検定

先に述べたとおり対応のある2組の平均の差の検定は, t.test()paired=T を与えればよい。

t.test(koeki.men, kankan.men, paired=T)

  Paired t-test

data:  koeki.men and kankan.men 
t = -2.4357, df = 7, p-value = 0.04504
alternative hypothesis: true difference in means is not equal to 0 
95 percent confidence interval:
 -16.7520208  -0.2479792
sample estimates:
mean of the differences 
                 -8.5

自由度7(df=7)のt値が-2.4357で,このときのp値は約0.045,つまり4.5%であり, ここまで読んで有意水準5%では棄却されることが分かる。 95%信頼区間が -16.75 〜 -0.25 であり, これは2点の得点の差の値が95%の確率でこの区間に入るということで, この場合0が含まれない区間であるため「差が0」になることが,5%よりも 低い確率で起こることを意味している。

t値を求めた手動検定

各測定値の差をもとに,実際にt値を計算して検定して確認してみる。

復習

変数 x の各種統計量を求める関数は以下のとおり。

平均mean(x)
分散var(x)
大きさlength(x)

対応のある2組の平均値のt値は以下のように求められる。

ただし,

: 平均
σ: 標準偏差(不偏分散の平方根,推定標準偏差)
: (推定)平均
n: 標本の大きさ

である。

まず,各店の中華蕎麦の評価点の差を保持するベクトルを作る。

diff <- koeki.men-kankan.men
diff
[1]  -5  -5  -5  -5   5 -10  -5  -5

このベクトルから,式[1] に従いt値を求める。

n <- length(diff)
(mean(diff) - 0)/sd(diff)*sqrt(n)
[1] -2.965615

-2.965615は,t.test() が出したt値と一致する。 自由度7のt分布で,t≦-2.965615 となる確率は,pt() 関数で求められる。

中華蕎麦 t値

pt(t値, 自由度) とすると,指定した自由度で 指定したt値以下を取る確率が求められる。今回は両側検定なので 値を2倍して

2*pt(-2.965615, 7)
[1] 0.02093757

となる。

ところで,式[1]の最初の分母である σ/√n のσは, 推定標準偏差であるから

である。したがって

(sは標本標準偏差)となり,これは 対応のある t検定と対応のないt検定の式と一致する。

対応のない2組の平均値の差の検定

公益軒と看々ラーメンのカレーラーメンの味について, 無作為抽出して採点したもらった 8人×2組のデータについて考える。

カレーラーメン評価表
公益軒点数看々点数
163172
270273
368382
461478
583586
662673
767774
872880
平均68.25平均77.25

2組のデータに1〜8の番号がついているが,これらは同じ番号でも 互いに全く関連がないことに注意する。

帰無仮説,対立仮説を以下のように定める。

対応のない2組の平均値の差の検定については, t.test() 関数で求める方法を示すに留める。

t.test() 関数による検定(独立2群)

以下の手順で検定を行なう。

ブラウザの表をコピーしてRのtableに読み込んで作業する例を示す。

  1. 上のカレーラーメン評価表の評価者1から評価者8までの行を すべて選択してクリップボードにコピーする。

  2. read.table("clipboard") でどうなるか視認する。

    read.table("clipboard")
    V1 V2 V3 V4
    1  1 63  1 72
    2  2 70  2 73
    3  3 68  3 82
    4  4 61  4 78
    5  5 83  5 86
    6  6 62  6 73
    7  7 67  7 74
    8  8 72  8 80
  3. 第2列と第4列に各店舗の評価ベクトルが入るので 2,4列を抽出したものを変数に代入する。

    curry <- read.table("clipboard")[,c(2,4)]
    curry
      V2 V4
    1 63 72
    2 70 73
    3 68 82
    4 61 78
    5 83 86
    6 62 73
    7 67 74
    8 72 80
    

    以上店ごとの評価点ベクトルをそれぞれ curry[,1]curry[,2] で取り出せる。

以上の手順で必要なデータがデータフレームに得られた。

2店舗の評価点を t.test() 関数に渡す。 2つのベクトルに加え,paired=F を与えると「対応のない2組の平均値の差」の 検定(Welchの検定)となる。

t.test(curry[,1], curry[,2], paired=F)
        Welch Two Sample t-test

data:  curry[, 1] and curry[, 2] 
t = -2.9064, df = 12.67, p-value = 0.01254
alternative hypothesis: true difference in means is not equal to 0 
95 percent confidence interval:
 -15.707688  -2.292312 
sample estimates:
mean of x mean of y 
    68.25     77.25 

このときのp値は0.01254(≒1.3%)なので 有意水準5%で帰無仮説は棄却される。つまり有意な差があるといえる。

練習問題

ダイエット食品の問題

ある番組でこのような結果提示ががあった。

10人の被験者を5人ずつの2グループA,Bに分けてダイエット実験をした。 グループAの人にはダイエット薬と称してこんにゃく粉末を, グループBの人には「んめちゃダイエット」を,いずれも10日間摂取させ 体重の増減を調べた。10人の実験前後の体重減少(kg)は以下のとおりであった。

こんにゃく粉末んめちゃダイエット
1.63.3
2.14.9
2.52.9
-2.42.2
3.1-0.1
平均
1.382.64

この結果を得て,司会者は「最も効果のあった人は5kg近く, それに平均でなんと2倍ものダイエット効果があります!」と結論づけた。

この商品の宣伝文句に偽りなし,といってよいだろうか。

  1. 帰無仮説を立てよ

  2. 対立仮説を立てよ。

  3. Rを用いて検定せよ。

(上の表のデータ部分を領域選択してから)

nme <- read.table("clipboard")
# x=「こんにゃく」,y=「んめちゃ…」とすると,
t.test(nme[,1], nme[,2], paired=F)

  Welch Two Sample t-test

data:  nme[, 1] and nme[, 2] 
t = -0.9903, df = 7.755, p-value = 0.3519
alternative hypothesis: true difference in means is not equal to 0 
95 percent confidence interval:
 -4.210376  1.690376 
sample estimates:
mean of x mean of y 
     1.38      2.64 

p値が約0.35=35%なので,「んめちゃ…」が優れていなくても同様の実験を 3回に1回程度はこの程度離れた数値の結果が出うる。「んめちゃ…」の ほうが優れている数値を得たければ 5〜6回行なえば1回はこのような結果が得られる程度の事象でしかない。よって, 賢明な視聴者は飛びつかない方がよい。

yuuji@e.koeki-u.ac.jp