R_lsa - RとLinuxと...

RとLinuxと...


R_lsa

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) )
 
Link: Rの備忘録(1823d)
Last-modified: 2009-01-09 (金) 13:05:54 (3627d)