如何在“星坐標”中繪製 5D 數據集?
我正在閱讀論文“星坐標:具有統一維度處理的多維可視化技術”並嘗試繪製我的數據。
假設我有,一個五維數據點,點數是通過論文中解釋的公式計算的。
星坐標的基本思想是將坐標軸排列在二維平面上的圓上,軸之間的角度相等(初始),原點位於圓的中心(圖 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
的默認雙標圖看起來很糟糕,但這裡是為了比較。為了使其更好地匹配星坐標圖,您需要置換同意此雙圖中顯示的軸序列。