スティール(Steel)の方法による多重比較 Last modified: Aug 02, 2004
目的
スティール(Steel)の方法による多重比較を行う。
使用法
Steel(data, group)
引数
data データベクトル
group 群変数ベクトル
ソース
インストールは,以下の 1 行をコピーし,R コンソールにペーストする
source("http://aoki2.si.gunma-u.ac.jp/R/src/Steel.R", encoding="euc-jp")
# スティール(Steel)の方法による多重比較
Steel <- function( data, # データベクトル
group) # 群変数ベクトル
{
get.rho <- function(ni) # ρを計算する
{
k <- length(ni)
rho <- outer(ni, ni, function(x, y) { sqrt(x/(x+ni[1])*y/(y+ni[1])) })
diag(rho) <- 0
sum(rho[-1, -1])/(k-2)/(k-1)
}
OK <- complete.cases(data, group) # 欠損値を持つケースを除く
data <- data[OK]
group <- factor(group[OK]) # 群変数データを factor に変関る
ni <- table(group) # 各群のデータ数
a <- length(ni) # 群の数
control <- data[group == 1] # 対照群のデータを取り出す
n1 <- length(control) # 対照群のデータ数
t <- numeric(a)
rho <- ifelse(sum(n1 == ni) == a, 0.5, get.rho(ni)) # ρを決める
for (i in 2:a) {
r <- rank(c(control, data[group == i])) # 対照群と対照群をまとめて順位をつける
R <- sum(r[1:n1]) # 検定統計量
N <- n1+ni[i] # 対照群と対照群のデータ数の合計
E <- n1*(N+1)/2 # 検定統計量の期待値
V <- n1*ni[i]/N/(N-1)*(sum(r^2)-N*(N+1)^2/4) # 検定統計量の分散
t[i] <- abs(R-E)/sqrt(V) # 検定統計量(t 分布による漸近近似)
}
result <- cbind(t, rho)[-1,] # 結果をまとめる
rownames(result) <- paste(1, 2:a, sep=":")
return(result)
}
使用例
data <- c(
50, 55, 65, 63, 60, 68, 69, 60, 52, 49, # 第 1 群(対照群)のデータ,10 例
80, 86, 74, 66, 79, 81, 70, 62, 60, 72, # 第 2 群(処理群)のデータ,10 例
42, 48, 58, 63, 62, 55, 63, 60, 53, 45 # 第 3 群(処理群)のデータ,10 例
)
group <- rep(1:3, each=10) # 群を表す数値
Steel(data, group)
出力結果例
> Steel(data, group)
t rho
1:2 2.952566 0.5
1:3 1.175674 0.5
参考文献
永田靖・吉田道弘(1997)「統計的多重比較法の基礎」サイエンティスト社
直前のページへ戻る
E-mail to Shigenobu AOKI