3種類のタイプライターの性能の差を調べる。 24人のタイピストを無作為に8人ずつの3つのグループに分類し、これら3グループ(Ⅰ, Ⅱ, Ⅲ)の各々に3種類のタイプライターを無作為に割り当てた。
#dlに表のデータを入れる。
dl<-c(44, 39, 33, 56, 43, 56, 47, 58, 40, 37, 28, 53, 38, 51, 45, 60, 54, 50, 40, 55, 45, 66, 49, 65)
dl
## [1] 44 39 33 56 43 56 47 58 40 37 28 53 38 51 45 60 54 50 40 55 45 66 49 65
#fcに3つのグループA, B, Cの区別を入れる
fc<-factor(rep(c("A","B","C"),c(8,8,8)))
fc
## [1] A A A A A A A A B B B B B B B B C C C C C C C C
## Levels: A B C
#fcという要素でdlが説明できるか?という形式dl~fcと書く。
anova(aov(dl~fc))
## Analysis of Variance Table
##
## Response: dl
## Df Sum Sq Mean Sq F value Pr(>F)
## fc 2 336 168.000 1.8686 0.1791
## Residuals 21 1888 89.905
ここで、anova表が出力される。 fcとResidualは変動因。 Dfは自由度。 Sum Sqは平方和。 Mean Sqは平均平方。 F valueはF値。 Pr(>F)はP値。 p=0.1791で有意水準0.05より大きい。 このため、fcは有意水準5%で帰無仮説を棄却しない。 従って、銘柄によって、タイプの得点に差があるとは言えない。
分類変数が2つになった場合。 1元配置の問題では24人だったが、今回は8人のタイピストが抽出されたとする。 銘柄差と個人差があるかを判定したい。
#dlに表のデータを入れる。
dl<-c(44, 39, 33, 56, 43, 56, 47, 58, 40, 37, 28, 53, 38, 51, 45, 60, 54, 50, 40, 55, 45, 66, 49, 65)
dl
## [1] 44 39 33 56 43 56 47 58 40 37 28 53 38 51 45 60 54 50 40 55 45 66 49 65
#fc1に3つのグループA, B, Cの区別を入れる
fc1<-factor(rep(c("A","B","C"),c(8,8,8)))
fc1<-as.character(fc1)
#タイプライターは8人であるということで、人に番号があると考え、1~8番の人が3回タイプしたという情報を作成し、それをfc2とする。
fc2<-rep(1:8,times=3)
fc2
## [1] 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8
#fc1とfc2でdlを説明できるかを判断するので
anova(aov(dl~fc1+fc2))
## Analysis of Variance Table
##
## Response: dl
## Df Sum Sq Mean Sq F value Pr(>F)
## fc1 2 336.00 168.00 2.6926 0.092151 .
## fc2 1 640.13 640.13 10.2595 0.004465 **
## Residuals 20 1247.87 62.39
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
fc1(列平均), fc2(行平均)とResidual(誤差)は変動因。 Dfは自由度。 Sum Sqは平方和。 Mean Sqは平均平方。 F valueはF値。 Pr(>F)はP値。
p=8.740e-05, p=2.458e-07(e-05はマイナス10乗)で0.05より小さい。 このため、fc1もfc2も共に有意水準5%で帰無仮説を棄却する。 従って、銘柄と人物によって、タイプの得点に差がある。 (=銘柄差と個人差がある)
さらに次のように交互作用(銘柄と人物両方の影響)を入れて、銘柄と人物の効果の差をきちんと見れれば、より現象の本質的な結果を得られる。
anova(aov(dl~fc1+fc2+fc1:fc2))
## Analysis of Variance Table
##
## Response: dl
## Df Sum Sq Mean Sq F value Pr(>F)
## fc1 2 336.00 168.00 2.4759 0.112229
## fc2 1 640.13 640.13 9.4338 0.006577 **
## fc1:fc2 2 26.49 13.25 0.1952 0.824379
## Residuals 18 1221.38 67.85
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#あるいは
anova(aov(dl~fc1+fc2+fc1*fc2))
## Analysis of Variance Table
##
## Response: dl
## Df Sum Sq Mean Sq F value Pr(>F)
## fc1 2 336.00 168.00 2.4759 0.112229
## fc2 1 640.13 640.13 9.4338 0.006577 **
## fc1:fc2 2 26.49 13.25 0.1952 0.824379
## Residuals 18 1221.38 67.85
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#以下のようにしても同じ
anova(aov(dl~fc1*fc2))
## Analysis of Variance Table
##
## Response: dl
## Df Sum Sq Mean Sq F value Pr(>F)
## fc1 2 336.00 168.00 2.4759 0.112229
## fc2 1 640.13 640.13 9.4338 0.006577 **
## fc1:fc2 2 26.49 13.25 0.1952 0.824379
## Residuals 18 1221.38 67.85
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
p値から銘柄差はないが、人物差があることがわかる。 この場合、1.1の結果と1.2の結果を総合するような結果が得られていることがわかる。
data <- data.frame(Person = factor(rep(1:8, times = 3)),
Type = factor(rep(1:3, each = 8)),
Score = c(44, 40, 54, 39, 37, 50, 33, 28, 40, 56, 53, 55, 43, 38, 45, 56, 51, 66, 47, 45, 49, 58, 60, 65))
data
## Person Type Score
## 1 1 1 44
## 2 2 1 40
## 3 3 1 54
## 4 4 1 39
## 5 5 1 37
## 6 6 1 50
## 7 7 1 33
## 8 8 1 28
## 9 1 2 40
## 10 2 2 56
## 11 3 2 53
## 12 4 2 55
## 13 5 2 43
## 14 6 2 38
## 15 7 2 45
## 16 8 2 56
## 17 1 3 51
## 18 2 3 66
## 19 3 3 47
## 20 4 3 45
## 21 5 3 49
## 22 6 3 58
## 23 7 3 60
## 24 8 3 65
このように入れてしまうと、タイプを表の横向きに読み込んでしまいます。 (タイプ1,2,3が混在してしまう)