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