Carguemos los datos que hemos obtenido en el script anterior

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

Hemos visto en los scripts anteriores cómo agrupar observaciones que son similares. Nuestro objetivo ahora es agrupar dimensiones de tal forma que podamos representar nuestros datos utilizando menos variables.

pcm <- princomp(scale(dt))
summary(pcm)

Podemos extraer los coeficientes asociados a cada una de las dimensiones para interpretar en qué sentido se agrupan los diferentes componentes:

pcm$loadings

La cuestión restante es ver cuántas dimensiones mantener para poder representar los datos con la menor pérdida. Podemos observar las varianzas asociadas a cada dimensión y comprobar el descenso marginal asociada a cada componente añadido.

plot(pcm, type="l")

En este caso, la tercera dimensión apenas reduce la varianza acumulada y con solo dos dimensiones podemos representar los datos con un 76% de precisión. Dado eso, podemos interpretar los resultados usando biplot:

biplot(pcm)

que se corresponde con los pesos y dirección de los componentes tal y como vemos aquí:

as.matrix(pcm$loadings[, 1:2])

¿Cuál es la representación de los datos bajo los componentes que acabamos de calcular?

as.matrix(scale(dt)) %*% as.matrix(pcm$loadings[, 1:2])

Podemos comprobar que con el nuevo índice las observaciones que hemos detectado antes que tenían un patrón de criminalidad diferenciado vuelven a destacarse.

LS0tCnRpdGxlOiAiQW7DoWxpc2lzIGRlIGNvbXBvbmVudGVzIHByaW5jaXBhbGVzIgpkYXRlOiAiYHIgZm9ybWF0KFN5cy50aW1lKCksICclQiAlZCwgJVknKWAiCi0tLQoKYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0UsIGNhY2hlPUZBTFNFfQprbml0cjo6b3B0c19jaHVuayRzZXQoZXZhbCA9IEZBTFNFKQprbml0cjo6b3B0c19jaHVuayRzZXQoZmlnLnBhdGggPSAnLi9hc3NldHMvJykKYGBgCgpDYXJndWVtb3MgbG9zIGRhdG9zIHF1ZSBoZW1vcyBvYnRlbmlkbyBlbiBlbCBzY3JpcHQgYW50ZXJpb3IKCmBgYHtyfQpkdCA8LSByZWFkUkRTKCJkdGEvZGF0b3MtY3JpbWluYWxpZGFkLlJEUyIpCmBgYAoKSGVtb3MgdmlzdG8gZW4gbG9zIHNjcmlwdHMgYW50ZXJpb3JlcyBjw7NtbyBhZ3J1cGFyIG9ic2VydmFjaW9uZXMgcXVlIHNvbgpzaW1pbGFyZXMuIE51ZXN0cm8gb2JqZXRpdm8gYWhvcmEgZXMgYWdydXBhciBfZGltZW5zaW9uZXNfIGRlIHRhbCBmb3JtYSBxdWUKcG9kYW1vcyByZXByZXNlbnRhciBudWVzdHJvcyBkYXRvcyB1dGlsaXphbmRvIG1lbm9zIF92YXJpYWJsZXNfLiAKYGBge3J9CnBjbSA8LSBwcmluY29tcChzY2FsZShkdCkpCnN1bW1hcnkocGNtKQpgYGAKUG9kZW1vcyBleHRyYWVyIGxvcyBjb2VmaWNpZW50ZXMgYXNvY2lhZG9zIGEgY2FkYSB1bmEgZGUgbGFzIGRpbWVuc2lvbmVzIHBhcmEKaW50ZXJwcmV0YXIgZW4gcXXDqSBzZW50aWRvIHNlIGFncnVwYW4gbG9zIGRpZmVyZW50ZXMgY29tcG9uZW50ZXM6CmBgYHtyfQpwY20kbG9hZGluZ3MKYGBgCgpMYSBjdWVzdGnDs24gcmVzdGFudGUgZXMgdmVyIGN1w6FudGFzIGRpbWVuc2lvbmVzIG1hbnRlbmVyIHBhcmEgcG9kZXIgcmVwcmVzZW50YXIKbG9zIGRhdG9zIGNvbiBsYSBtZW5vciBww6lyZGlkYS4gUG9kZW1vcyBvYnNlcnZhciBsYXMgdmFyaWFuemFzIGFzb2NpYWRhcyBhIGNhZGEKZGltZW5zacOzbiB5IGNvbXByb2JhciBlbCBkZXNjZW5zbyBtYXJnaW5hbCBhc29jaWFkYSBhIGNhZGEgY29tcG9uZW50ZSBhw7FhZGlkby4KYGBge3J9CnBsb3QocGNtLCB0eXBlPSJsIikKYGBgCgpFbiBlc3RlIGNhc28sIGxhIHRlcmNlcmEgZGltZW5zacOzbiBhcGVuYXMgcmVkdWNlIGxhIHZhcmlhbnphIGFjdW11bGFkYSB5IGNvbgpzb2xvIGRvcyBkaW1lbnNpb25lcyBwb2RlbW9zIHJlcHJlc2VudGFyIGxvcyBkYXRvcyBjb24gdW4gNzYlIGRlIHByZWNpc2nDs24uIERhZG8KZXNvLCBwb2RlbW9zIGludGVycHJldGFyIGxvcyByZXN1bHRhZG9zIHVzYW5kbyBgYmlwbG90YDoKCmBgYHtyfQpiaXBsb3QocGNtKQpgYGAKCnF1ZSBzZSBjb3JyZXNwb25kZSBjb24gbG9zIHBlc29zIHkgZGlyZWNjacOzbiBkZSBsb3MgY29tcG9uZW50ZXMgdGFsIHkgY29tbyB2ZW1vcwphcXXDrToKCmBgYHtyfQphcy5tYXRyaXgocGNtJGxvYWRpbmdzWywgMToyXSkKYGBgCgrCv0N1w6FsIGVzIGxhIHJlcHJlc2VudGFjacOzbiBkZSBsb3MgZGF0b3MgYmFqbyBsb3MgY29tcG9uZW50ZXMgcXVlIGFjYWJhbW9zIGRlCmNhbGN1bGFyPyAKYGBge3J9CmFzLm1hdHJpeChzY2FsZShkdCkpICUqJSBhcy5tYXRyaXgocGNtJGxvYWRpbmdzWywgMToyXSkKYGBgCgpQb2RlbW9zIGNvbXByb2JhciBxdWUgY29uIGVsIG51ZXZvIMOtbmRpY2UgbGFzIG9ic2VydmFjaW9uZXMgcXVlIGhlbW9zIGRldGVjdGFkbwphbnRlcyBxdWUgdGVuw61hbiB1biBwYXRyw7NuIGRlIGNyaW1pbmFsaWRhZCBkaWZlcmVuY2lhZG8gdnVlbHZlbiBhIGRlc3RhY2Fyc2UuIAo=