Escala multidimensional em R
O R fornece funções para escalonamento multidimensional clássico e não métrico. Suponha que tenhamos N objetos medidos em p variáveis numéricas. Queremos representar as distâncias entre os objetos de uma forma parcimoniosa (e visual) (ou seja, um espaço de dimensão k inferior).
MDS clássico
Você pode executar um MDS clássico usando a função cmdscale( ).
# 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 não métrico
O MDS não métrico é realizado com a função isoMDS( ) do pacote MASS.
# 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)
Escala de diferença individual
A escala de diferença individual ou de 3 vias pode ser concluída usando a função indscal() no pacote SensoMineR. O pacote smacof oferece uma análise de três vias das diferenças individuais com base na minimização do estresse dos meios de especialização.
Para praticar
Este tutorial sobre ggplot2 inclui exercícios sobre matrizes de distância e escalonamento multidimensional (MDS).