シャーリー・ウィリアムズの方法による多重比較 Last modified: Nov 05, 2012
目的
シャーリー・ウィリアムズの方法による多重比較を行う。
使用法
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)「統計的多重比較法の基礎」サイエンティスト社
直前のページへ戻る
E-mail to Shigenobu AOKI