62. 検定事始


検定の準備

R には推定や検定を行う関数が多数用意されているが,そのほとんどが以下の様な使い方となっている.

 
 関数名(データをベクトルや行列,データフレームなどで指定)

そして,データの指定方法は以下の通りである.

関数への指定方法

機能

関数名(x)

1 つの標本について検定などを行う場合は 1 つのベクトル x を指定する.

関数名(x, y)

2 つの標本について検定などを行う場合は 2 つのベクトル x, y を指定する.

関数名(y ~ x)

x にグループの種類,y にデータが入っている場合はこのように指定する.

関数名(A)

2 × 2 分割表や分散分析表などについて検定を行う場合は,表の成分を行列 A で指定する.

例として,10 人の患者から成る 2 つのグループがあり,それぞれの患者に2つの睡眠薬を飲ませ,睡眠時間がどれだけ増加したかを示すデータ(データ名:sleep)を挙げる.

group1

 0.7

 -1.6

 -0.2

 -1.2

 -0.1

 3.4

 3.7

 0.8

 0.0

 2.0

group2

 1.9

 0.8

 1.1

 0.1

 -0.1

 4.4

 5.5

 1.6

 4.6

 3.4

検定を行うために,上記のデータを R に読み込ませる.

 
 group1 <- c(0.7,-1.6,-0.2,-1.2,-0.1,3.4,3.7,0.8,0.0,2.0)    # グループ 1 の睡眠時間の増加
 group2 <- c(1.9, 0.8, 1.1, 0.1,-0.1,4.4,5.5,1.6,4.6,3.4)    # グループ 2 の睡眠時間の増加

t 検定を行う関数 t.test() を用いてデータ sleep に関する検定を行う手順を紹介する.

検定例(1) : 一標本 t 検定 

関数 t.test() で 1 標本 t 検定を行う場合の書式と引数を挙げる.一番目の引数にデータを与えればとりあえず検定が出来る.全ての引数を指定する必要は無い.を指定すれば検定が行われる.

 
 t.test(x, alternative=c("two.sided","less","greater"),
        mu=0, paired=FALSE, var.equal=FALSE, conf.level=0.95)

ここで,グループ 1 のデータについて一標本 t 検定を行う.この場合,母平均 mu が 3 であるかどうかを検定して,95% 信頼区間を求めている. 

 
 t.test(group1, mu=3)
 
        One Sample t-test

data:  group1 
t = -3.9771, df = 9, p-value = 0.00322
alternative hypothesis: true mean is not equal to 3 
95 percent confidence interval:
 -0.5297804  2.0297804 
sample estimates:
mean of x 
     0.75 

結果は有意である(母平均 mu は 3 でない).出力結果を解説する.

出力

機能

data

検定を行ったデータの名前.

t = -3.9771

t の値.これが棄却域に入っているかを見ている.

df = 9

t の自由度.

p-value = 0.00322

p 値.これが 0.05 より小さければ有意差がある(今は有意差が出ている).

alternative hypothesis

対立仮説(今は「母平均が 0 ではない」).

95 percent confidence interval

95%信頼区間.信頼区間は [-0.5297804  2.0297804] となっている.

sample estimates

推定値.今は標本平均を推定していて 0.75 となっている.

t 値と p 値,棄却域に関する図を示す.

今は両側検定を行ったが,片側検定を行うことも出来る.

 
 t.test(group1, mu=3, alternative="greater")
 
        One Sample t-test

data:  group1 
t = -3.9771, df = 9, p-value = 0.9984
alternative hypothesis: true mean is greater than 3 
95 percent confidence interval:
 -0.2870553        Inf 
sample estimates:
mean of x 
     0.75 

検定例(2):二標本 t 検定

「グループ1の睡眠増加時間の平均」と「グループ2の睡眠増加時間の平均」で差があるかどうかを検定する方法を紹介する.関数 t.test() で二標本 t 検定を行う場合の書式と引数を挙げる.

 
 t.test(x, y, alternative=c("two.sided","less","greater"),
        mu=0, paired=FALSE, var.equal=FALSE, conf.level=0.95)

関数 t.test() は以下の引数を指定することが出来る.

出力

機能

x

データ値の数値ベクトル.

y

追加のデータ値.一標本について検定を行う場合は省略,二標本検定を行う場合はデータを入れる.

alternative="two.sided"

両側検定が行われる.alternative の指定を省略しても両側検定が行われる.

alternative="greater"

より大きいかどうかの検定 (片側検定) .

alternative="less"

より小さいかどうかの検定 (片側検定) .

mu

真の平均の値.二標本検定の場合は平均の差を入力.

paired

論理値を入力.ここに TRUE を入れると対応のある t 検定をする.

var.equal

論理値を入力. ここに TRUE を入れると 2 つの標本の分散が等しいと仮定される.

conf.level

信頼度.

実際の検定はこちら.ここでは分散が等しいと仮定して,関数 t.test() を用いて検定を行う.

 
 t.test(group1, group2, var.equal=T)
 
        Two Sample t-test
data:  group1 and group2 
t = -1.8608, df = 18, p-value = 0.07919
alternative hypothesis: true difference in means is not equal to 0 
95 percent confidence interval:
 -3.3638740  0.2038740 
sample estimates:
mean of x mean of y 
     0.75      2.33 

p 値(p-value)は 0.07919 となっており 0.05 よりも大きい.よって,結果は有意ではない(差があるとはいえない).出力結果を解説する.

出力

機能

statistic

t 統計量の値.

parameters

t 統計量の自由度.

p.value

検定の p 値.特に重要.有意水準 5% で検定している場合,この値が 0.05 よりも小さければ帰無仮説が棄却され有意とされる.逆ならば帰無仮説が採択され,有意ではないとされる.

95 percent confidence interval

平均の 95% 信頼区間.

estimate

一標本の場合は推定された平均の値.二標本の場合は推定された平均の差.

null.value

一標本の場合は仮定された平均の値.二標本の場合は仮定された平均の差.

alternative

対立仮説を表す文字列.

method

t 検定の種類を表す文字列.

data.name

データの名前を表す文字列.

等分散を仮定しない場合はオプション var.equal=T を外せばよい.var.equal=F とした場合は「ウェルチの検定」を行う.

 
 t.test(group1, group2, var.equal=F)
 
        Welch Two Sample t-test

data:  group1 and group2 
t = -1.8608, df = 17.776, p-value = 0.0794
alternative hypothesis: true difference in means is not equal to 0 
95 percent confidence interval:
 -3.3654832  0.2054832 
sample estimates:
mean of x mean of y 
     0.75      2.33  

 


検定結果の取り出し

検定結果を変数などに代入したい場合がある.このとき,検定結果を適当な変数に代入した後,関数 names() で中身を調べればよい.

 
 out1 <- t.test(y1, y2,var.equal=T)
 names(out1)

[1] "statistic"   "parameter"   "p.value"     "conf.int"    "estimate"   
[6] "null.value"  "alternative" "method"      "data.name"
  
 out1$p.value     # p 値の取り出し

[1] 0.005408422