370 R -- クラスカル・ウォリス検定(多重比較を追加) 青木繁伸 2002/01/25 (金) 20:20
370. R -- クラスカル・ウォリス検定(多重比較を追加) 青木繁伸 2002/01/25 (金) 20:20 |
kw.test <- function(data, cp1, cp2) { r <- rank(x <- data[,cp1]) n = sum(ni<- table(g <- data[,cp2])) Ri <- tapply(r, g, sum) S <- 12*sum(Ri^2/ni)/(n*(n+1))-3*(n+1) if (length(unique(x)) != n) { tie <- table(x) S <- S/(1-sum(tie^3-tie)/(n^3-n)) } df <- length(ni)-1 p <- pchisq(S, df, low=F) a.m <- (n+1)/2 R.m <- Ri/ni V <- sum((r-a.m)^2)/(n-1) comp <- outer(R.m, R.m, function(x, y) { (x-y)^2 })/outer(ni, ni, function(n1, n2) { (1/n1+1/n2)*V }) pm <- pchisq(comp, df, lower=F) result <- c(S, df, p) names(result) <- c("Statistics(Chi-sq. value)", "d.f.", "P value") list(result=result, comparison=comp, pvalue=pm) } # 使用例(データ) data <- matrix(c( 3.42, 1, 3.84, 1, 3.96, 1, 3.76, 1, 3.17, 2, 3.63, 2, 3.47, 2, 3.44, 2, 3.39, 2, 3.64, 3, 3.72, 3, 3.91, 3 ), byrow=TRUE, ncol=2) # 使用例 kw.test(data, 1, 2) 第一引数はデータ行列 第二引数は測定値のある列番号 第三引数はグループ識別値のある列番号 $result (検定結果) Statistics(Chi-sq. value) d.f. P value 5.54871795 2.00000000 0.06238946 $comparison (対比較の統計量) 1 2 3 1 0.000000000 4.104274 0.003663004 2 4.104273504 0.000000 3.702564103 3 0.003663004 3.702564 0.000000000 $pvalue (対比較のP値) 1 2 3 1 1.0000000 0.1284601 0.9981702 2 0.1284601 1.0000000 0.1570357 3 0.9981702 0.1570357 1.0000000 |
● 「統計学関連なんでもあり」の過去ログ--- 017 の目次へジャンプ
● 「統計学関連なんでもあり」の目次へジャンプ
● 直前のページへ戻る