★ R -- 主座標分析 ★

 419 R -- 主座標分析  青木繁伸  2002/01/28 (月) 23:13


419. R -- 主座標分析  青木繁伸  2002/01/28 (月) 23:13
princo <- function(s)
{
    n <- nrow(s)
    m <- apply(s, 2, sum)/n
    h <- s+sum(s)/n^2-outer(m, m, "+")
    res <- eigen(h)
    res$vectors <- res$vectors*matrix(sqrt(res$values), n, n, byrow=TRUE)
    colnames(res$vectors) <- names(res$values) <- paste("Axis", 1:n)
    rownames(res$vectors) <- paste("Object", 1:n)
    res$values <- res$values[res$values > 1e-5]
    ax <- length(res$values)
    res$vectors <- res$vectors[,1:ax]
    if (ax > 2) {
        plot(res$vectors[,1:2])
        abline(v=0, h=0)
        text(res$vectors[,1], res$vectors[,2], 1:n, pos=4, offset=.2)
    }
    res
}

使用例

s <- matrix(c(
0, -1, -2, -3,
-1, 0, -3, -4,
-2, -3, 0, -1,
-3, -4, -1, 0
), byrow=TRUE, ncol=4)

princo(s)

結果

$values
  Axis 1   Axis 2   Axis 3 
5.236068 1.000000 0.763932 

$vectors
             Axis 1 Axis 2     Axis 3
Object 1 -0.8506508   -0.5  0.5257311
Object 2 -1.3763819    0.5 -0.3249197
Object 3  0.8506508   -0.5 -0.5257311
Object 4  1.3763819    0.5  0.3249197

このほか,対象の二次元プロット


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