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)
LS0tIAp0aXRsZTogIkVzY2FsYWRvIG11bHRpZGltZW5zaW9uYWwgY2zDoXNpY28iCmRhdGU6ICJgciBmb3JtYXQoU3lzLnRpbWUoKSwgJyVCICVkLCAlWScpYCIKLS0tCgpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRSwgY2FjaGU9RkFMU0V9CmtuaXRyOjpvcHRzX2NodW5rJHNldChldmFsID0gRkFMU0UpCmtuaXRyOjpvcHRzX2NodW5rJHNldChmaWcucGF0aCA9ICcuL2Fzc2V0cy8nKQpgYGAKCk90cmEgZm9ybWEgZGUgZW5mb2NhciBlbCBwcm9ibGVtYSBkZSBhZ3J1cGFyIGRhdG9zIGVzIGludGVudGFuZG8gcmVwcmVzZW50YXIgbG9zCmRhdG9zIGVuIG1lbm9zIGRpbWVuc2lvbmVzLiAKYGBge3J9CmR0IDwtIHJlYWRSRFMoImR0YS9kYXRvcy1jcmltaW5hbGlkYWQuUkRTIikKYGBgCgpQYXJhIGVsbG8gZW1wZXphbW9zIHBvciBjYWxjdWxhciBsYSBtYXRyaXogZGUgZGlzdGFuY2lhcyBlbnRyZSBsYXMgb2JzZXJ2YWNpb25lcy4KYGBge3J9CnNkdCA8LSBzY2FsZShkdCkKZCA8LSBkaXN0KHNkdCkKYGBgCgpBIGNvbnRpbnVhY2nDs24sIGVuY29udHJhbW9zIGxhIHJlcHJlc2VudGFjacOzbiBlbiBkb3MgZGltZW5zaW9uZXMgcXVlIG1lam9yCnByZXNlcnZhIGxhIG1hdHJpeiBkZSBkaXN0YW5jaWFzIHF1ZSBhY2FiYW1vcyBkZSBjYWxjdWxhci4gCmBgYHtyfQpmaXQgPC0gY21kc2NhbGUoZCwgZWlnPVRSVUUsIGs9MikgCmBgYAoKQWhvcmEgcG9kZW1vcyB2ZXIgY8OzbW8gc2UgcHJlc2VudGFuIGxvcyBkYXRvcyBlbiBlc3RhIG51ZXZhIHJlcHJlc2VudGFjacOzbiBlbgpkb3MgZGltZW5zaW9uZXMuCmBgYHtyfQp4IDwtIGZpdCRwb2ludHNbLDFdCnkgPC0gZml0JHBvaW50c1ssMl0KcGxvdCh4LCB5LAogICAgIHhsYWI9IkNvb3JkaW5hdGUgMSIsCiAgICAgeWxhYj0iQ29vcmRpbmF0ZSAyIiwKICAgICBtYWluPSJNZXRyaWMgTURTIiwKICAgICB0eXBlPSJuIikKdGV4dCh4LCB5LCBsYWJlbHMgPSAxOm5yb3coc2R0KSwgY2V4PS43KQpgYGAK