二群の平均値の差の検定($t$ 検定)     Last modified: Aug 25, 2015

例題

 「ある知能テストは,各種集団に実施したとき,平均値は変動するが,同じ年齢のものに適用する限り他の要因にかかわりなく,分散は同じであることが経験的にわかっている。いま 2 群に対して実施した結果,a 群 36 名の平均得点は 82.6 点,不偏分散は 15.3,b 群 43 名の平均得点は 84.5,不偏分散は 16.2 であった。二群の母分散が等しいと仮定して,2 群の母平均得点に差があるかどうか,有意水準 5% で両側検定しなさい。」


R による解析

> my.t.test(42, 15.2, 1.1, 63, 12.7, 3.2, var.equal=TRUE)	# この関数の定義を見る

	等分散を仮定した,二群の平均値の差の検定

data:  
n1 = 42, mean1 = 15.2, variance1 = 1.1
n2 = 63, mean2 = 12.7, variance2 = 3.2
t = 8.1622, df = 103, p-value = 8.59e-13

R には t.test という関数がある。この関数は,二群の測定値のベクトルを与えて結果を得るという仕様になっているので,この例題のように実際のデータがない場合には使えないと思っている人がいるが,以下のようにすれば実データがなくても,二群のサンプルサイズ,平均値,不偏分散が分かっていれば,検定を行うことが出来る。

第 1 群のデータベクトル x1 を作る。

> n1 <- 42
> mean1 <- 15.2
> variance1 <- 1.1
> x1 <- c(scale(rnorm(n1))*sqrt(variance1)+mean1)
x1 のサンプルサイズ,平均値,不偏分散は n1, mean1, variance1 に等しくなっている。
> length(x1)
[1] 42
> mean(x1)
[1] 15.2
> var(x1)
[1] 1.1
第 2 群のデータベクトル x2 を作る。
> n2 <- 63
> mean2 <- 12.7
> variance2 <- 3.2
> x2 <- c(scale(rnorm(n2))*sqrt(variance2)+mean2)
x2 についても,同じ。

x1x2 を使って t.test を実行する。t 値,自由度,P 値 が一致することがわかる。
> t.test(x1, x2, var.equal=TRUE)

	Two Sample t-test

data:  x1 and x2
t = 8.1622, df = 103, p-value = 8.59e-13
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 1.892549 3.107451
sample estimates:
mean of x mean of y 
     15.2      12.7 


・ 手法の解説ページ
・ 直前のページへ戻る  ・ E-mail to Shigenobu AOKI