【R言語】RStudioでt検定
こんにちは、プログラミング超初心者のえいこです。
前回のnoteでは、データの概要を把握するためにざっくり箱ひげグラフをかいてみました。
グラフをかいたら、データを比較検定をしますね。
今回は、RStudioを使って二標本のt検定をしてみようと思います。
t検定に関しては、勉強したことをまとめています。
早速、やってみようと思います。
とりあえず、Rでt検定してみる
今回の記事で使用する、データは薬剤Xを投与した時とプラセボを投与した時のタンパク質Aの発現を比較したものです。
検定を始める前に、データをRStudioに入れておかなければなりません。今回はデータ数が少ないので、ベクトルを使って直接入れています。
ベクトルを使った、データの入力しかたはこちらを参照してください。
Rでt検定をする関数は"t.test()"です。
Excelでは"=TTEST()"ですね。
Excelのt検定は...
・Studentのt検定に従って算出した値を返す
・検定の方法は、片側分布と両側分布から選ぶ
・検定の種類は、対、等分散、不等分散から選ぶ
ということですが、Rではどうでしょう?なにも指定しないで、X投与群とプラセボを比較してみることにします。
t.test(xtreat,placebo)
Welch Two Sample t-test
data: xtreat and placebo
t = 6.7815, df = 2.6212, p-value =
0.009927
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
0.9292014 2.8641319
sample estimates:
mean of x mean of y
5.713333 3.816667
RStudioのデフォルトの二標本検定はWelchのt検定のようです。
Welchの検定は2つのサンプルの母分散が等しいとは限らない場合にも使うことができるもので、母分散が等しいと仮定して計算するStudentのt検定とは若干計算方法が異なるようです。
最近では、母分散が等しくないという前提で母分散が等しいものを計算しても問題ないという見解が出てきていて、母分散が等しいか考慮する必要のないWelchのt検定が良いという人が増えてきています。
もし、等分散だよ!っていうことでStudentのt検定を行いたい場合は、"t.test()"の中に"var.equal=T"を加えると計算できます。
> #t検定をしてみる(分散が等しいと仮定)
> t.test(placebo,xtreat,var.equal = T)
Two Sample t-test
data: placebo and xtreat
t = -6.7815, df = 4, p-value = 0.002468
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
-2.673189 -1.120144
sample estimates:
mean of x mean of y
3.816667 5.713333
"var"というのは分散を計算するときに出てきましたね。統計学の分散を表すvarianceの頭文字。
"var.equal"というのは等分散性を仮定するか?というときに使って、"=T"の場合は仮定する、"=F"の場合は仮定しないという意味になります。
Studentの検定をする場合には、分散が等しいことを検定で示さなければならないので(F検定)手順が一つ増えます。ここでは割愛します。
表示された結果を詳しく見てみる
もう一度表示された結果を見てみましょう。
t.test(xtreat,placebo)
Welch Two Sample t-test
data: xtreat and placebo
t = 6.7815, df = 2.6212, p-value =
0.009927
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
0.9292014 2.8641319
sample estimates:
mean of x mean of y
5.713333 3.816667
結果の一行目は、比較したデータの変数を表示。今は"xtreat"と"placebo"を比較しています。
二行目は、t値(2つのデータの平均値の異なり具合)、df(degrees of freedom:自由度)、p値
※自由度についてはのちほど勉強します
三行目は、対立仮説(alternative hypothesis)「平均値の真の差が0と等しくない」
四行目は、95%信頼区間 今回は[0.9292014, 2.8641319]
最後は比較したデータの確認、xとyの平均値 今回は5.713333と3.816667を比較した。
今回のケースで言えば、95%信頼区間が0を含んでいないことから、二つの平均値の差は統計的に有意だといえるのです。(ちなみにp値は0.009927)
となって、安心してスター(*)をグラフに2つくらいつけるわけですね。
ちなみに、等分散だと仮定して出した結果の方がp値が低くなっています。でもこれはきちんと母分散が等しいことを示さないとだめですね。
ここまでやってきて、次の課題が生まれてきました。
・作ったグラフにスターを入れてみたい!
・データセットが増えた場合ってどうしたら良いの?
・t検定じゃない検定方法
とりあえず、今日はここまで!
それでは、また。
最後までお読みいただきありがとうございます。よろしければ「スキ」していただけると嬉しいです。 いただいたサポートはNGS解析をするための個人用Macを買うのに使いたいと思います。これからもRの勉強過程やワーママ研究者目線のリアルな現実を発信していきます。