クラスカル・ウォリス検定(分割表データから)     Last modified: Aug 21, 2009

目的

分割表の形式にまとめられた二次データに基づいてクラスカル・ウォリス検定を行う。
実際には,分割表を原データに展開して,R が用意している kruskal.test を呼ぶ。

使用法

kw3.test(d)		R の kruskal.test を呼ぶ
または
kw4.test(d)		自前で計算する

引数

d	分割表
	1行目に第一群,2行目に第二群...等の順で入力する(使用例参照)

ソース

インストールは,以下の 1 行をコピーし,R コンソールにペーストする
source("http://aoki2.si.gunma-u.ac.jp/R/src/kw3_test.R", encoding="euc-jp")

# クラスカル・ウォリス検定(分割表データから)
kw3.test <- function(d)              # 分割表
{
        v <- rep(col(d), d)  # 測定値を再現
        g <- rep(row(d), d)  # 群変数を再現
        kruskal.test(v, g)      # R にある関数を呼び出す
}


インストールは,以下の 1 行をコピーし,R コンソールにペーストする
source("http://aoki2.si.gunma-u.ac.jp/R/src/kw4_test.R", encoding="euc-jp")

# 集計表を与えて,クラスカル・ウォリス検定を行う
kw4.test <- function(tbl)                            # 集計表(合計欄を含まない)
{

        method <- "集計表を与えてクラスカル・ウォリス検定"
        data.name <- deparse(substitute(tbl))
        nc <- ncol(tbl)                                      # 表頭に来る変数(順序変数)がとるカテゴリー数
        ni <- rowSums(tbl)                           # 表側にくる変数が表す各群のデータ数
        n <- sum(tbl)                                        # 総合計
        tj <- colSums(tbl)                           # 各カテゴリーに該当するデータ数
        rj <- c(0, cumsum(tj)[-nc])+(tj+1)/2         # 各カテゴリーに属するデータに与えられる順位
        Sx <- 12*sum((tbl%*%rj)^2/ni)/(n*(n+1))-3*(n+1)      # 検定統計量
        S0 <- Sx/(1-sum(tj^3-tj)/(n^3-n))            # 同順位を修正した検定統計量(カイ二乗分布に従う)
        df <- nrow(tbl)-1                            # 自由度
        P <- pchisq(S0, df, lower.tail=FALSE)                # P 値
        return(structure(list(statistic=c("Kruskal-Wallis chi-squared"=S0), parameter=c(df=df), p.value=P,
                method=method, data.name=data.name), class="htest"))
}


使用例

       カテゴリー1 カテゴリー2 カテゴリー3
第1群        10           5           1
第2群         4           7           3
第3群         2           4           9

のような分割表は以下のように表現する

d <- matrix(c(10, 5, 1,  4, 7, 3,  2, 4, 9), byrow=TRUE, ncol=3)

出力結果例

> d <- matrix(c(10, 5, 1,  4, 7, 3,  2, 4, 9), byrow=TRUE, ncol=3)

> kw3.test(d)

	Kruskal-Wallis rank sum test

data:  v and g 
Kruskal-Wallis chi-squared = 12.4173, df = 2, p-value = 0.002012

> kw4.test(d)

	集計表を与えてクラスカル・ウォリス検定

data:  d 
Kruskal-Wallis chi-squared = 12.4173, df = 2, p-value = 0.002012

・ 解説ページ


・ 直前のページへ戻る  ・ E-mail to Shigenobu AOKI

Made with Macintosh