目的 シャーリー・ウィリアムズの方法による多重比較を行う。 使用法 Shirley.Williams(data, group, method=c("up", "down")) 引数 data データベクトル group 群を表すベクトル method "up", "down" のいずれか。 ソース インストールは,以下の 1 行をコピーし,R コンソールにペーストする source("http://aoki2.si.gunma-u.ac.jp/R/src/Shirley-Williams.R", encoding="euc-jp") # シャーリー・ウィリアムズの方法による多重比較 Shirley.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 # method により,後で使う関数を選ぶ ni <- table(group) # 各群のデータ数 a <- length(ni) # 群の数 s <- numeric(a-1) for (p in a:2) { select <- 1 <= group & group <= p # 分析対象にするケースの選択・非選択ベクトル r <- rank(data[select]) # 順位付け g <- group[select] # 分析対象とされたデータの群変数データ M <- func(cumsum(rev(tapply(r, g, sum))[-p])/cumsum(rev(ni[2:p]))) N <- sum(ni[1:p]) V <- (sum(r^2)-N*(N+1)^2/4)/(N-1) t <- (M-sum(r[group == 1])/ni[1])/sqrt(V*(1/ni[p]+1/ni[1])) s[p-1] <- ifelse(method == "down", -t, t) } t <- rev(s) names(t) <- a:2 return(t) } 使用例 data <- c( 13, 23, 8, 17, 25, 34, 18, 26, 10, 28, 18, 21, # 第 1 群(対照群)のデータ,12 例 26, 22, 30, 38, 15, 24, 18, 11, 21, 30, 31, 23, # 第 2 群(処理群)のデータ,12 例 22, 10, 29, 37, 22, 13, 29, 28, 21, 16, 21, 26, # 第 3 群(処理群)のデータ,12 例 26, 34, 30, 45, 17, 19, 27, 18, 36, 24, 25, 31 # 第 4 群(処理群)のデータ,12 例 ) group <- rep(1:4, each=12) # 群を表す数値 Shirley.Williams(data, group, method="up") 出力結果例 > Shirley.Williams(data, group, method="up") 4 3 2 2.189899 1.091791 1.243468 参考文献 永田靖・吉田道弘(1997)「統計的多重比較法の基礎」サイエンティスト社