目的 ウィリアムズの方法による多重比較を行う。 使用法 Williams(data, group, method=c("up", "down")) 引数 data データベクトル group 群を表すベクトル method "up", "down" のいずれか。 ソース インストールは,以下の 1 行をコピーし,R コンソールにペーストする source("http://aoki2.si.gunma-u.ac.jp/R/src/Williams.R", encoding="euc-jp") # ウィリアムズの方法による多重比較を行う Williams <- function( data, # データベクトル group, # 群を表すベクトル method=c("up", "down")) # 方法の指定 { OK <- complete.cases(data, group) # 欠損値を持たないケースを選択する data <- data[OK] group <- group[OK] method <- match.arg(method) # 引数の補完 func <- if (method == "down") min else max # 引数により,min か max かを選ぶ n.i <- tapply(data, group, length) # 各群の例数 sum.i <- tapply(data, group, sum) # 群ごとの総和 mean.i <- tapply(data, group, mean) # 群ごとの平均値 v.i <- tapply(data, group, var) # 群ごとの不偏分散 a <- length(n.i) # 群の数 phi.e <- sum(n.i)-a # 誤差分散の自由度 v.e <- sum((n.i-1)*v.i)/phi.e # 誤差分散 t <- sapply(a:2, # t 値を計算 function(p) (func(cumsum(rev(sum.i[2:p]))/cumsum(rev(n.i[2:p]))) - mean.i[1])/sqrt(v.e*(1/n.i[1]+1/n.i[p]))) names(t) <- c(a:2) # 名前を付ける return(list(phi.e=phi.e, t=if (method == "down") -t else t)) } 使用例 data <- c( 415, 380, 391, 413, 372, 359, 401, # 第 1 群(対照群)のデータ,7 例 387, 378, 359, 391, 362, 351, 348, # 第 2 群(処理群)のデータ,7 例 357, 379, 401, 412, 392, 356, 366, # 第 3 群(処理群)のデータ,7 例 361, 351, 378, 332, 318, 344, 315, # 第 4 群(処理群)のデータ,7 例 299, 308, 323, 351, 311, 285, 297 # 第 5 群(処理群)のデータ,7 例 ) group <- rep(0:4, each=7) Williams(data, group, method="down") 出力結果例 > Williams(data, group, method="down") $phi.e [1] 30 $t 5 4 3 2 7.076038 4.217674 1.416478 1.969095 参考文献 永田靖・吉田道弘(1997)「統計的多重比較法の基礎」サイエンティスト社