R_lsa のバックアップ(No.1) - アールメカブ

アールメカブ


R_lsa のバックアップ(No.1)


Rの備忘録

豊田秀樹編『データマイニング入門』第9章 p.277のバイプロット 以下でほぼ同じグラフができるでしょう.

>(TD <- matrix(c(0, 0, 2, 0,
              1, 0, 0, 0,
              0, 1, 0, 0,
              1, 0, 0, 0,
              1, 1, 1, 0,
              1, 1, 1, 0,
              1, 0, 0, 1,
              0, 0, 1, 1,
              0, 0, 0, 1,
              0, 0, 0, 1,
              0, 0, 0, 1), ncol = 4, byrow = TRUE))
> colnames(TD) <- c("病院","医院","クリニック","少年")
> rownames(TD) <- c("医師","医療","病気","患者","診察",
                 "治療","収容","施設","矯正","送致","裁判")
> TD.svd <- svd(TD)
> TD.svd$u
> TD2 <- TD.svd$u[, 1:2] %*%  diag(TD.svd$d[1:2]) %*%  
                   t(TD.svd$v[,1:2] )
> # 本当は min() と max() を使って調整すべき
> plot(c(-2.8, .6), c(-0.6, 3.2), type = "n")
> text(TD.svd$u[, 1:2]%*% diag(TD.svd$d[1:2]), rownames(TD))
> text( t( diag(TD.svd$d[1:2]) %*% t(TD.svd$v[, 1:2])) ,  
         colnames(TD2) )
> # # # # # lsa パッケージを使うなら
> TD2 <- lsa(TD)
> plot(c(-2.8, .6), c(-0.6, 3.2), type = "n")
> text(TD2$tk %*% diag(TD2$sk), rownames(TD2$tk) )
> text( t(diag(TD2$sk) %*% t(TD2$dk)) , rownames(TD2$dk) )