Định tỉ lệ đa chiều (Multidimensional Scaling)

Phân phối Xác suất Đa biến trong R

Surajit Ray

Professor, University of Glasgow

Multidimensional Scaling là gì?

  • MDS cổ điển (classical) hay phân tích tọa độ chính
    • Ma trận khoảng cách INPUT
    • OUTPUT Tập điểm trong không gian cho trước sao cho khoảng cách gần khớp khoảng cách INPUT
    • Hàm cmdscale()
      cmdscale(d, k = 2, ...)
      
  • Non-metrics scaling
    • isoMDS()
    • sammon()
Phân phối Xác suất Đa biến trong R

Ví dụ khoảng cách giữa các thành phố Mỹ

data("UScitiesD")
UScitiesD
               Atlanta Chicago Denver Houston LosAngeles Miami NewYork SanFrancisco Seattle
Chicago           587                                                                     
Denver           1212     920                                                             
Houston           701     940    879                                                      
LosAngeles       1936    1745    831    1374                                              
Miami             604    1188   1726     968       2339                                   
NewYork           748     713   1631    1420       2451  1092                             
SanFrancisco     2139    1858    949    1645        347  2594    2571                     
Seattle          2182    1737   1021    1891        959  2734    2408          678        
Washington.DC     543     597   1494    1220       2300   923     205         2442    2329
Phân phối Xác suất Đa biến trong R

MDS trên bộ dữ liệu khoảng cách thành phố Mỹ

usloc <- cmdscale(UScitiesD)
usloc
               [,1]   [,2]
Atlanta        -719  143.0
Chicago        -382 -340.8
Denver          482  -25.3
Houston        -161  572.8
LosAngeles     1204  390.1
Miami         -1134  581.9
NewYork       -1072 -519.0
SanFrancisco   1421  112.6
Seattle        1342 -579.7
Washington.DC  -980 -335.5
ggplot(data = data.frame(usloc), aes(x = X1, y = X2, label = rownames(usloc))) + 
    geom_text()
Phân phối Xác suất Đa biến trong R

Kết quả MDS cho các thành phố Mỹ

                      Biểu đồ đầu ra từ cmdscale

                                       Biểu đồ sau khi quay

Phân phối Xác suất Đa biến trong R
cars.dist <- dist(mtcars)
cars.mds <- cmdscale(cars.dist, k = 2)
cars.mds <- data.frame(cars.mds)
ggplot(data = cars.mds, aes(x = X1, y = X2, label = rownames(cars.mds))) + geom_text()

Phân phối Xác suất Đa biến trong R

MDS trong không gian nhiều hơn hai chiều

cars.dist <- dist(mtcars)

cmds3 <- data.frame(cmdscale(cars.dist, k = 3))
scatterplot3d(cmds3, type = "h", pch = 19, lty.hplot = 2)

Phân phối Xác suất Đa biến trong R

MDS trong không gian nhiều hơn hai chiều

cars.dist <- dist(mtcars)

cmds3 <- data.frame(cmdscale(cars.dist, k = 3))
scatterplot3d(cmds3, type = "h", pch = 19, lty.hplot = 2, color = mtcars$cyl)

Phân phối Xác suất Đa biến trong R

Giờ hãy thử dùng MDS!

Phân phối Xác suất Đa biến trong R

Preparing Video For Download...