Otra forma de enfocar el problema de agrupar datos es intentando representar los datos en menos dimensiones.

dt <- readRDS("dta/datos-criminalidad.RDS")

Para ello empezamos por calcular la matriz de distancias entre las observaciones.

sdt <- scale(dt)
d <- dist(sdt)

A continuación, encontramos la representación en dos dimensiones que mejor preserva la matriz de distancias que acabamos de calcular.

fit <- cmdscale(d, eig=TRUE, k=2) 

Ahora podemos ver cómo se presentan los datos en esta nueva representación en dos dimensiones.

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 = 1:nrow(sdt), cex=.7)