t検定の仮定

本来,t検定には,さまざまな仮定が伴うものである。

  1. 各群の標本が,いずれも正規母集団から得られたものであること(正規性)
  2. 各群の母分散が等しいこと(等分散性)

したがって,t検定の実施に先立って,これらの仮定が成り立つかどうかを判断しなければならない。 そのために,正規性と等分散性について,それぞれ異なる検定を行う必要がある。

正規性の検定

2群のデータの分布が,正規分布に従うかどうかを検定する。 この目的には,Kolmogorov-Smirnov(コロモゴロフ・スミノフ)検定がよく用いられる。 Rでは,この頭文字をとって ks.test() という名前の関数が用意されている。 この検定の帰無仮説は「あるデータが,正規分布をなす」である。 したがって,P値が大きければ,正規分布であると判断できる。

> ks.test(x$A,"pnorm",mean=mean(x$A),sd=sd(x$A))

        One-sample Kolmogorov-Smirnov test

data:  x$A 
D = 0.2085, p-value = 0.6526
alternative hypothesis: two-sided 
> ks.test(x$C,"pnorm",mean=mean(x$C),sd=sd(x$C))

        One-sample Kolmogorov-Smirnov test

data:  x$C 
D = 0.1885, p-value = 0.7641
alternative hypothesis: two-sided 

これをみると,処置群AもCもP値が有意水準を上回っているので,帰無仮説を採択すべきである(つまり,両群ともに正規分布をなすサンプルである)ことがわかる。

正規性が確認された場合,次に等分散性の検定を行った後にt検定を行う。 正規性がない場合には,Wilcoxonの順位和検定(Mann-WhitneyのU検定とも呼ばれる)を行う。

等分散性の検定

いわゆるF検定を行う(分散分析にもF検定が登場するが,F値の計算方法は全く異なる)。 この目的には, var.test() を用いる。 仮説は,「二群の母分散は等しい」である。

> var.test(x$A,x$C)

        F test to compare two variances

data:  x$A and x$C 
F = 1.0934, num df = 10, denom df = 10, p-value = 0.8904
alternative hypothesis: true ratio of variances is not equal to 1 
95 percent confidence interval:
 0.2941901 4.0641018 
sample estimates:
ratio of variances 
          1.093443 

P値がかなり大きいので,帰無仮説は採択され,二群の母分散は等しいとの結論を得た。

平均値の差の検定

ここまできて,ようやく母平均の差の検定(t検定)を行う。 この目的には, t.test() を用いる。 等分散か否かは,オプションで選択できる。 帰無仮説は「二群の母平均は等しい」である。

> t.test(x$A,x$C,var.equal=T)   # 等分散

        Two Sample t-test

data:  x$A and x$C 
t = 3.3764, df = 20, p-value = 0.003
alternative hypothesis: true difference in means is not equal to 0 
95 percent confidence interval:
 15.66997 66.33003 
sample estimates:
mean of x mean of y 
       97        56 
> t.test(x$A,x$C,var.equal=F)   # 不等分散

        Welch Two Sample t-test

data:  x$A and x$C 
t = 3.3764, df = 19.96, p-value = 0.003006
alternative hypothesis: true difference in means is not equal to 0 
95 percent confidence interval:
 15.66673 66.33327 
sample estimates:
mean of x mean of y 
       97        56 

オプションをつけない場合は,不等分散(var.equal=F)を仮定する。 なお,等分散の場合をStudentのt検定,不等分散の場合をWelchのt検定と呼ぶこともある。 上の例では,どちらの仮定においてもP値が0.05よりも小さいので,有意水準5%において有意である。 つまり,帰無仮説は棄却すべきであって,両群の平均値は等しくないとすることが妥当である。


Wilcoxonの順位和検定(Mann-WhitneyのU検定)

最後に,正規性が仮定できなかった場合の,Wilcoxonの順位和検定について簡単に紹介する。 Rでは, wilcox.test() が用意されている。 帰無仮説は「両群が同じ母集団から抽出された」である。

> wilcox.test(x$A,x$C)

        Wilcoxon rank sum test with continuity correction

data:  x$A and x$C 
W = 103.5, p-value = 0.005246
alternative hypothesis: true location shift is not equal to 0 

Warning message:
In wilcox.test.default(x$A, x$C) :
   タイがあるため、正確な p 値を計算することができません 

これをみると,P値が0.05を下回っているので仮説は棄却される。 結果として,両群は異なる分布から抽出された(平均値に差がある)ことを支持している。

まとめ

正規性,等分散性の検定を行ったうえで,適切な検定方法を使用する。

# データの読み込み
> x<-read.table("stat01.txt",header=T,sep=",")

# 正規性の検定
> ks.test(x$A,"pnorm",mean=mean(x$A),sd=sd(x$A))
> ks.test(x$C,"pnorm",mean=mean(x$C),sd=sd(x$C))

# 正規性がある: 等分散性の検定
> var.test(x$A,x$C)

# 正規性がある・等分散である = Studentのt検定
> t.test(x$A,x$C,var.equal=T)
# 正規性がある・等分散でない = Welchのt検定
> t.test(x$A,x$C,var.equal=F)

# 正規性がない = Wilcoxonの順位和検定
> wilcox.test(x$A,x$C)
TOP
メニュー