R語言視覺化作圖筆記(2.1)
阿新 • • 發佈:2018-11-04
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)
圖中每一個點代表這每兩個觀察量的距離,橫座標使高維距離,縱座標是低維距離。理論上,低維距離越大,高維也會越大,反之亦然。圖中離折線非常遠的點可認為是奇異點。