2013-06-24 13 views
7

Czy istnieje pakiet do konwersji macierzy odległości na zbiór współrzędnych? Przeszedłem przez poniższe pytanie. Miałem nadzieję, że będzie na to pakiet.Współrzędne z macierzy odległości w R

Finding the coordinates of points from distance matrix

Rozważałam Sammons Projekcja na to, ale z tego co rozumiem, to jest optymalizator i dostaje optymalne rozwiązanie. Myślę, że powinien istnieć algorytm, aby uzyskać unikalne rozwiązanie.

+1

nie jest unikalnym rozwiązaniem tego problemu od ciebie może obracać twój zestaw danych bez wpływu na matrycę odległości. – Backlin

Odpowiedz

7

skalowanie wielowymiarowe (MDS) dąży do projektu macierz odległości swoich danych do niższego wymiaru k, gdzie pożądany k = 2 w Twoim przypadku, starając się zachować odległości między punktami danych:

# Multidimensional scaling 
library(MASS) 
set.seed(1) 
labels <- as.factor(sample(LETTERS[1:5], 100, replace=TRUE)) 
dat <- mvrnorm(n=100, mu = c(1:4), Sigma=matrix(1:16, ncol=4)) + as.numeric(labels)^2 
#> dim(dat) 
#[1] 100 4 

# Euclidean distance matrix (100x100) 
d <- dist(dat) 

# Classical MDS for distance matrix d 
# http://en.wikipedia.org/wiki/Multidimensional_scaling 
mds <- cmdscale(d, k = 2) 
x <- mds[,1] 
y <- mds[,2] 

plot(x,y, col=rainbow(5)[as.numeric(labels)], pch=16, main="MDS for object 'dat'") 
legend("topright", legend=unique(labels), col=rainbow(5)[unique(as.numeric(labels))], pch=16) 

Dalsze czytanie: https://stats.stackexchange.com/questions/14002/whats-the-difference-between-principal-components-analysis-and-multidimensional

mds projection

+0

Dzięki za wspaniałą odpowiedź. Ale jak już pisałem powyżej, czy jest to dokładne rozwiązanie, czy tylko kolejny optymalizator? – Avinash

+1

Jest to problem wartości własnej (jak w [tej odpowiedzi] (http://stackoverflow.com/a/17177833/1129973)) , więc może być postrzegany jako optymalizacja. Jeśli istnieje dokładne rozwiązanie, zwraca dokładne rozwiązanie, i jeśli nie ma dokładnego rozwiązania, nie zawiedzie, ale podaje przybliżone rozwiązanie. –

2

Wyszukaj algorytm o nazwie Multi-Dimensional Scaling (MDS). Implementacja w R jest funkcją cmdscale z pakietu stats:

skalowania wielowymiarowego trwa zbiór odmienności i zwraca zbiór punktów takich, że odległości między punktami są w przybliżeniu równe odmienności.

dokumentacja zawiera także przykład, w którym matryca odległość jest włączony do obu wektorów x i y współrzędnych, a następnie wykreślić.

+0

Czy to nie jest kolejna optymalizacja? Algorytm zdefiniowany w drugim pytaniu, które łączyłem, ma dla mnie sens. Czy MDS robi to samo? Jak podkreślono, nie ma wyjątkowego rozwiązania, ale ma ono rozwiązanie, więc nie sądzę, aby w celu dokładnego rozwiązania było potrzebne przybliżone/optymalne rozwiązanie. Chyba że całkowicie nie rozumiem MDS, proszę, wybacz mi moją ignorancję. – Avinash