El Análisis de Componentes Principales en R es un análisis estadístico multivariante que consiste en generar nuevas variables que sean resultado de la combinación lineal de las originales, consiguiendo agrupar la mayor variación posible reduciendo su número. Es decir, su objetivo principal es reducir el número de variables en nuestro análisis al menor número posible, normalmente a 2 ó 3. Estas nuevas variables reciben el nombre componentes principales. La primera componente principal agrupa la mayor parte de variación, la segunda algo menos, y así sucesivamente. De esta forma, en vez de tener muchas variables tenemos solo unas pocas que agrupan la mayor parte de la variación observada. Su acrónimo en español es ACP, o PCA si usamos el acrónimo inglés, Principal Component Analysis.
Quiero leer...
Tipos de datos necesarios para un análisis de componentes principales en R
- Un conjunto de variables cuantitativas medidas sobre una muestra de individuos.
- Distribución normal multivariante
Ejemplo:
Para nuestro ejemplo de Análisis de Componentes Principales tomamos 8 variables numéricas a 14 recién nacidos con poco peso (descargar datos):
- V1 = edad de la madre (años)
- V2 = número de cigarrillos fumados por la madre al día
- V3 = altura de la madre (pulgadas)
- V4 = peso de la madre (libras)
- V5 = edad del padre (años)
- V6 = nivel de estudios del padre
- V7 = número de cigarrillos fumados por el padre al día
- V8 = altura del padre (pulgadas)
¿Se puede reducir el número de variables agrupando la mayor variación posible?
Cargamos los datos en R Commander
Una vez descargados los datos del ejemplo, los introducimos en R Commander siguiendo la siguiente ruta:
Y los visualizamos dando a Visualizar conjunto de datos:
Ejecutamos el Análisis de Componentes Principales en R Commander
Para realizar el Análisis de Componentes Principales a los datos del ejemplo, seguimos la siguiente ruta en R Commander:
Nos aparece ahora la siguiente ventana en la que tenemos que seleccionar las 8 variables de nuestro ejemplo, pinchando y arrastrando desde la V1 hasta la V8:
Antes de dar a Aceptar, vamos a la pestaña de Opciones, y determinamos si queremos Estandarizar los datos o no.
Estandarización, ¿qué es y cómo usarlo en R Commander?
En el Análisis de Componentes Principales es importante, dependiendo de la naturaleza de nuestros datos, estandarizarlos o no:
- Estandarizar: cuando las variables en el estudio tengan escalas o unidades de medida diferentes. Se calcula a partir de la matriz de correlaciones (que tengan varianza = 1).
- No estandarizar: cuando las variables en el estudio tengan escalas o unidades de medida iguales. Se calcula a partir de la matriz de covarianzas.
Como los datos del ejemplo tienen diferentes escalas y medidas (años, alturas, pesos, etc), tenemos que Estandarizar seleccionando «Analizar la matriz de correlaciones».
Resultados e interpretación del análisis de componentes principales en R
Los resultados del análisis de componentes principales del ejemplo aparecen como se ve a continuación en R Commander:
Pero veamos qué significan todos esos datos:
> local({ + .PC <- princomp(~V1+V2+V3+V4+V5+V6+V7+V8, cor=TRUE, data=Datos) + cat("nComponent loadings:n") + print(unclass(loadings(.PC))) + cat("nComponent variances:n") + print(.PC$sd^2) + cat("n") + print(summary(.PC)) + }) Component loadings: Comp.1 Comp.2 Comp.3 Comp.4 Comp.5 Comp.6 Comp.7 Comp.8 V1 0.45927632 -0.3300700 0.42221491 -0.06912846 0.014058950 0.09484631 -0.08936572 0.692744662 V2 -0.42975751 -0.2662236 0.08772638 -0.32688585 0.445127021 -0.45333765 0.43955233 0.181724713 V3 -0.06900791 -0.6387247 -0.16726543 0.11575498 -0.186804457 0.52531263 0.45973313 -0.153908871 V4 0.03880912 -0.5597814 -0.41999034 0.27503283 0.007091408 -0.44997788 -0.48008663 -0.009493601 V5 0.48981256 -0.1997337 0.44528178 -0.07725784 0.091430449 -0.27164575 0.10749267 -0.649799865 V6 0.38390014 0.1163544 -0.37150886 0.14717175 0.782395703 0.24418386 0.08728867 0.003984449 V7 -0.43872101 -0.1867023 0.42200008 0.02548362 0.378383648 0.38241113 -0.52162403 -0.180079334 V8 -0.13540205 0.1027849 0.30869124 0.87809277 0.055148344 -0.16553023 0.25632827 0.092836342
Interpretación de los resultados (Component loadings):
También conocidos como loading factors, autovectores, o eigenvectors), son los coeficientes de la ecuación de cada componente principal.
Por ejemplo, el componente principal 1 (Comp. 1), presenta la siguiente ecuación:
CP1 = 0.45927632 * Z1 – 0.42975751 * Z2 – 0.06900791 * Z3 + 0.03880912 * Z4 + 0.48981256 * Z5 + 0.38390014 * Z6 – 0.43872101 * Z7 – 0.13540205 * Z8
Nótese que en la ecuación, las variables originales (V1-V8) han sido sustituidas por Z (Z1-Z8), ya que son las variables Estandarizadas.
Component variances: Comp.1 Comp.2 Comp.3 Comp.4 Comp.5 Comp.6 Comp.7 Comp.8 2.68616770 1.86196171 1.11240271 1.03044187 0.61920451 0.36727816 0.27738461 0.04515874
Interpretación de los resultados (Component variances):
Se conocen como autovalores. El valor de cada componente es el cuadrado de su desviación estándar (ver la interpretación siguiente). La suma total da 8, ya que son 8 componentes principales y están estandarizados.
Importance of components: Comp.1 Comp.2 Comp.3 Comp.4 Comp.5 Comp.6 Comp.7 Comp.8 Standard deviation 1.638953 1.3645372 1.0547050 1.0151068 0.78689549 0.60603478 0.52667315 0.212505858 Proportion of Variance 0.335771 0.2327452 0.1390503 0.1288052 0.07740056 0.04590977 0.03467308 0.005644842 Cumulative Proportion 0.335771 0.5685162 0.7075665 0.8363717 0.91377231 0.95968208 0.99435516 1.000000000
Interpretación de los resultados (Importance of components):
– Standard deviation: muestra las desviaciones estándar de cada componente principal. Se calcula a partir de los datos obtenidos sustituyendo los valores de cada recién nacido en la ecuación cada componente principal.
– Proportion of Variance: es la proporción de la varianza que explica cada componente principal. Su suma es igual a 1. Esta fila es realmente la importante de nuestros resultados.
– Cumulative proportion: es la proporción acumulada, calculada sumándolas progresivamente.
Observamos que las dos primeras componentes agrupan un 56.9% de la variación, o lo que es lo mismo, hay un 43.1% de variación que no se explica. Por lo tanto, ¿con cuántos componentes principales nos quedamos?
¿Con cuántos Componentes Principales nos quedamos?
Un método informal de determinar con cuántos componentes nos quedamos se basa en elegir las componentes principales que agrupen…
- … más del 70% de la variación total, y…
- … si proceden de datos estandarizados, que sus autovalores asociados sean mayores que 1.
Los autovalores de cada componente principal se pueden visualizar gráficamente. El nombre que recibe este gráfico se denomina gráfico de desmoronamiento o de sedimentación (scree diagram). En R Commander:
El gráfico que sale con los autovalores (eigenvalues) de cada componente principal es el siguiente:
Copiando a continuación parte de los resultados previos, observamos que los 3 primeros componentes agrupan el 70.8% de la variación…
Importance of components: Comp.1 Comp.2 Comp.3 Comp.4 Comp.5 Comp.6 Comp.7 Comp.8 Standard deviation 1.638953 1.3645372 1.0547050 1.0151068 0.78689549 0.60603478 0.52667315 0.212505858 Proportion of Variance 0.335771 0.2327452 0.1390503 0.1288052 0.07740056 0.04590977 0.03467308 0.005644842 Cumulative Proportion 0.335771 0.5685162 0.7075665 0.8363717 0.91377231 0.95968208 0.99435516 1.000000000
… y que hasta el cuarto componente principal tiene más de 1 en sus autovalores:
Component variances: Comp.1 Comp.2 Comp.3 Comp.4 Comp.5 Comp.6 Comp.7 Comp.8 2.68616770 1.86196171 1.11240271 1.03044187 0.61920451 0.36727816 0.27738461 0.04515874
Por lo tanto, nos quedamos con los 4 primeros componentes principales.
¿Cómo se interpreta todo esto en nuestro ejemplo?
Hemos decidido finalmente quedarnos con los 4 primeros componentes principales, porque son los que cumplen los requisitos establecidos en el apartado anterior. Pero… ¿qué significa? Copiemos los coeficientes de las ecuaciones de los componentes y observemos cuáles son los valores absolutos más altos en cada uno de ellos:
Component loadings: Comp.1 Comp.2 Comp.3 Comp.4 V1 0.45927632 -0.3300700 0.42221491 -0.06912846 V2 -0.42975751 -0.2662236 0.08772638 -0.32688585 V3 -0.06900791 -0.6387247 -0.16726543 0.11575498 V4 0.03880912 -0.5597814 -0.41999034 0.27503283 V5 0.48981256 -0.1997337 0.44528178 -0.07725784 V6 0.38390014 0.1163544 -0.37150886 0.14717175 V7 -0.43872101 -0.1867023 0.42200008 0.02548362 V8 -0.13540205 0.1027849 0.30869124 0.87809277
- El componente 1 agrupa un 33.6% de variación, y los valores absolutos más elevados de sus coeficientes son los presentes en V1, V2, V5 y V7. Esto significa que esas variables son las que agrupan esa variación en mayor medida. En nuestro ejemplo, esas variables se corresponden con la Edad de los padres y Números de cigarrillos fumados diariamente por ellos. Por lo tanto, parece que tienen relación con que los niños nazcan con poco peso.
- El componente 2 agrupa un 23.3% de la variación, y los valores absolutos más elevados de sus coeficientes son los presentes en V3 y V4, que se corresponden con la Forma de la madre (altura y peso).
- Los otros dos componentes son algo más difusos de interpretar, pero no son necesarios para realizar un correcto análisis de componentes principales.
2.4.1. Representación gráfica de los dos primeros componentes
Teniendo en cuenta lo que se ejecutó al inicio del análisis (a continuación un copia/pega), copiamos la línea destacada en negrita y subrayada y le quitamos el punto inicial (.PC)…
> local({ + .PC <- princomp(~V1+V2+V3+V4+V5+V6+V7+V8, cor=TRUE, data=Datos) + cat("nComponent loadings:n") + print(unclass(loadings(.PC))) + cat("nComponent variances:n") + print(.PC$sd^2) + cat("n") + print(summary(.PC)) + })
… tal que quede así, escribiendo debajo biplot (PC):
PC <- princomp(~V1+V2+V3+V4+V5+V6+V7+V8, cor=TRUE, data=Datos)
biplot(PC)
Esto lo copiamos y pegamos en R Commander (en la pestaña R Script). Seleccionamos ambas líneas y damos a Ejecutar. El resultado es el siguiente:
Vemos que en el eje de abscisas se representa el Componente Principal 1 y en el de ordenadas el Componente Principal 2.
Cuanto más largas sean las flechas rojas, más alto es el valor del coeficiente de esa variable en ese componente. Observamos que tenemos perfectamente la representación gráfica de lo observado en el punto 2.4.
Por ejemplo, vemos que en el Componente Principal 1, las flechas más largas son V5 y V1 (en valor positivo) y V7 y V2 (en valor negativo), que se corresponden con los coeficientes más altos obtenidos en el punto 2.4 para ese componente. Por otro lado, el Componente Principal 2 presenta dos variables (V3 y V4) con mayor longitud, que se corresponden nuevamente con las dos variables escogidas en el punto 2.4.
¿Queréis conocer otros métodos de generar figuras de análisis de componentes principales en R?
Aquí os dejamos unos enlaces muy interesantes y útiles para generar figuras profesionales en R de un PCA.
Añadir los componentes principales al conjunto de datos
Hemos decidido finalmente quedarnos con los 4 primeros componentes principales. ¿Cómo los añadimos al conjunto de datos para poder continuar la estadística con ellos?
Nos aparecerá la siguiente ventana en la que diremos que queremos 4 componentes:
Al Visualizar conjunto de datos, veremos los 4 componentes añadidos a continuación de las 8 variables iniciales:
Reducción del número de variables, objetivo del Análisis de Componentes Principales
Si en vez de generar nuevas variables (como en el caso anterior), queremos desecharnos de las menos informativas entre las originales de nuestro estudio, algunos autores han propuesto métodos para ello.
Joliffe (1972, 1973) propone reducir directamente las variables originales al número de ellas que cumplan con los siguientes requisitos:
- Elegir los componentes principales cuyos autovalores sean mayores que 0.7.
- De las componentes principales escogidas, seleccionar la variable con mayor valor absoluto (que no haya sido seleccionada previamente).
En nuestro ejemplo tenemos 4 componentes principales cuyos autovalores están por encima de 0.7 (ver previamente). Los autovectores de cada componente se muestran a continuación:
Component loadings: Comp.1 Comp.2 Comp.3 Comp.4 V1 0.45927632 -0.3300700 0.42221491 -0.06912846 V2 -0.42975751 -0.2662236 0.08772638 -0.32688585 V3 -0.06900791 -0.6387247 -0.16726543 0.11575498 V4 0.03880912 -0.5597814 -0.41999034 0.27503283 V5 0.48981256 -0.1997337 0.44528178 -0.07725784 V6 0.38390014 0.1163544 -0.37150886 0.14717175 V7 -0.43872101 -0.1867023 0.42200008 0.02548362 V8 -0.13540205 0.1027849 0.30869124 0.87809277
- En Comp. 1 el valor absoluto más alto de sus coeficientes (0.4898) se corresponde con V5.
- En Comp. 2 se corresponde con V3.
- En Comp. 3 se corresponde con V5, pero como ya está seleccionado en el Comp. 1, seleccionamos el siguiente con más valor, V1.
- En Comp. 4 se corresponde con V8.
Por lo tanto, nos quedaríamos exclusivamente con las variables V1, V3, V5 y V8.
Referencias
- García Pérez, A., 2005. Métodos avanzados de estadística aplicada. Técnicas avanzadas, 1st ed. Universidad Nacional de Educación a Distancia, Madrid.
Muchas gracias, me ha servido de mucho. Tengo una inquietud: Si poseo una variable categórica, como por ejemplo un nombre de un sitio, como podría hacer para representarla en el mismo gráfico? Te comporto un enlace para que tengas una mejor idea de lo que estoy preguntando: https://www.researchgate.net/figure/Figura-1-Diagrama-de-ordenacao-da-Analise-de-Componentes-Principais-PCA-realizada-com-o_fig1_303689725
Si son variables categóricas, lo mismo un análisis de correspondencias sería una posible solución. El análisis de correspondencias no es otra cosa que un PCA para variables categóricas. Mira este enlace https://vivaelsoftwarelibre.com/analisis-de-correspondencias-bivariante-en-r/
Excelente información
Muchas gracias por compartir con tanta claridad este tema, tengo una consulta y me gustaría que me la resuelvas ya que no encuentro información, para hacer el ACP los datos deben ser normales?. El ACP es una técnica paramétrica?