Multidimensionale Skalierung in R
R bietet Funktionen sowohl für die klassische als auch für die nicht-metrische multidimensionale Skalierung. Angenommen, wir haben N Objekte, die an p numerischen Variablen gemessen werden. Wir wollen die Entfernungen zwischen den Objekten auf eine einfache (und visuelle) Art und Weise darstellen (d.h. in einem weniger k-dimensionalen Raum).
Klassisches MDS
Du kannst eine klassische MDS mit der Funktion cmdscale( ) durchführen.
# Classical MDS
# N rows (objects) x p columns (variables)
# each row identified by a unique row name
d <- dist(mydata) # euclidean distances between the rows
fit <- cmdscale(d,eig=TRUE, k=2) # k is the number of dim
fit # view results
# plot solution
x <- fit$points[,1]
y <- fit$points[,2]
plot(x, y, xlab="Coordinate 1", ylab="Coordinate 2",
main="Metric MDS", type="n")
text(x, y, labels = row.names(mydata), cex=.7)
Nonmetric MDS
Die nicht-metrische MDS wird mit der Funktion isoMDS( ) im MASS-Paket durchgeführt.
# Nonmetric MDS
# N rows (objects) x p columns (variables)
# each row identified by a unique row name
library(MASS)
d <- dist(mydata) # euclidean distances between the rows
fit <- isoMDS(d, k=2) # k is the number of dim
fit # view results
# plot solution
x <- fit$points[,1]
y <- fit$points[,2]
plot(x, y, xlab="Coordinate 1", ylab="Coordinate 2",
main="Nonmetric MDS", type="n")
text(x, y, labels = row.names(mydata), cex=.7)
Individuelle Differenzskalierung
Die 3-fache oder individuelle Differenzskalierung kann mit der Funktion indscal() im SensoMineR-Paket abgeschlossen werden. Das smacof-Paket bietet eine Drei-Wege-Analyse individueller Unterschiede, die auf der Stressminimierung der Mittel zur Majorisierung basiert.
Zum Üben
Dieses Tutorial zu ggplot2 beinhaltet Übungen zu Distanzmatrizen und Multi-Dimensional Scaling (MDS).