★ R -- フリードマン検定(対比較つき) ★

 384 R -- フリードマン検定(対比較つき)  青木繁伸  2002/01/26 (土) 20:55


384. R -- フリードマン検定(対比較つき)  青木繁伸  2002/01/26 (土) 20:55
my.friedman <- function(x)
{
    r <- nrow(x)
    df <- (c <- ncol(x))-1
    R <- apply(o <- t(apply(x, 1, rank)), 2, sum)
    chi <- 12*sum(R^2)/(r*c*(c+1))-3*r*(c+1)
    p <- pchisq(chi, df, lower=F)
    res <- c(chi, df, p)
    names(res) <- c("Statistics", "d.f.", "P value")
    
    R.m = R/r
    V <- sum((o-(c+1)/2)^2)
    S <- outer(R.m, R.m, function(r1, r2) { r^2*df*(r1-r2)^2/(2*V) })
    p <- pchisq(S, df, lower=F)
    colnames(p) <- rownames(p) <- colnames(S) <- rownames(S) <- paste("Group", 1:c)
    
    list(Result=res, Statistics=S, "P value"=p)
}

# 使用例
x <- matrix(c(
5,60,35,62,76,
24,44,74,63,76,
56,57,70,74,79,
44,51,55,23,84,
8,68,50,24,64,
32,66,45,63,46,
25,38,70,58,77,
48,24,40,80,72
), byrow=TRUE, ncol=5)

my.friedman(x)

# 結果

# $Result
#   Statistics         d.f.      P value 
# 15.900000000  4.000000000  0.003156326 

# $Statistics
#         Group 1 Group 2 Group 3 Group 4 Group 5
# Group 1   0.000   3.600   4.225   5.625  15.625
# Group 2   3.600   0.000   0.025   0.225   4.225
# Group 3   4.225   0.025   0.000   0.100   3.600
# Group 4   5.625   0.225   0.100   0.000   2.500
# Group 5  15.625   4.225   3.600   2.500   0.000

# $"P value"
#             Group 1   Group 2   Group 3   Group 4     Group 5
# Group 1 1.000000000 0.4628369 0.3764110 0.2289584 0.003565936
# Group 2 0.462836887 1.0000000 0.9999225 0.9941270 0.376410966
# Group 3 0.376410966 0.9999225 1.0000000 0.9987909 0.462836887
# Group 4 0.228958421 0.9941270 0.9987909 1.0000000 0.644635793
# Group 5 0.003565936 0.3764110 0.4628369 0.6446358 1.000000000


● 「統計学関連なんでもあり」の過去ログ--- 017 の目次へジャンプ
● 「統計学関連なんでもあり」の目次へジャンプ
● 直前のページへ戻る