Self-Study

如何在“星坐標”中繪製 5D 數據集?

  • May 3, 2013

我正在閱讀論文“星坐標:具有統一維度處理的多維可視化技術”並嘗試繪製我的數據。

假設我有,一個五維數據點,點數是通過論文中解釋的公式計算的。

星坐標的基本思想是將坐標軸排列在二維平面上的圓上,軸之間的角度相等(初始),原點位於圓的中心(圖 1)。最初,所有軸具有相同的長度。數據點被縮放到軸的長度,最小映射到原點,最大值映射到軸的另一端。相應地計算單位向量。…

這只是將典型的 2d 和 3d 散點圖擴展到更高維度的標準化。

我很難理解這個想法。我如何繪製它?主要問題是我無法理解論文中的公式。

“星坐標”旨在以交互方式修改,從默認值開始。這個答案顯示瞭如何創建默認值;交互式修改是一個編程細節。

數據被認為是向量的集合在. 這些首先在每個坐標內分別歸一化,線性變換數據進入區間. 當然,這是通過首先從每個元素中減去它們的最小值並除以範圍來完成的。調用標準化數據.

通常的基礎是向量的集合有一個在裡面地方。在這個基礎上,. “星坐標投影”選擇一組不同的單位向量在和地圖到. 這定義了一個線性變換到. 該地圖適用於——它只是一個矩陣乘法——創建一個二維點雲,描繪為一個散點圖。單位向量繪製並標記以供參考。

(交互式版本將允許用戶旋轉每個個人。)


為了說明這一點,這裡有一個R應用於汽車性能特徵數據集的實現。首先讓我們獲取數據:

library(MASS)
x <- subset(Cars93, 
      select=c(Price, MPG.city, Horsepower, Fuel.tank.capacity, Turn.circle))

第一步是規範化數據:

x.range <- apply(x, 2, range)
z <- t((t(x) - x.range[1,]) / (x.range[2,] - x.range[1,]))

默認情況下,讓我們創建等間距單位向量. 這些決定了prj應用於的投影:

d <- dim(z)[2] # Dimensions
prj <- t(sapply((1:d)/d, function(i) c(cos(2*pi*i), sin(2*pi*i))))
star <- z %*% prj

就是這樣——我們都準備好了。它被初始化為數據點、坐標軸及其標籤提供空間:

plot(rbind(apply(star, 2, range), apply(prj*1.25, 2, range)), 
    type="n", bty="n", xaxt="n", yaxt="n",
    main="Cars 93", xlab="", ylab="")

這是繪圖本身,每個元素都有一條線:軸、標籤和點:

tmp <- apply(prj, 1, function(v) lines(rbind(c(0,0), v)))
text(prj * 1.1, labels=colnames(z), cex=0.8, col="Gray")
points(star, pch=19, col="Red"); points(star, col="0x200000")

星圖


要理解此圖,將其與傳統方法散點圖矩陣進行比較可能會有所幫助:

pairs(x)

散點圖矩陣


基於相關性的主成分分析 (PCA) 產生幾乎相同的結果。

(pca <- princomp(x, cor=TRUE))
pca$loadings[,1]
biplot(pca, choices=2:3)

第一個命令的輸出是

Standard deviations:
  Comp.1    Comp.2    Comp.3    Comp.4    Comp.5 
1.8999932 0.8304711 0.5750447 0.4399687 0.4196363 

大部分方差由第一個組成部分(1.9 對 0.83 或更小)解釋。該組件上的負載大小幾乎相等,如第二個命令的輸出所示:

    Price           MPG.city         Horsepower Fuel.tank.capacity        Turn.circle 
0.4202798         -0.4668682          0.4640081          0.4758205          0.4045867 

這表明——在這種情況下——默認的星坐標圖沿著第一個主成分投影,因此基本上顯示了第二個到第五個 PC 的一些二維組合。因此,它與 PCA 結果(或相關因素分析)相比的價值值得懷疑;主要優點可能在於建議的交互性。

雖然R的默認雙標圖看起來很糟糕,但這裡是為了比較。為了使其更好地匹配星坐標圖,您需要置換同意此雙圖中顯示的軸序列。

雙標圖

引用自:https://stats.stackexchange.com/questions/58001

comments powered by Disqus