目的 ケンドールの一致度係数を求める 使用法 kendall.w(x) 引数 x データ行列(行がケース,列が変数) ソース インストールは,以下の 1 行をコピーし,R コンソールにペーストする source("http://aoki2.si.gunma-u.ac.jp/R/src/kendall_w.R", encoding="euc-jp") # ケンドールの一致度係数 kendall.w <- function(x) # データ行列 { method <- "ケンドールの一致度係数" data.name <- deparse(substitute(x)) x <- subset(x, complete.cases(x)) # 欠損値を持つケースを除く nv <- ncol(x) # データ行列の列数(変数の個数) nc <- nrow(x) # データ行列の行数(ケース数) o <- apply(x, 2, rank) # 各列に rank 関数を適用(列ごとに順位を付ける) t <- apply(o, 2, table) # 同順位を取る個数 s1 <- rowSums(o) tie <- sapply(t, function(i) sum(i^3-i)) # 同順位の調整 w <- 12*sum((s1-sum(s1)/nc)^2)/(nv^2*(nc^3-nc) # ケンドールの W -nv*sum(tie)) chi <- nv*(nc-1)*w # 検定統計量(カイ二乗分布に従う) p <- pchisq(chi, nc-1, lower.tail=FALSE) # P 値 return(structure(list(statistic=c("Kendall W"=w, "chi sq."=chi), parameter=c(df=nc-1), p.value=p, method=method, data.name=data.name), class="htest")) } 使用例 > x <- matrix(c( # 6ケース,3変数のデータ行列例(ファイルから読んでも良い) + 6, 6, 2, + 2, 5, 4, + 1, 5, 5, + 4, 2, 3, + 6, 3, 2, + 5, 4, 4 + ), byrow=TRUE, ncol=3) > kendall.w(x) ケンドールの一致度係数 data: x Kendall W = 0.1518, chi sq. = 2.2772, df = 5, p-value = 0.8096