テューキーの方法による多重比較 Last modified: Aug 03, 2009
目的
テューキーの方法による多重比較を行う。
Games-Howell 法も選択できる。
R の TukeyHSD や pairwise.t.test 関数も参照するとよい。
使用法
tukey(data, group, method=c("Tukey", "Games-Howell"))
引数
data 観察値ベクトル
group 群変数ベクトル
method "Tukey" のとき Tukey 法(デフォルト)
"Games-Howell" のとき Games-Howell 法
ソース
インストールは,以下の 1 行をコピーし,R コンソールにペーストする
source("http://aoki2.si.gunma-u.ac.jp/R/src/tukey.R", encoding="euc-jp")
# Tukey の方法による多重比較
# Games-Howell の方法も選択できるように拡張 2009/08/03
tukey <- function( data, # 観察値ベクトル
group, # 群変数ベクトル
method=c("Tukey", "Games-Howell")) # 手法の選択
{
OK <- complete.cases(data, group) # 欠損値を持つケースを除く
data <- data[OK]
group <- factor(group[OK])
n <- tapply(data, group, length) # 各群のケース数
a <- length(n) # 群の数
phi.e <- sum(n)-a # 誤差分散(群内不偏分散)の自由度
Mean <- tapply(data, group, mean) # 各群の平均値
Variance <- tapply(data, group, var) # 各群の不偏分散
result1 <- cbind(n, Mean, Variance) # 各群の統計量
rownames(result1) <- paste("Group", 1:a, sep="")
method <- match.arg(method)
if (method == "Tukey") { # Tukey の方法
v.e <- sum((n-1)*Variance)/phi.e # 誤差分散(群内不偏分散)
t <- combn(a, 2, function(ij) # 対比較
abs(diff(Mean[ij]))/sqrt(v.e*sum(1/n[ij])) )
p <- ptukey(t*sqrt(2), a, phi.e, lower.tail=FALSE) # 有意確率を計算する
Tukey <- cbind(t, p) # 対比較の結果
rownames(Tukey) <- combn(a, 2, paste, collapse=":")
return(list(result1=result1, Tukey=Tukey, phi=phi.e, v=v.e))
}
else { # Games-Howell の方法
t.df <- combn(a, 2, function(ij) { # 対比較
t <- abs(diff(Mean[ij]))/sqrt(sum(Variance[ij]/n[ij]))
df <- sum(Variance[ij]/n[ij])^2/sum((Variance[ij]/n[ij])^2/(n[ij]-1))
return(c(t, df))} )
t <- t.df[1,]
df <- t.df[2,]
p <- ptukey(t*sqrt(2), a, df, lower.tail=FALSE) # 有意確率を計算する
Games.Howell <- cbind(t, df, p) # 対比較の結果
rownames(Games.Howell) <- combn(a, 2, paste, collapse=":")
return(list(result1=result1, Games.Howell=Games.Howell))
}
}
使用例
data <- c(
14, 15, 14, 16, 15, 17, 17, # 第 1 群のデータ,7 例
17, 16, 17, 16, 15, 18, 19, 15, # 第 2 群のデータ,8 例
18, 19, 20, 19, 17, 17, # 第 3 群のデータ,6 例
20, 21, 19, 20, 19, 22, 20, # 第 4 群のデータ,7 例
19, 20, 19, 17, 17, 17, 18 # 第 5 群のデータ,7 例
)
group <- rep(1:5, c(7, 8, 6, 7, 7)) # 群を表す数値
tukey(data, group) # Tukey 法
tukey(data, group, method="G") # Games-Howell 法
出力結果例
> tukey(data, group)
$result1
n Mean Variance
Group1 7 15.42857 1.619048
Group2 8 16.62500 1.982143
Group3 6 18.33333 1.466667
Group4 7 20.14286 1.142857
Group5 7 18.14286 1.476190
$Tukey
t p
1:2 1.854090 3.630248e-01
1:3 4.187543 1.975521e-03
1:4 7.073685 6.970838e-07
1:5 4.072727 2.687670e-03
2:3 2.537026 1.090560e-01
2:4 5.451580 6.039780e-05
2:5 2.352204 1.567591e-01
3:4 2.608633 9.414444e-02
3:5 0.274593 9.986795e-01
4:5 3.000957 3.978055e-02
$phi
[1] 30
$v
[1] 1.554563
> tukey(data, group, method="G")
$result1
n Mean Variance
Group1 7 15.42857 1.619048
Group2 8 16.62500 1.982143
Group3 6 18.33333 1.466667
Group4 7 20.14286 1.142857
Group5 7 18.14286 1.476190
$Games.Howell
t df p
1:2 1.7285886 12.97639 4.512468e-01
1:3 4.2114058 10.84628 1.043077e-02
1:4 7.5051706 11.65358 6.808586e-05
1:5 4.0818548 11.97449 1.083753e-02
2:3 2.4349855 11.69245 1.728503e-01
2:4 5.4870607 12.78706 8.687554e-04
2:5 2.2412441 12.99984 2.249201e-01
3:4 2.8339276 10.14001 1.002291e-01
3:5 0.2822787 10.70743 9.983772e-01
4:5 3.2696956 11.80872 4.412294e-02
解説ページ
直前のページへ戻る
E-mail to Shigenobu AOKI