MDS non-metric MDS Bootstrap

Introdução

Se você usar o código ou as informações deste guia em um trabalho publicado, solicito que cite-o como uma fonte nas referências bibliográficas.

DUTT-ROSS,Steven Escalonamento multidimensional no R. Rio de Janeiro. 2020. mimeo. Disponível em: https://blog.metodosquantitativos.com/MDS/


Você não precisa usar o R… pode usar o Python também.


Tipos de algoritmos Escalonamento multidimensional

Existem diferentes tipos de algoritmos Escalonamento multidimensional, incluindo:

Escalonamento multidimensional clássico

Preserva a métrica de distância original entre pontos da melhor maneira possível. Essas são as distâncias ajustadas no mapa MDS e as distâncias originais estão na mesma métrica. O MDS clássico pertence à chamada categoria de escalonamento multidimensional métrico. Também é conhecido como análise de coordenadas principais. É adequado para dados quantitativos.

Escalonamento multidimensional não métrico

Também é conhecido como Escalonamento multidimensional ordinal. Aqui, não é a métrica de um valor de distância que é importante ou significativa, mas seu valor em relação às distâncias entre outros pares de objetos.

O MDS ordinal constrói distâncias ajustadas que estão na mesma ordem de classificação que a distância original. Por exemplo, se a distância dos objetos separados 1 e 5 estiver em quinto lugar nos dados de distância originais, eles também deverão estar em quinto lugar na configuração do MDS ordinal.

É adequado para dados qualitativos ordinais.

Dados

Analisamos o banco de dados íris do Fisher (que foi usado para ilustrar vários métodos de classificação). Os dados podem ser obtidos diretamente do R. Primeiro, redimensionamos as variáveis dividindo pelos seus desvios padrão.

data(iris)
variris <- apply(iris[,-5],2,var)
iris.adjusted <- sweep(iris[,-5],2,sqrt(variris),"/")

Escalonamento multidimensional clássico

no

Aqui, vamos utilizar a função cmdscale() para fazer o escalonamento multidimensional clássico. Solicitamos ao R uma solução bidimensional, minimizando a função de perda “STRAIN”:

iris.scal <- cmdscale(dist(iris.adjusted),k=2,eig=T)
MDS<-data.frame(iris.scal[["points"]])
clust <- kmeans(MDS, 3)$cluster %>%
  as.factor()
MDS <- MDS %>%
  mutate(groups = clust)

Vamos fazer dois gráficos dos resultados:

par(bg="#e0feff")
library(MASS)
eqscplot(iris.scal$points,type="n")
text(iris.scal$point,labels = iris[row.names(iris),5],cex=.8)