シャーリー・ウィリアムズの方法による多重比較     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

Made with Macintosh