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.