目的 テューキーの方法による多重比較を行う。 Games-Howell 法も選択できる。 R の TukeyHSD や pairwise.t.test 関数も参照するとよい。 使用法 tukey(data, group, method=c("Tukey", "Games-Howell")) 引数 data 観察値ベクトル group 群変数ベクトル method "Tukey" のとき Tukey 法(デフォルト) "Games-Howell" のとき Games-Howell 法 ソース インストールは,以下の 1 行をコピーし,R コンソールにペーストする source("http://aoki2.si.gunma-u.ac.jp/R/src/tukey.R", encoding="euc-jp") # Tukey の方法による多重比較 # Games-Howell の方法も選択できるように拡張 2009/08/03 tukey <- function( data, # 観察値ベクトル group, # 群変数ベクトル method=c("Tukey", "Games-Howell")) # 手法の選択 { OK <- complete.cases(data, group) # 欠損値を持つケースを除く data <- data[OK] group <- factor(group[OK]) n <- tapply(data, group, length) # 各群のケース数 a <- length(n) # 群の数 phi.e <- sum(n)-a # 誤差分散(群内不偏分散)の自由度 Mean <- tapply(data, group, mean) # 各群の平均値 Variance <- tapply(data, group, var) # 各群の不偏分散 result1 <- cbind(n, Mean, Variance) # 各群の統計量 rownames(result1) <- paste("Group", 1:a, sep="") method <- match.arg(method) if (method == "Tukey") { # Tukey の方法 v.e <- sum((n-1)*Variance)/phi.e # 誤差分散(群内不偏分散) t <- combn(a, 2, function(ij) # 対比較 abs(diff(Mean[ij]))/sqrt(v.e*sum(1/n[ij])) ) p <- ptukey(t*sqrt(2), a, phi.e, lower.tail=FALSE) # 有意確率を計算する Tukey <- cbind(t, p) # 対比較の結果 rownames(Tukey) <- combn(a, 2, paste, collapse=":") return(list(result1=result1, Tukey=Tukey, phi=phi.e, v=v.e)) } else { # Games-Howell の方法 t.df <- combn(a, 2, function(ij) { # 対比較 t <- abs(diff(Mean[ij]))/sqrt(sum(Variance[ij]/n[ij])) df <- sum(Variance[ij]/n[ij])^2/sum((Variance[ij]/n[ij])^2/(n[ij]-1)) return(c(t, df))} ) t <- t.df[1,] df <- t.df[2,] p <- ptukey(t*sqrt(2), a, df, lower.tail=FALSE) # 有意確率を計算する Games.Howell <- cbind(t, df, p) # 対比較の結果 rownames(Games.Howell) <- combn(a, 2, paste, collapse=":") return(list(result1=result1, Games.Howell=Games.Howell)) } } 使用例 data <- c( 14, 15, 14, 16, 15, 17, 17, # 第 1 群のデータ,7 例 17, 16, 17, 16, 15, 18, 19, 15, # 第 2 群のデータ,8 例 18, 19, 20, 19, 17, 17, # 第 3 群のデータ,6 例 20, 21, 19, 20, 19, 22, 20, # 第 4 群のデータ,7 例 19, 20, 19, 17, 17, 17, 18 # 第 5 群のデータ,7 例 ) group <- rep(1:5, c(7, 8, 6, 7, 7)) # 群を表す数値 tukey(data, group) # Tukey 法 tukey(data, group, method="G") # Games-Howell 法 出力結果例 > tukey(data, group) $result1 n Mean Variance Group1 7 15.42857 1.619048 Group2 8 16.62500 1.982143 Group3 6 18.33333 1.466667 Group4 7 20.14286 1.142857 Group5 7 18.14286 1.476190 $Tukey t p 1:2 1.854090 3.630248e-01 1:3 4.187543 1.975521e-03 1:4 7.073685 6.970838e-07 1:5 4.072727 2.687670e-03 2:3 2.537026 1.090560e-01 2:4 5.451580 6.039780e-05 2:5 2.352204 1.567591e-01 3:4 2.608633 9.414444e-02 3:5 0.274593 9.986795e-01 4:5 3.000957 3.978055e-02 $phi [1] 30 $v [1] 1.554563 > tukey(data, group, method="G") $result1 n Mean Variance Group1 7 15.42857 1.619048 Group2 8 16.62500 1.982143 Group3 6 18.33333 1.466667 Group4 7 20.14286 1.142857 Group5 7 18.14286 1.476190 $Games.Howell t df p 1:2 1.7285886 12.97639 4.512468e-01 1:3 4.2114058 10.84628 1.043077e-02 1:4 7.5051706 11.65358 6.808586e-05 1:5 4.0818548 11.97449 1.083753e-02 2:3 2.4349855 11.69245 1.728503e-01 2:4 5.4870607 12.78706 8.687554e-04 2:5 2.2412441 12.99984 2.249201e-01 3:4 2.8339276 10.14001 1.002291e-01 3:5 0.2822787 10.70743 9.983772e-01 4:5 3.2696956 11.80872 4.412294e-02 解説ページ