http://kogolab.jp/elearn/hamburger/chap4/sec1.html にある例題をRでみていきます。
最初は、対応の無い二標本 t 検定の例です。
ワクワクバーガーを食べた女子高生8名の点数を a に、モグモグバーガーを食べた女子高生8名
(最初の8名とは別人)の点数を b にいれます。
> a <- c(70,75,70,85,90,70,80,75)
> b <- c(85,80,95,70,80,75,80,90) まずは分布をみてみましょう。
> stem(a)
The decimal point is 1 digit(s) to the right of the | 7 | 000
7 | 55 8 | 0 8 | 5 9 | 0
> stem(b)
The decimal point is 1 digit(s) to the right of the |
7 | 05
8 | 0005 9 | 05
ヒストグラムを見ましょう。
> hist(a)
> hist(b) 箱ひげ図は。
> boxplot(a)
> boxplot(b)
ひとつにまとめて表示しましょう。
> boxplot(a, b, names=c(" ワクワク "," モグモグ "))
それぞれの平均は・・・
> mean(a) [1] 76.875
> mean(b) [1] 81.875
小数点2桁にして、見やすくしましょう。
> round(mean(a),2) [1] 76.88
> round(mean(b),2) [1] 81.88
useful.r をいれていたら describe を使って基礎統計量を確認できます。
> describe(a)
V n mean sd median min max range skew se 1 1 8 76.88 7.53 75 70 90 20 0.54 2.66
> describe(b)
V n mean sd median min max range skew se 1 1 8 81.88 7.99 80 70 95 25 0.2 2.82
>
t検定をする前に、それぞれの分散が等しいがどうかを調べます。
帰無仮説は、等分散である。(分散に差がない)
対立仮説は、分散に差がある。(等分散ではない)
> var.test(a,b)
F test to compare two variances
data: a and b
F = 0.8881, num df = 7, denom df = 7, p-value = 0.8796 alternative hypothesis: true ratio of variances is not equal to 1 95 percent confidence interval:
0.1778034 4.4360383 sample estimates:
ratio of variances 0.8881119
等しいという帰無仮説は棄却されませんでしたので、等分散のようですね。
t検定は、 t.test( ) なのですが、注意をしないと以下のようになります。
> t.test(a,b)
Welch Two Sample t-test data: a and b
t = -1.2881, df = 13.951, p-value = 0.2187
alternative hypothesis: true difference in means is not equal to 0 95 percent confidence interval:
-13.327988 3.327988 sample estimates:
mean of x mean of y 76.875 81.875
上のようにオプションをつけないと、等分散でない時の検定がおこなわれます。 (Welch( ウェルチ ) の検定 )
先に調べたように、等分散であるならば、オプション var.equal=T を引数(ひきすう)にくわえ、 t 検定をします。
通常、心理学研究の場合、等分散であるという仮定をしていく場合が多い気がします。
帰無仮説:味に差がない。
対立仮説:味に差がある。
> t.test(a,b, var.equal=T) Two Sample t-test data: a and b
t = -1.2881, df = 14, p-value = 0.2186
alternative hypothesis: true difference in means is not equal to 0 95 percent confidence interval:
-13.325244 3.325244
sample estimates:
mean of x mean of y 76.875 81.875
味に差がないという帰無仮説は棄却されません。
次の方法もぜひ覚えておいてください。普通に質問紙調査をすると、 dataframe 形式で扱います。
> group <- c(rep("A",8),rep("B",8))
rep は、 repeat ですね。 最初の引数を、次の引数の数だけ繰り返します。
A が、ワクワクバーガー、Bがモグモグバーガーということです。
> group
[1] "A" "A" "A" "A" "A" "A" "A" "A" "B" "B" "B" "B" "B" "B" "B" "B"
> aji <- c(a,b)
最初に、ワクワクバーガーの得点を並べて、次にモグモグバーガーの得点を並べます。
> aji
[1] 70 75 70 85 90 70 80 75 85 80 95 70 80 75 80 90
> buger.df <- data.frame(group,aji)
> buger.df group aji 1 A 70 2 A 75 3 A 70 4 A 85 5 A 90 6 A 70 7 A 80 8 A 75 9 B 85 10 B 80 11 B 95 12 B 70 13 B 80 14 B 75 15 B 80 16 B 90
上のようなデータフレームになります。
~ は、チルダです。
> t.test(aji ~ group, data = buger.df, var.equal=T)
Two Sample t-test
data: aji by group
t = -1.2881, df = 14, p-value = 0.2186
alternative hypothesis: true difference in means is not equal to 0 95 percent confidence interval:
-13.325244 3.325244 sample estimates:
mean in group A mean in group B 76.875 81.875
この形式の場合の箱ひげ図は以下のようにします。
> boxplot(aji~group, data=buger.df)
> library(gplots)
要求されたパッケージ gtools をロード中です 要求されたパッケージ gdata をロード中です 次のパッケージを付け加えます : 'gplots'
The following object(s) are masked from package:stats : lowess
> plotmeans(aji~group, data=buger.df)
useful.r を取り入れていて、 describe を使えるならば・・・
> by(buger.df$aji, buger.df$group, describe) INDICES: A
V n mean sd median min max range skew se 1 1 8 76.88 7.53 75 70 90 20 0.54 2.66
--- INDICES: B
V n mean sd median min max range skew se 1 1 8 81.88 7.99 80 70 95 25 0.2 2.82
>
対応のある t 検定
次は、
http://kogolab.jp/elearn/hamburger/chap5/sec1.html
対応のあるt検定です。
「女子高生 8 人を集めて、 2 種類のハンバーガーを食べて比較してもらい、それぞれのハンバー ガーに点数をつけてもらいました。」という例題です。
> a <- c(90,75,75,75,80,65,75,80)
> b <- c(95,80,80,80,75,75,80,85)
> describe(a)
V n mean sd median min max range skew se 1 1 8 76.88 7.04 75 65 90 25 0.22 2.49
> describe(b)
V n mean sd median min max range skew se 1 1 8 81.25 6.41 80 75 95 20 1.02 2.27
>
http://cse.naro.affrc.go.jp/takezawa/r-tips/r/64.html を参考にします。
オプションに、 paired = T をつけます。
> t.test(a, b, paired = TRUE) Paired t-test
data: a and b
t = -2.9656, df = 7, p-value = 0.02094
alternative hypothesis: true difference in means is not equal to 0 95 percent confidence interval:
-7.8633933 -0.8866067 sample estimates:
mean of the differences -4.375
>
ワクワクとモグモグの評価点の平均には差があるという結果になりました。
もし、どちらかがおいしいという仮説が前もってあるならば、オプションをつけることで、片側検定が できます。
> t.test(a, b, paired = TRUE, alternative = "less") Paired t-test
data: a and b
t = -2.9656, df = 7, p-value = 0.01047
alternative hypothesis: true difference in means is less than 0 95 percent confidence interval:
-Inf -1.580038 sample estimates:
mean of the differences
-4.375
あるいは以下のとおり。
> t.test(a - b, alternative = "less") One Sample t-test
data: a - b
t = -2.9656, df = 7, p-value = 0.01047
alternative hypothesis: true mean is less than 0 95 percent confidence interval:
-Inf -1.580038 sample estimates:
mean of x -4.375
データフレームにしてやってみましょう。
まず、協力者を8名番号をつけます。
>subject <- c(1:8)
>pair.t.df <- data.frame(subject, a, b)
> subject <- c(1:8)
> pair.t.df <- data.frame(subject, a, b)
> pair.t.df subject a b 1 1 90 95 2 2 75 80 3 3 75 80 4 4 75 80 5 5 80 75 6 6 65 75 7 7 75 80 8 8 80 85
>
これで、データフレームができました。
> t.test(a, b, paired=T, data=pair.t.df) Paired t-test
data: a and b
t = -2.9656, df = 7, p-value = 0.02094
alternative hypothesis: true difference in means is not equal to 0 95 percent confidence interval:
-7.8633933 -0.8866067 sample estimates:
mean of the differences
-4.375
ドキュメント内
Rmanual 最近の更新履歴 緒賀研究室―個人別荘
(ページ 77-84)