ANOVA4 on the Webは、広島女学院大学の桐木氏が作成した、ウェブ上で4要因(四元配置)までの分散分析を実行できる便利な環境です。同サイトで公開されているANOVA4 on the Web専用の入力フォーマット(ANVファイル)のサンプルファイルをANOVA4で実行したのが以下の結果です。年齢と性別が被験者間要因、課題が被験者間要因で、得点の平均値について有意差検定を行っています。(分散分析表のみ抜粋、本来は単純主効果や多重比較の情報も出力されます)
Table of Analysis of Variance ------------------------------------------------------------------------------ source SS df MS F p ------------------------------------------------------------------------------ A:年齢 102.2064516 1 102.2064516 17.455 0.0013 *** B:性 5.6903226 1 5.6903226 0.972 0.3437 AB 61.4322581 1 61.4322581 10.491 0.0071 ** error[S(AB)] 70.2666667 12 5.8555556 C:課題 28.0279570 2 14.0139785 8.977 0.0012 *** AC 5.8989247 2 2.9494624 1.889 0.1730 BC 18.9956989 2 9.4978495 6.084 0.0073 ** ABC 45.6408602 2 22.8204301 14.618 0.0001 **** error[CS(AB)] 37.4666667 24 1.5611111 ------------------------------------------------------------------------------ + p<.10, * p<.05, ** p<.01, *** p<.005, **** p<.001
同じデータをもってきて、Rで実行してみました。被験者間・被験者内の混合計画のformulaの書き方の練習です。
age <- c(rep(5, 9*3), rep(6, 7*3)) gender <- rep(c(rep("M",5), rep("F",4), rep("M",3), rep("F",4)), each=3) task <- rep(1:3, 16) subject <- rep(c(1:16), each=3) score <- c(2, 5, 9, 6, 7, 10, 5, 9, 13, 7, 9, 14, 5, 7, 11, 6, 3, 6, 6, 6, 7, 8, 5, 5, 10, 8, 6, 1, 2, 1, 2, 1, 5, 5, 4, 3, 5, 5, 5, 3, 6, 5, 4, 6, 9, 6, 7, 7) dat <- data.frame(age=ordered(age), gender=factor(gender), subject=factor(subject), task=ordered(task), score=score) res <- aov(score ~ age * gender * task + Error(subject/task) + age*gender, data=dat) summary(res)
計算された分散分析表は以下の通り。ANOVA4の結果と異なっています。
Error: subject Df Sum Sq Mean Sq F value Pr(>F) age 1 95.36 95.36 16.285 0.00165 ** gender 1 1.92 1.92 0.328 0.57746 age:gender 1 61.43 61.43 10.491 0.00710 ** Residuals 12 70.27 5.86 --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 Error: subject:task Df Sum Sq Mean Sq F value Pr(>F) task 2 41.29 20.646 13.225 0.000134 *** age:task 2 8.07 4.037 2.586 0.096165 . gender:task 2 27.53 13.764 8.817 0.001347 ** age:gender:task 2 45.64 22.820 14.618 7.05e-05 *** Residuals 24 37.47 1.561 --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
特に課題の主効果にだいぶ違いがあるので、SPSS (ver.18)でも同様に試してみたところ、以下のようになりました。
被験者間効果の検定 |------------|-----------------|------|--------|-------|--------| |ソース |タイプ III 平方和|自由度|平均平方|F 値 |有意確率| |------------|-----------------|------|--------|-------|--------| |切片 |1482.852 |1 |1482.852|253.238|.000 | |------------|-----------------|------|--------|-------|--------| |age |102.206 |1 |102.206 |17.455 |.001 | |------------|-----------------|------|--------|-------|--------| |gender |5.690 |1 |5.690 |.972 |.344 | |------------|-----------------|------|--------|-------|--------| |age * gender|61.432 |1 |61.432 |10.491 |.007 | |------------|-----------------|------|--------|-------|--------| |誤差 |70.267 |12 |5.856 | | | |------------|-----------------|------|--------|-------|--------| 被験者内対比の検定 |---------------------|----|-----------------|------|--------|------|--------| |ソース |task|タイプ III 平方和|自由度|平均平方|F 値 |有意確率| |---------------------|----|-----------------|------|--------|------|--------| |task |線型|25.317 |1 |25.317 |11.493|.005 | | |----|-----------------|------|--------|------|--------| | |2 次|2.711 |1 |2.711 |2.949 |.112 | |---------------------|----|-----------------|------|--------|------|--------| |task x age |線型|3.188 |1 |3.188 |1.447 |.252 | | |----|-----------------|------|--------|------|--------| | |2 次|2.711 |1 |2.711 |2.949 |.112 | |---------------------|----|-----------------|------|--------|------|--------| |task x gender |線型|18.801 |1 |18.801 |8.535 |.013 | | |----|-----------------|------|--------|------|--------| | |2 次|.195 |1 |.195 |.212 |.653 | |---------------------|----|-----------------|------|--------|------|--------| |task x age * gender|線型|44.284 |1 |44.284 |20.104|.001 | | |----|-----------------|------|--------|------|--------| | |2 次|1.356 |1 |1.356 |1.475 |.248 | |---------------------|----|-----------------|------|--------|------|--------| |誤差 (task) |線型|26.433 |12 |2.203 | | | | |----|-----------------|------|--------|------|--------| | |2 次|11.033 |12 |.919 | | | |---------------------|----|-----------------|------|--------|------|--------|
これまた微妙に違うんですよね。RのaovよりはANOVA4とSPSSのほうが値が近いです。Rのformulaの書き方が違うのかもしれません。うーむ……。
2015年2月25日追記
SSの計算のしかたが違うのかもしれません。aovはType-I、lmはType-II、SPSSやSASはType-IIIの平方和を使用するのだそうで、ANOVA4もType-IIIなのかも。
2015年3月18日追記
ANOVA君はType-IIIの計算ができるとのことで、やってみました。
source("anovakun_451.txt") dat2 <- data.frame(matrix(dat$score, ncol=length(levels(factor(task))), byrow=TRUE)) age2 <- factor(c(rep(5, 9), rep(6, 7))) gender2 <- factor(c(rep("male", 5), rep("female", 4), rep("male", 3), rep("female", 4))) dat2 <- cbind(age2, gender2, dat2) colnames(dat2) <- c("Age", "Gender", "Task 1", "Task 2", "Task 3") anovakun(dat2, "ABsC", 2, 2, 3)
すると、ANOVA4 on the Webの出力とぴったり一致。平方和(SS)の計算方法による違いだったぽいです。今回使用したデータは『心理学のためのデータ解析テクニカルブック』の「2要因に対応がなく、1要因に対応がある場合〔データ数が異なるケース〕」から取られています。同書の計算結果ともほぼ一致しています。
平方和のタイプについては「分散分析のノート」にまとまっています。
-------------------------------------------------------------- Source SS df MS F-ratio p-value -------------------------------------------------------------- A 102.2065 1 102.2065 17.4546 0.0013 ** B 5.6903 1 5.6903 0.9718 0.3437 ns A x B 61.4323 1 61.4323 10.4913 0.0071 ** s x A x B 70.2667 12 5.8556 -------------------------------------------------------------- C 28.0280 2 14.0140 8.9769 0.0012 ** A x C 5.8989 2 2.9495 1.8893 0.1730 ns B x C 18.9957 2 9.4978 6.0840 0.0073 ** A x B x C 45.6409 2 22.8204 14.6181 0.0001 *** s x A x B x C 37.4667 24 1.5611 -------------------------------------------------------------- Total 388.9792 47 +p < .10, *p < .05, **p < .01, ***p < .001
釣り合い型(要因計画の各セル内のデータ数が等しい)であればRでもcarパッケージのAnovaを使えばType-IIIのSSが計算できるけれど、今回の例のような非釣り合い型のデータの場合はANOVA君を使うのが良いみたい。