0. はじめに
「トウモロコシ'A'品種と'B'品種の収量はどちらが多いのだろう?」
「薬剤X投与前後でマウスの血圧は変化しただろうか?」
などなど、2群間の平均値の差を検定したい場面はたくさんあると思います。
本記事では、2群間の平均値の差の検定の中から、t検定(対応のあるt 検定、Studentのt 検定、Welchのt検定)、ウィルコクソンの符号付順位検定と順位和検定の検定について、Rではどのように実行するかご紹介したいと思います!
※どんな場合にはどんな検定を使うべきか、については私の手に余るような少々難しい話題なので、この記事では紹介を控えさせていただきます。末尾に、私愛読の統計専門書等をご紹介いたしますので、ご参考にしていただければ幸いです。
0-1. この記事の到達目標
- 2群間の平均値の差の検定を実行できる。
0-2. 初めて登場する関数
-
t.test(第1群のベクトル, 第2群のベクトル)
- t 検定を実行します。t検定の中のどのt 検定をするかについては第3引数で指定します。
1. t 検定
t 検定には対応のあるt 検定、Studentのt 検定、Welchのt 検定の3つが含まれ、2群間の平均値の差を検定する手法です。Rではいずれもt.test()
を用いて実行でき、第3引数の部分がちょっとずつ異なります。
1-1. 対応のあるt 検定
今回用いる練習データです。この記事を通してこの同じ練習データを使ってコードを実行していきます。コピペして一緒に練習していきましょう!本当ならば、データに応じて検定の手法を変えるべきでしょうが、あくまでも今回はコードを実行する練習なのであしからず。
A<-c(0.7, -1.6, -0.2, -1.2, -0.1, 2.4, 2.7, 0.8, 0.0, 2.0)
B<-c(1.9, 0.8, 1.1, 0.1, -0.1, 4.4, 5.5, 1.6, 4.6, 3.4)
対応のあるt 検定には、t.test()
の第1引数と第2引数に数値ベクトルを指定し、第3引数に第3引数にpaired=TRUE
を指定します。読んで字のごとくですね。
結果のメッセージにPaired t-testが表示されていることが確認できたらOKです。
結果にあるp-valueをもとに、帰無仮説を棄却するか保留するか判断します。
> t.test(A,B,paired = TRUE)
Paired t-test
data: A and B
t = -4.4352, df = 9, p-value = 0.001635
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
-2.6878741 -0.8721259
sample estimates:
mean of the differences
-1.78
1-2. Studentのt 検定
Studentのt 検定は等分散であるときに用いるとされています。t.test()
の第1引数と第2引数は先ほどと同様に数値ベクトルを指定し、第3引数にvar.equal=TRUE
を指定します。
結果のメッセージにTwo Sample t-testが表示されていたらOKです。
> A<-c(0.7, -1.6, -0.2, -1.2, -0.1, 2.4, 2.7, 0.8, 0.0, 2.0)
> B<-c(1.9, 0.8, 1.1, 0.1, -0.1, 4.4, 5.5, 1.6, 4.6, 3.4)
> t.test(A,B,var.equal = TRUE)
Two Sample t-test
data: A and B
t = -2.2711, df = 18, p-value = 0.03565
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
-3.4266309 -0.1333691
sample estimates:
mean of x mean of y
0.55 2.33
1-3. Welchのt 検定
Studentのt 検定は等分散性があるときに用いるとされているので、第3引数にvar.equal=TRUE
を指定しました。Welchのt 検定は等分散性がないときに用いるとされているのでvar.equal=FALSE
を指定します。
結果のメッセージにWelch Two Sample t-testが表示されていることが確認できたらOKです。
> A<-c(0.7, -1.6, -0.2, -1.2, -0.1, 2.4, 2.7, 0.8, 0.0, 2.0)
> B<-c(1.9, 0.8, 1.1, 0.1, -0.1, 4.4, 5.5, 1.6, 4.6, 3.4)
> t.test(A,B,var.equal = FALSE)
Welch Two Sample t-test
data: A and B
t = -2.2711, df = 16.466, p-value = 0.03688
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
-3.4376978 -0.1223022
sample estimates:
mean of x mean of y
0.55 2.33
ちなみに、t.test()
ではvar.equal=FALSE
がデフォルトになっているので、第1引数と第2引数だけ指定した場合はWelchのt検定が実行されます。先ほどと同じ結果になっていることが確認できますね。
> t.test(A,B)
Welch Two Sample t-test
data: A and B
t = -2.2711, df = 16.466, p-value = 0.03688
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
-3.4376978 -0.1223022
sample estimates:
mean of x mean of y
0.55 2.33
2. ウィルコクソンの符号付順位検定と順位和検定
ウィルコクソンの符号付順位検定と順位和検定もどちらも2群間の平均値の差を検定するノンパラメトリックな検定になります。どちらの検定でも、coin
パッケージ内のwilcox.exact()
を用います。パッケージのインストールと読み込みをしておきましょう。
パッケージのインストールについて復習したい方は第7回へ
> install.packages("exactRankTests")
> library("exactRankTests")
2-1. ウィルコクソンの符号付順位検定
wilcox.exact()
の第1引数と第2引数に数値ベクトルを指定します。ウィルコクソンの符号付順位検定は、対応があるときに用いるので、第3引数にpaired=TRUE
を指定します。
> A<-c(0.7, -1.6, -0.2, -1.2, -0.1, 2.4, 2.7, 0.8, 0.0, 2.0)
> B<-c(1.9, 0.8, 1.1, 0.1, -0.1, 4.4, 5.5, 1.6, 4.6, 3.4)
> wilcox.exact(A,B,paired=TRUE)
Exact Wilcoxon signed rank test
data: A and B
V = 0, p-value = 0.003906
alternative hypothesis: true mu is not equal to 0
2-2. ウィルコクソンの順位和検定
順位和検定のほうも符号付順位検定とほぼ同じです。こちらは対応がないときに用いるので、第3引数にpaired=FALSE
を指定します。
> A<-c(0.7, -1.6, -0.2, -1.2, -0.1, 2.4, 2.7, 0.8, 0.0, 2.0)
> B<-c(1.9, 0.8, 1.1, 0.1, -0.1, 4.4, 5.5, 1.6, 4.6, 3.4)
> wilcox.exact(A,B,paired=FALSE)
Exact Wilcoxon rank sum test
data: A and B
W = 24, p-value = 0.04981
alternative hypothesis: true mu is not equal to 0
3. 個人的おすすめの統計書籍
世の中にはたくさんの統計書籍がありますので、下記書籍はあくまでも参考までにお考え下さい。リンクを踏むとアマゾンのページに飛びます。
4. 次回