平均値の差の検定
Text Update: 11月/08, 2018 (JST)

Packages and Datasets

本ページではR version 3.4.4 (2018-03-15)の標準パッケージ以外に以下の追加パッケージを用いています。
 

Package Version Description
knitr 1.20 A General-Purpose Package for Dynamic Report Generation in R
tidyverse 1.2.1 Easily Install and Load the ‘Tidyverse’

 
また、本ページでは以下のデータセットを用いています。
 

Dataset Package Version Description
sleep datasets 3.4.4 Student’s Sleep Data

 

平均値の差の検定

平均値の差の検定(母平均の差の検定)は一つの因子による効果に差があるか否かを検証する場合に使う手法です。比較する標本数(水準数、群数)により検定方法が異なります。

 

標本数 検定方法
2標本以下 t検定
3標本以上 一元配置分散分析

 

t検定については本ページで組み込みデータセットsleepを用いた説明を行います。一元配置分散分析については準備中です。
 

sleepデータセット

sleepデータセットは10人の患者に対して二種類の睡眠薬を投与した際の睡眠時間の増減データです。ですから本来は対応のあるデータとして扱う必要がありますが、ここでは便宜上、対応のないデータとしても扱っている点に注意してください。

datasets::sleep %>% knitr::kable()
extra group ID
0.7 1 1
-1.6 1 2
-0.2 1 3
-1.2 1 4
-0.1 1 5
3.4 1 6
3.7 1 7
0.8 1 8
0.0 1 9
2.0 1 10
1.9 2 1
0.8 2 2
1.1 2 3
0.1 2 4
-0.1 2 5
4.4 2 6
5.5 2 7
1.6 2 8
4.6 2 9
3.4 2 10

 
すなわち対応の「あり」、「なし」に応じて項目を以下のように読み替えています。あくまでも説明を行う上での便宜上の扱いですので、実際の分析では決してこのような扱いをしないでください。
 

  「対応のある」として扱う場合 「対応のない」として扱う場合
extra 睡眠時間の増減 [H] 睡眠時間の増減 [H]
group 睡眠薬の種類(2種類) 被験者グループ識別番号(2グループ)
ID 被験者の識別番号 グループ内での被験者の識別番号

 

t検定

t検定は前提条件により検定手法が異なりますので条件に応じて適切な検定方法を選択してください。
 

標本数 対応 等分散性 検定方法
N/A N/A 1標本のt検定
なし あり スチューデントのt検定 1
なし なし ウェルチのt検定 1
あり N/A 対応のあるt検定

1 スチューデントのt検定とウェルチのt検定をまとめて独立標本t検定と呼ぶこともあります。
 

帰無仮説

各検定における帰無仮説(\(H_0\))は下記の通りです。
 

