ACP – Análisis de Componentes Principales en R

Uso: Determina la relación entre variables y explicarlas a través de factores.

Variables: Métricas.

Descripción: Técnica estadística de síntesis de la información, o reducción de la dimensiones. Es decir, para un conjunto de datos con multitud de variables, su objetivo es el de reducir a un menor número de factores perdiendo la menor cantidad de información posible.

Los nuevos factores o componentes principales serán combinación lineal de las variables originales y  serán independientes entre sí.

Un aspecto primordial y que entraña mayor dificultado de este método es la interpretación de los factores, ya que ésta no viene dada a priori, sino que será obtenida tras observar la relación de los factores con las variables iniciales.

Ejemplo en R: Clasificar tipo de flor atendiendo a sus características físicas como pueden ser el ancho y alto de los pétalos y sépalos.

# Carga de datos inicial, tipos de flores con diferentes caracteristicas 
data(iris)

# Nos quedamos todas las variables excepto la variable dependiente
datos <- iris[-5] 

# Ejecutar el análisis de componentes principales PCA
modelo <- prcomp(datos) 
?fac
# Mostrar la desviación estandar y la relación de cada variable con cada componente
modelo

# Mostar un resumen de cada uno de los componentes
# Standard deviation = valores propios de la varianza explicada en cada componente
# Proportion of Variance = porcentaje de varianza explicada por cada factor
# Cumulative Proportion = porcentaje de varianza acumulada explicada por cada factor
summary(modelo)

# Preparación del modelo para mostrar la distinción por colores
colores <- as.character(iris$Specie)
colores[colores=="setosa"] <- "red"
colores[colores=="virginica"] <- "black"
colores[colores=="versicolor"] <- "blue"

# Dibujar los pares de componentes
pairs(modelo$x,col=colores) 

# Grafico de PC1 y PC2
plot(modelo$rotation,pch='')
abline(h = 0, v = 0, col = "gray60")
text(modelo$rotation,labels=rownames(modelo$rotation))

# Grafico de PC1 y PC3 
plot(modelo$rotation[,1],modelo$rotation[,3],pch='.')
abline(h = 0, v = 0, col = "gray60")
text(modelo$rotation[,1],modelo$rotation[,3],labels=rownames(modelo$rotation))

# Dibujar la varianza que explica cada factor
plot(modelo)

# Se guardan los dos primeros factores del PCA en un nuevo data.frame para usarlo en un GLM
valoresDeFactores<-modelo$x[,1:2]
str(valoresDeFactores)
View(valoresDeFactores)

Otros artículos que pueden ser de interés:

Autor: Diego Calvo