1. 程式人生 > >R語言視覺化作圖筆記(2.1)

R語言視覺化作圖筆記(2.1)

MDS 的 Shepard plot

比較多維度資料分析(multidimensional scaling,MDS)的好壞可用Shepard plot【不知道怎麼翻譯】展示。作圖後,折線越趨近於一條平滑的斜線表明MDS降維的效果越好。
R程式碼:

library(MASS)
library(plotly)
# 由於資料不好,只取iris的前15位,取多了會有距離位0的情況
data <- scale(iris[1:15,1:4]) 
d <- dist(data, method = "minkowski", p=2)     # 就是歐式距離
res <- isoMDS(d, k=2)                    # 目標維度為二
coords <- res$points                   # 降下後的二維座標

sh <- Shepard(d, coords)
delta <-as.numeric(d)                         # 高維距離
D<- dist(coords, method = "euclidean")    # 低維距離

n <- nrow(coords)                           # 用於顯示點資訊
index <- matrix(1:n, nrow=n, ncol=n)
index1 <- as.numeric(index[lower.tri(index)])
index <- matrix(1:n, nrow=n, ncol=n, byrow = T)
index2 <- as.numeric(index[lower.tri(index)])

plot_ly()%>%
  add_markers(x=~delta, y=~D, hoverinfo = 'text',
              text = ~paste('Object 1: ', rownames(data)[index1],
                            '<br> Object 2: ', rownames(data)[index2]))%>%
  add_lines(x=~sh$x, y=~sh$yf, showlegend=F)

圖中每一個點代表這每兩個觀察量的距離,橫座標使高維距離,縱座標是低維距離。理論上,低維距離越大,高維也會越大,反之亦然。圖中離折線非常遠的點可認為是奇異點。
在這裡插入圖片描述