検定方法 帰無仮説(\(H_0\)
1標本のt検定 標本の母平均は平均値\(\mu_0\)に等しい
スチューデントのt検定 標本間の母平均に差はない(母平均は等しい)
ウェルチのt検定 同上
対応のあるt検定 同上

 

1標本のt検定

1標本のt検定はひとつの標本データの平均値(\(\mu\))が基準値(\(\mu_0\))と異なるかどうかを調べるための検定です。sleepデータのグループ1の平均値が0(zero)と等しいかどうか検定してみます。

(t.test_result <- datasets::sleep %>% 
  dplyr::filter(group == 1) %>% 
  dplyr::select(extra) %>% 
  t.test(mu = 0)) %>% 
  broom::tidy() %>% knitr::kable()
estimate statistic p.value parameter conf.low conf.high method alternative
0.75 1.32571 0.2175978 9 -0.5297804 2.02978 One Sample t-test two.sided

 
有意水準(\(\alpha\))を5%とした両側検定の結果、p値は0.2175978で帰無仮説(\(H_0\))は棄却されず平均値が0でないとは言えません。当該グループの睡眠時間の増減の平均値は0.75[H]となり、その95%信頼区間は[-0.5297804, 2.0297804]です。
 
参考までにグループ2では異なった検定結果となります。

(t.test_result <- datasets::sleep %>% 
  dplyr::filter(group == 2) %>% 
  dplyr::select(extra) %>% 
  t.test(mu = 0)) %>% 
  broom::tidy() %>% knitr::kable()
estimate statistic p.value parameter conf.low conf.high method alternative
2.33 3.679916 0.0050761 9 0.8976775 3.762322 One Sample t-test two.sided

 

独立標本t検定

スチューデントのt検定

スチューデントのt検定は標本間で等分散性があることを前提条件としています。等分散性の検定については別資料で扱いますので、ここでは等分散性があると仮定してスチューデントのt検定を行います。

(t.test_result <- datasets::sleep %>% 
  t.test(extra ~ group, data = ., var.equal = TRUE, paired = FALSE)) %>% 
  broom::tidy() %>% knitr::kable()
estimate1 estimate2 statistic p.value parameter conf.low conf.high method alternative
0.75 2.33 -1.860813 0.0791867 18 -3.363874 0.203874 Two Sample t-test two.sided

 
有意水準(\(\alpha\))を5%とした両側検定の結果、p値は0.0791867で帰無仮説(\(H_0\))は棄却されず、平均値に差があるとは言えません。平均値の差の95%信頼区間は[-3.363874, 0.203874]です。
 

ウェルチのt検定

ウェルチのt検定は標本間で等分散性がないことを前提条件としています。ここでは等分散性がないと仮定してウェルチのt検定を行います。

(t.test_result <- datasets::sleep %>% 
  t.test(extra ~ group, data = ., var.equal = FALSE, paired = FALSE)) %>% 
  broom::tidy() %>% knitr::kable()
estimate estimate1 estimate2 statistic p.value parameter conf.low conf.high method alternative
-1.58 0.75 2.33 -1.860813 0.0793941 17.77647 -3.365483 0.2054832 Welch Two Sample t-test two.sided

 
有意水準(\(\alpha\))を5%とした両側検定の結果、p値は0.0793941で帰無仮説(\(H_0\))は棄却されず、平均値に差があるとは言えません。平均値の差の95%信頼区間は[-3.3654832, 0.2054832]です。
 

対応のあるt検定

対応のあるt検定は「関連のあるt検定」や「従属なt検定」と呼ばれる事もある対応関係のある2群間の平均値の差の検定を行うものです。sleepデータセットは「対応のある」データですので、本来であればこの検定方法を用いる必要があります。

(t.test_result <- datasets::sleep %>% 
  t.test(extra ~ group, data = ., paired = TRUE)) %>% 
  broom::tidy() %>% knitr::kable()
estimate statistic p.value parameter conf.low conf.high method alternative
-1.58 -4.062128 0.0028329 9 -2.459886 -0.7001142 Paired t-test two.sided

 
有意水準(\(\alpha\))を5%とした両側検定の結果、p値は0.0028329で帰無仮説(\(H_0\))は棄却され対立仮説(\(H_1\))が採択されましたので、平均値に差がないとは言えません。平均値の差の95%信頼区間は[-2.4598858, -0.7001142]です。
 

Rでのt検定

R における前述のt検定は全てt.test関数で計算できます。実施したい検定により引数の指定方法が変わり、前述のように検定結果も異なってきますので検定の際には注意してください。
 

検定方法 引数の指定方法
1標本のt検定 t.test(value, mu = mu0)
スチューデントのt検定 t.test(value ~ group, data = df, var.equal = TRUE)
ウェルチのt検定 t.test(value ~ group, data = df, var.equal = FALSE)
対応のあるt検定 t.test(value ~ group, data = df, paired = TRUE)

 

仮説の指定方法

t.test関数では三通りの仮説が指定できますが、帰無仮説(\(H_0\))ではなく対立仮説(\(H_1\))で指定する点に注意してください。
 

1標本のt検定

1標本のt検定における対立仮説は平均\(\mu\)と基準値(比較値)\(\mu_0\)に対して下表のようになります。

対立仮説 \((\)帰無仮説\()\) 指定方法 備考
\(\mu \neq \mu_0\) \((\mu = \mu_0)\) alternative = "two.sided" default
\(\mu \lt \mu_0\) \((\mu \geq \mu_0)\) alternative = "less"
\(\mu \gt \mu_0\) \((\mu \leq \mu_0)\) alternative = "greater"

 

独立標本t検定

独立標本t検定(対応のないt検定)における対立仮説は、平均値\(\mu_x\), \(\mu_y\)に対して考える場合は下表のようになります。
対立仮説を平均の差(\(\delta = \mu_x - \mu_y\))で考える場合は対応のあるt検定の項を参照してください。

対立仮説 (帰無仮説) 指定方法 備考
\(\mu_x \neq \mu_y\)\(\mu_x = \mu_y\) alternative = "two.sided" default
\(\mu_x \lt \mu_y\)\(\mu_x \geq \mu_y\) alternative = "less"
\(\mu_x \gt \mu_y\)\(\mu_x \leq \mu_y\) alternative = "greater"

 

対応のあるt検定

対応のあるt検定における対立仮説は2標本の平均の差\((\delta = \mu_x - \mu_y)\)に対して下表のようになります。

対立仮説 (帰無仮説) 指定方法 備考
\(\delta \neq 0\)\(\delta = 0\) alternative = "two.sided" default
\(\delta \lt 0\)\(\delta \geq 0\) alternative = "less"
\(\delta \gt 0\)\(\delta \leq 0\) alternative = "greater"

 

R Commanderでのt検定

R Commanderでのt検定は少しややこしい感じがあります。R Commanderではtidy data形式ではなく人間が分かりやすいmessy data形式でデータを指定する必要があるためです。これはどちらが良い悪いという話ではなくR Commanderの設計思想がそのようになっているためです。
 

R Commander 指定するデータ 関数の呼び出し形式
1標本t検定 1標本と基準値 t.test(x, mu = mu0)
独立サンプルt検定 対応のない2標本 t.test(x, y)
対応のあるt検定 対応のある2標本 t.test(x, y, paired = TRUE)

 

したがって、R Commanderでt検定を行う場合は上表のような形式で関数が呼び出されますので、以下のようなデータ形式(データフレーム型)のデータを用意してください。
 

datasets::sleep %>% 
  tidyr::spread(key = group, value = extra) %>% 
  dplyr::rename(Group1 = `1`, Group2 = `2`) %>% 
  dplyr::select(-ID) %>% knitr::kable()
Group1 Group2
0.7 1.9
-1.6 0.8
-0.2 1.1
-1.2 0.1
-0.1 -0.1
3.4 4.4
3.7 5.5
0.8 1.6
0.0 4.6
2.0 3.4

 
enjoy!  


CC BY-NC-SA 4.0 , Sampo Suzuki