t.test()で対応のない2標本t検定
東京大学医学部老年病科の矢可部です。
基礎、臨床研究の統計解析でRを用いています。
学生や研修医の指導に使うという目的もあり、noteに記事を書いています。
今回は、2群のデータの平均の有意差を検定する「対応のないt検定」のやり方を解説します。
なおこのnoteはRの操作法を習得してもらうことに主眼を置いているため、統計解析の背景や原理については割愛しています。できれば成書などで勉強することをお勧めします。
データを直接入力する方法
Welchの2標本t検定
以下の問題を考えてみます。
このような独立した2つのグループのデータの平均に差があるかを解析するには「対応のないt検定」が用いられます。
まず、データをRに入力します。
以下のように、t.test()を使うと検定ができます。
以下のような結果が出力されました。
Welch の2標本t検定を行い、P値は0.02151と求められました。
有意水準を5%とする場合、p<0.05なのでCとXの平均には有意差があるという判定になります。
この検定の流れは、以下の通りです。
表示された画面の下には"95 percent confidence interval" (CとXの差の95%信頼区間) と"mean of x, mean of x" (C, Xそれぞれの平均) も表示されています。
ここで、95%信頼区間は-4.14〜-0.59となっています。
このように、有意差がある場合には95%信頼区間は0を含みません。逆に、有意差がない場合には0を含みます。
まず等分散の検定を行う方法
他の方法として、
最初に等分散かを検定する
→等分散と仮定できるならStudentのt検定、仮定できないならWelchのt検定を行う
という検定も行われてきました。
まず、以下のように入力し等分散の検定を行います。
結果は以下の通りです。
ここで有意水準が5%の場合、
を選択します。
このケースではp=0.7557なので、Studentのt検定です。
"var.equal=T"または"var.equal=F"と入力することで検定法を指定します。
結果は以下の通りで、有意差ありと判定されました。
なおvar.equal=Fとした場合、最初に行ったt.test()と全く同じ結果になります。
「有意差あり」という結果は変わらないものの、方法によって得られるP値が異なります。
最近では最初からWelchのt検定が使われることが多く、私もそうしています。
表から読み込んだデータで行う方法
このExcelファイルのデータを読み込んで、t検定を行ってみましょう。なおこれは前回の記事で用いたものと同じなので、すでにダウンロードした方は不要です。
データの読み込みについては、過去記事をご覧ください。
表全体をコピーし、datとしてRに入力します。
今回は、男性と女性の身長に差があるかを検定します。
コマンドは以下の通りです。
以下のように、有意差があるという結果になりました。
少し手数は多くなりますが、subset関数により男性と女性それぞれのデータを抽出して行うこともできます。
subset関数についてはこちらの記事をご覧ください。
実行すると同じ結果が得られます。
t検定のロバスト性
実はt検定を行うには条件があります。それは「データが正規分布していること」です。
そのため、厳密にはデータの正規性の検定を行って確認した上で、t検定を行うべきです。
しかし、実際にはデータが正規分布していなくても、t検定で得られる結果には影響を与えにくいとされています。
これをt検定のロバスト性と言います。
私も通常、t検定を行う際にデータの正規性の検定は省略しています。ただ、念のためこのような背景は理解しておいてください。
練習問題
今回は以上です。