テューキーの方法による多重比較     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

Made with Macintosh