yuki’s diary

大学生活を満喫中(学生生活じゃないよ!)

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%信頼区間

 

長くなったので、分散分析は次回にします(^^)/