Rでt検定に挑戦!!
10年間研究業界にいなかった私は、統計分析ができません笑
当時は、SPSSを使って分析をしていたわけですが、最近はSPSSはお医者さんしか使ってないそうです。
(↑それ本当?ちょっと疑っています)
ということで、HADかRを使った分析ができるようになる必要があります。
実は、夏休みの大学院生の集中講義で、HADを使った統計の授業があったので、こっそり受講してみて、HADはちょっとわかったようなわからんような…。
慣れてきたらすごく便利だというのはわかる上で、まだちょっと慣れません。
こういう困ったときでないと、なかなか勉強はできないので、昨日今日とRでの分析の勉強をしてみました。
そしてなんと、t検定と分散分析に成功したので、やり方を忘れないようにこちらにメモしておきます(^^)
「R t検定」とかで調べると、たくさんやり方が紹介してあるんですが、私は、データの読み込みのところがちょっとうまく理解できておらず、ちょっと難航しました。
データの読み込み方も忘れないように色々書いておこうと思います!
1.データの読み込み
① コピーしたデータを読み込む
data <- read.clip()
エクセル等のデータをコピーした状態で、console paneでこれを実行すると、コピーしたデータをdataというオブジェクトに読み込むことができます。
dataのところは、好きな名前をつけることができるので、私の場合polygraph_dataとか、P300_dataのように、もうちょっとわかりやすいタイトルを付ける方が良さそうです。
今のところ、私はこれが一番便利だと思います!
私は、生理指標なんかを扱う実験をすることが多いので、そんなにたくさんのデータを使うこともないので、それが何のデータがだったかわからなくなる心配もありません。
ただ、質問紙のデータなど、たくさんのデータを分析する際には、以下の方法の方が良いみたいです。
本当に読み込めているか心配なので、
View(data)
を実行すると、source paneにdataに入っているデータを表示させることができます。
②csvのデータを読み込む
CSVファイルを読み込む場合は、読み込むファイルをRのプロジェクトと同じフォルダに入れておくと良いです。私は、R_practiceというフォルダを作っているので、そこに置くようにしています。そして、read_csvという関数(?)を使います。ファイル名がpolygraph.csvの場合は、以下のように入力してから実行します。
data <- read_csv("polygraph.csv")
これで、dataというオブジェクトにpolygraph.csvのデータを読み込むことが出来ました。
③Excelのデータを読み込む
Excelファイルを読み込む場合は、新しいパッケージをインストールする必要があります。
install.packages("readxl")
library(readxl)
続いて、ファイルを読み込むときはこちら
data <- read_excel("polygraph.xlsx")
私は、パッケージをインストールする時に、ダブルクオーテーションを忘れがちなので、エラーがあったら、そこをチェックしてみると良いです。
2.t検定
t検定は、2つの平均値の差を調べる検定(だと理解しています)です。
Rでt検定を行うときは、t.test()を使うようなのですが、()の中をどんなふうに書くのかがちょっと難しいと感じました。
t.test(従属変数 ~ 独立変数, data = データフレーム名)
データフレーム名というのが、データの読み込みで取り込んだデータの名前のことで、読み込んだら右上のEnvironment paneに表示されています。
私のポリグラフ検査のデータを例に説明してみますね。
(1)対応のないt検定
左側からcrime(初犯と累犯がいます)、movie(実験動画と統制動画があります)、それから3つの刺激(Target, Relevant, Irrelevant)に対する脳波のピークの値(P300 Peak amplitude)のデータがあります。
今回は、初犯と累犯では、Target刺激に対する脳波のデータに差があるかどうかを調べるt検定をしてみます。
(絶対ないですけど笑)
そうすると、従属変数はtargetになり、独立変数はcrimeになりますね。
早速やってみます!
エクセルのファイルを作っていたので、まずはエクセルファイルを読み込みます!
data_polygraph <- read_excel("polygraph.xlsx")
を実行して、data_targetに上記のデータを取り込みます。
t.test(target ~ crime, data = data_polygraph)
これを実行します!
結果はこちら。
> t.test(target ~ crime, data = data_target)
Welch Two Sample t-test
data: target by crime
t = -0.75058, df = 53.459, p-value = 0.4562
alternative hypothesis: true difference in means between group 1st and group RO is not equal to 0
95 percent confidence interval:
-4.246336 1.933354
sample estimates:
mean in group 1st mean in group RO
17.27491 18.43140
結果にも記載してありますが、Welchのt検定をしてくれています。
対応のない2つの差の検定ですね。
思った通り、初犯者と累犯者の間にはTarget刺激に対するP300に差はないようです。
(厳密に言うと、差がないというよりは差があるとは言えない…なのかもしれません。)
やっている途中で気が付いたのですが、
データを取り込んだ後、attach()という関数を使うと、ヘッダーをそのまま変数名のように使うことができるようです。具体的にはこんな感じです。
data_polygraph <- read_excel("polygraph.xlsx")
attach(data_polygraph)
t.test(target ~ crime)
attach()でdata_polygraphのヘッダーを変数として使えるようになったので、t.test()の中でデータフレームを指定しなくても、そのまま分析できます。
1つだけt検定してみるだけなら、どっちでも良さそうですが、1つのエクセルシートに色々データがあって、それを分析するとなると、attach()を使うと便利そうです。
(2)対応のあるt検定
対応のあるデータということで、さっきのdata_polygraphの中のrelevantとirrelevantのデータを比較してみます。
一応、データを読み込んで、ヘッダーを変数として使えるようにするところから。
data_polygraph <- read_excel("polygraph.xlsx")
attach(data_polygraph)
対応のあるt検定は、2つのデータセットを指定して、最後にpaired = Tを付けるそうです(ちなみに、最後にpaired = Fをつけると対応のないt検定になるようです)。
t.test(データセット1,データセット2,paired = T)
早速やってみます!
relevantとirrelevantを比較するので、こうなります。
> t.test(relevant, irrelevant, paired=TRUE)
結果はこちら。
> t.test(relevant, irrelevant, paired=TRUE)
Paired t-test
data: relevant and irrelevant
t = 6.1731, df = 56, p-value = 7.936e-08
alternative hypothesis: true mean difference is not equal to 0
95 percent confidence interval:
1.030645 2.020899
sample estimates:
mean difference
1.525772
p-value = 7.936e-08 となっていますが、これは桁数が多すぎるだけで、計算してみると「0.00000007936」でした。しっかり差がありそうです。
一応、簡単に結果の見方もメモしておきます。
t = t値
df = 自由度
p-value = p値
95percent confidence interval : 95%信頼区間
長くなったので、分散分析は次回にします(^^)/