7. 平均値の差の検定 t検定

t検定は2つの母平均の差を検定する統計手法です。対象となる2つの標本の母平均に差があるかどうかを知ることができます。

使用するデータ

7.1. データビュー

In [1]:
#作業ディレクトリの処理は既に行っていれば不要(復習)
getwd() #作業ディレクトリの確認
setwd("R:/WinPython/WinPython-64bit-3.6.1.0Qt5/notebooks/data") #作業ディレクトリの変更
'R:/WinPython/WinPython-64bit-3.6.1.0Qt5/notebooks'
In [2]:
data = read.csv("7-1.csv", header = TRUE)
summary(data) #要約統計量
     group1          group2     
 Min.   :32.68   Min.   :47.56  
 1st Qu.:58.18   1st Qu.:74.08  
 Median :63.94   Median :77.40  
 Mean   :63.58   Mean   :76.42  
 3rd Qu.:68.61   3rd Qu.:81.41  
 Max.   :86.66   Max.   :89.69  
 NA's   :20                     

箱ひげ図の作図

2つのグループ間の平均、標準偏差を比較するには箱ひげ図を作成すると理解しやすい。

In [3]:
boxplot(data)

データフレームの要素を参照するときは データフレーム名$要素のグループ と”$”を用いて参照してきました。でも、データフレーム名をいちいち指定するのは面倒です。attach関数を実行すると、data$groupのようにデータフレームの要素名を明示的に指定することを省略することができます。

In [4]:
attach(data) #data$groupと書くことの省略

7.2. 等分散性の仮定1

t検定の結果を見る前に、2条件の母分散が等しいかどうかを調べます。等分散性の検定では,「2条件の母分散が等しい」という仮説(帰無仮説)を誤って捨てて、「母分散が等しくない」と言う仮説を採用してしまう確率がどのくらいあるかを確認します。一般には、その確率(有意水準)を基準としてそれより高いか低いかを考えます。


  1. ここでは慣習として広く行われてきたt検定の前に等分散の検定を行う方法を紹介しています。しかし、この方法は次の2つの理由で、必ずしも正しい方法とは言えず、注意を要します。検定を重ねて行うと、いわゆる多重検定の問題が発生し、実際には差がないにもかかわらず、誤って差があると判断を下してしまう危険性(第1種の過誤)が増します。等分散の検定では、「等分散である」という帰無仮説が棄却できない場合に、等分散であるという仮説を採択しています。帰無仮説を「棄却できないこと」と、「採択すること」は区別する必要があり、ここで行ったような帰無仮説を採択するような方法は統計的仮説検定の本来の使い方に反している可能性があります。このように、等分散の検定を経由せず、直接t検定を行うことが好ましいという見方もあります。この場合、あきらかに等分散でないことがデータからわかる場合は、等分散を仮定しないt検定を行い、そうでなければ、等分散の仮定の下でt検定を行います。

In [5]:
var.test(group1, group2) #等分散性の検定
	F test to compare two variances

data:  group1 and group2
F = 2.5118, num df = 19, denom df = 39, p-value = 0.01473
alternative hypothesis: true ratio of variances is not equal to 1
95 percent confidence interval:
 1.198401 5.871855
sample estimates:
ratio of variances 
          2.511821 

出力結果の3行目を見ると、f = 1.5483, df = 24, p = 0.2911となっています。ここでは有意確率が0.05より大きいため、「2条件の母分散が等しい」という仮説を捨てる誤りはほとんどないと考え、2つの母分散は等しいと仮定します。

7.3. t検定

「グループ1のテスト得点の平均」と「グループ2のテスト得点の平均」に差があるかどうかを検定します。ここで、2つのグループの分散が等しいと仮定して関数t.testを用いて検定を行います。

In [6]:
t.test(group1, group2, paired =FALSE, alternative ="two.sided", var.equal = TRUE)
	Two Sample t-test

data:  group1 and group2
t = -4.4998, df = 58, p-value = 3.326e-05
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 -18.559103  -7.130897
sample estimates:
mean of x mean of y 
   63.579    76.424 

t検定では2つの母集団の平均値に差が見られるかどうかを検定します。先の等分散性の検定で2つの母分散が等しいと仮定できたため、等分散を仮定するオプションvar.equal = TRUEを指定しています。 ここで結果は、t = -0.4169, df = 48, p-value = 0.6786となっています。ここで「2つの母集団の平均値は等しくない」という仮説を誤って捨てて「2つの母集団の平均値は等しい」という仮説を取る確率がどのくらいあるかを確認します。有意水準を0.05とすると、出力結果の有意確率はそれより大きいため、2つの母集団の平均値には統計的に有意な差があるとはいえないという結論が導かれます。

7.4. 関数のオプション解説

関数 目的
boxplot(data) 箱ひげ図の作成
var.test(group1, group2) 等分散性の検定
t.test(group1, group2, paired =FALSE, alternative ="two.sided", var.equal = TRUE) 独立な2群のt検定