R语言教程之多维度缩放Multidimensional Scaling
R提供了经典和非度量多维缩放的功能。假设我们有N个在p数字变量上测量的对象。我们想要用简洁(和可视化)的方式来表示物体之间的距离(即较低的k维空间)。
古典MDS
您可以使用cmdscale()函数执行经典的MDS 。
# 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)
非定量MDS
Nonmetric MDS使用MASS包中的isoMDS()函数执行。
# 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)
个体差异缩放
使用SensoMineR软件包中的indscal()函数可以完成3路或个体差异缩放。该smacof包提供的基础上,优化的手段应力最小化的个体差异三通分析。