1元配置分散分析

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元配置分散分析

分類変数が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が混在してしまう)