Inteligencia Analítica de Datos con R

Análisis de Componentes Principales (ACP)

Msc. Roberto Trespalacios

Universidad Tecnológica de Bolivar

6/8/23

Análisis de Componentes Principales (ACP)

Introducción

Principal Component Analysis (PCA): método estadístico que permite simplificar la complejidad de espacios muestrales con muchas dimensiones a la vez que conserva su información.

  • Dada una muestra de n individuos cada uno con p variables \((X_1,X_2,…,X_p)\), es decir, el espacio muestral tiene p dimensiones.

  • El PCA permite encontrar un número de factores subyacentes (z<p) que explican aproximadamente lo mismo que las p variables originales.

  • Cada z recibe el nombre de componente principal.

  • Una de las aplicaciones de PCA es la reducción de dimensionalidad (variables), perdiendo la menor cantidad de información (varianza) posible:

  • El PCA sirve como herramienta para la visualización de datos

  • El análisis en componentes principales (ACP) se utiliza para describir tablas que tienen en las filas las unidades estadísticas, generalmente denominadas, “individuos”, y en las columnas las variables de tipo continuo que se han medido sobre los individuos.

Objetivos del ACP

  1. Comparar los individuos entre si. Las gráficas que se obtienen permiten observar la forma de la “nube de individuos”, lo que a su vez permite detectar patrones en ellos.
  2. Describir las relaciones entre las variables.
  3. Reducir la dimensión de la representación. A mayor relación entre las variables mayor es la capacidad de síntesis del ACP y unos pocos ejes factoriales podrán resumir las variables originales.

Eingenvectores y eigenvalores

Los eigenvectores y eigenvalores son números y vectores asociados a matrices cuadradas. Dada una matriz A de \(n \times n\), su eigenvector \(v\) de \(n \times\) tal que,

\[Av=\lambda v\]

  • donde \(\lambda\) es el eigenvalor, un valor escalar real asociado con el eigenvector.

Ejemplo:

\[ \begin{pmatrix} 2 & 3 \\ 2 & 1 \end{pmatrix} \begin{pmatrix} 3 \\ 2 \end{pmatrix} = \begin{pmatrix} 12 \\ 8 \end{pmatrix} = 4 \begin{pmatrix} 3 \\ 2 \end{pmatrix} \]

en R los puede calcular con la funcion eigen()

Ejercicio:

  1. Defina la matriz anterior y guardela con el nombre B.
  2. Calcular los eingevalores e ingevectores de B.

Propiedades de los eigenvectores

  1. Solo las matrices cuadradas tienen eigenvectores, pero no todas las matrices cuadradas los tienen.

  2. Dada una matriz \(n \times n\) con eigenvectores, el número existente de ellos es n.

  3. Todos los eigenvectores de una matriz son perpendiculares. Esto significa que podemos expresar los datos respecto a estos eigenvectores.

  4. Un eigenvalor > 1 indica que la componente principal explica más varianza de lo que lo hace una de las variables originales, estando los datos estandarizados.

Estandarización de las variables

  • Recordemos que cuando las variables tienen escalas muy diferentes, lo recomendable es llevarlas a una misma escala.
  • El cálculo de los componentes principales depende de las unidades de medida empleadas en las variables.
  • Es importante, antes de aplicar el PCA, estandarizar las variables para que tengan media 0 y desviación estándar 1

Interpretación geométrica de las componentes principales

Una forma intuitiva de entender el proceso de PCA consiste en interpretar las componentes principales desde un punto de vista geométrico.

  • Supóngase un conjunto de observaciones para las que se dispone de dos variables (\(X_1, X_2\)).
  • El vector que define la primera componente principal (\(Z_1\)) sigue la dirección en la que las observaciones varían más (linea roja).
  • La proyección de cada observación sobre esa dirección equivale al valor de la primera componente para dicha observación (principal component scores, \(z_{i_1}\)).

  • La segunda componente (\(Z_2\)) sigue la segunda dirección en la que los datos muestran mayor varianza y que no está correlacionada con la primera componente.
  • La condición de no correlación entre componentes principales equivale a decir que sus direcciones son perpendiculares/ortogonales.

Cálculo de las componentes principales

Cada componente principal (\(Z_i\)) se obtiene por combinación lineal de las variables originales.

  • La primera componente principal de un grupo de variables \((X_1,X_2, \dots X_p)\) es la combinación lineal normalizada de dichas variables que tiene mayor varianza:

\[Z_1=\phi_{11} X_1 + \phi_{21}X_2+ \dots + \phi_{p1}X_p\]

con la condición siguiente:

\[\displaystyle\sum_{j=1}^p \phi^{2}_{j1}=1\] En general, se tiene que:

\[Z_{m}=\sum_{j=1}^{p} \phi_{j m} X_{j}\]

Obsevaciones

  • \(\phi_{1m},\phi_{12},\dots,\phi_{pm}\) son las cargas o loadings de los componentes principales

  • La primera componente principal (\(Z_1\)) es aquella cuya dirección refleja o contiene la mayor variabilidad en los datos.

  • Este vector define la línea lo más próxima posible a los datos y que minimiza la suma de las distancias perpendiculares entre cada dato y la línea representada por la componente (usando como medida de cercanía el promedio de la distancia euclídea al cuadrado):

\[z_{i1}=\phi_{11} x_{i 1}+\phi_{21} x_{i 2}+\ldots+\phi_{p 1} x_{i p}\]

donde \(\phi_{11}\) corresponde al primer loading de la primera componente principal.

En otras palabras, el vector de cargas de la primera componente principal resuelve el problema de optimización

\[\underset{\phi_{11}, \ldots, \phi_{p 1}}{\operatorname{maximize}}\left\{\frac{1}{n} \sum_{i=1}^{n}\left(\sum_{j=1}^{p} \phi_{j 1} x_{i j}\right)^{2}\right\} \\ \text { sujeto a } \sum_{j=1}^{p} \phi_{j 1}^{2}=1\]

  • La segunda componente principal (\(Z_2\)) será una combinación lineal de las variables, que recoja la segunda dirección con mayor varianza de los datos, pero que no esté correlacionada con \(Z_1\).
  • Esta condición es equivalente a decir que la dirección de \(Z_2\) (vector \(\phi_2\)) ha de ser perpendicular u ortogonal respecto a \(Z_1\) (vector \(\phi_1\)).

Proporción de la varianza explicada

¿Cuánta información presente en el set de datos original se pierde al proyectar las observaciones en un espacio de menor dimensión?

¿Cuanta información es capaz de capturar cada una de las componentes principales obtenidas?

Asumiendo que las variables se han normalizado para tener media cero, la varianza total presente en el set de datos se define como

\[ \displaystyle\sum_{j=1}^p Var(X_j) = \displaystyle\sum_{j=1}^p \frac{1}{n} \displaystyle\sum_{i=1}^n x^{2}_{ij}\]

Varianza explicada por la componente \(m\):

\[\frac{1}{n} \sum_{i=1}^n z^{2}_{im} = \frac{1}{n} \sum_{i=1}^n \left( \sum_{j=1}^p \phi_{jm}x_{ij} \right)^2\]

Proporción de varianza explicada por la componente \(m\):

\[\frac{\sum_{i=1}^n \left( \sum_{j=1}^p \phi_{jm}x_{ij} \right)^2} {\sum_{j=1}^p \sum_{i=1}^n x^{2}_{ij}}\]

Análisis de Componentes Principales en R

Algunos comandos en R para ACP

  • library(stats)
    • prcomp() -> Forma rápida de implementar PCA sobre una matriz de datos.
    • princomp()
  • library(FactoMineR)
    • PCA() -> PCA con resultados más detallados. Los valores ausentes se reemplazan por la media de cada columna. Pueden incluirse variables categóricas suplementarias. Estandariza automáticamente los datos.
  • library(factoextra)
    • get_pca() -> Extrae la información sobre las observaciones y variables de un análisis PCA.
    • get_pca_var() -> Extrae la información sobre las variables.
    • get_pca_ind() -> Extrae la información sobre las observaciones.

Visualización:

  • library(FactoMineR)
    • fviz_pca_ind() -> Representación de observaciones sobre componentes principales.
    • fviz_pca_var() -> Representación de variables sobre componentes principales.
    • fviz_screeplot() -> Representación (gráfico barras) de eigenvalores.
    • fviz_contrib() -> Representa la contribución de filas/columnas de los resultados de un pca.

Ejemplo 1

A continuación, presentamos unos datos sobre usuarios que califican peliculas. Realice análisis de componentes de componentes principales para la base de películas y usuarios usando los paquetes “FACTO”.

Solución:

  • Defina una matriz llamela A.
  • Escriba los nombres de las columnas “Matrix”, “Alien”, “Serenity”,“Casablanca”, “Amelie”
  • Escriba los nombres de los individuos “Pedro”,“Adriana”, “Teo”, “Andres”, “Manuel”, “Javier”, “Maria”
#Creación de la matriz
A=matrix(c(1,1,1,0,0,3,3,3,0,0,4,4,4,0,0,5,5,5,0,0,0,2,0,4,4,0,0,0,5,5,0,1,0,2,2), nrow=7, byrow = T)

# Nombres de las peliculas
peliculas=c("Matrix", "Alien", "Serenity","Casablanca", "Amelie")

# Nombres de los individuos
individuos=c("Pedro","Adriana", "Teo", "Andres", "Manuel", "Javier", "Maria")

# asignacion de los nombres de columnas y filas
colnames(A)=peliculas
rownames(A)=individuos

Veamos la correlación, gráficos de correlación y el ACP

Correlaciones de la matriz

cor(A)

Gráfico de la correlación

#Grafico de correlaciones
library(psych)
corPlot(A)

Análisis de componentes (ACP)

Primero las librerías

library("factoextra")
library("FactoMineR")
library("dplyr")

Ahora, los componentes principales y sus eigenvalores

peliculas_pca=PCA(A, graph = F)
get_eigenvalue(peliculas_pca)

El gráfico del aporte de cada componente a la varianza total.

fviz_eig(peliculas_pca, addlabels=T)

Nota: Se puede observar tanto en la tabla como en el anterior gráfico que las componentes 1 y 2 son las más significativas ya que capturan el 98% de las varianzas de las variables.

Gráfico de los componentes y su análsis

Finalmente, el gráfico de los componentes

fviz_pca_var(peliculas_pca,
             repel = T, 
             colvar="cos2", 
             col.var = "contrib", 
             alpha.var = "contrib", 
             gradient.cols=c("#FF0000","#FFFF00","#00FF00"))

Analisis del gráfico y sus componentes

  • Podemos visualizar que las variables están bien representadas sobre la dimensión 1, ya que su magnitud es considerablemente grande.

  • Se visualiza que las películas Alien, Matrix y Serenity son películas que tienen bastante ciencia ficción y están bien representadas sobre la dimensión 1 (Ciencia ficción) mientras que Amelie y Casablanca carecen de esta pues están en el sentido opuesto y las usaremos para representar la dimensión 2 (Películas de romance).

  • Por otro lado podemos observar que todas las películas tienen de alguna forma algo de romance.

  • Las cantidades numéricas que corroboran estas afirmaciones se pueden ver en las siguientes gráficos y tablas donde se muestran las coordenadas y las contribuciones, usando la librería corrplot.

Análisis de componentes principales para las variables (datos Peliculas)

library("corrplot")
get_pca_var(peliculas_pca)

Tabla de los dos primeros componentes con el mayor aporte a la varianza

get_pca_var(peliculas_pca)$contrib[,1:2]

Tabla de las coordenadas de los dos primeros componentes.

get_pca_var(peliculas_pca)$coord[,1:2]

Gráfico de las componentes principales con sus aportes a la varianza por cada variable

corrplot(get_pca_var(peliculas_pca)$cos2)

Observación

  • Contribuciónn de cada variable a las componentes principales (cada película) en cada concepto(en cada componente principal).
  • Prueba que cada variable aporta un porcentaje en cada componente. La suma es 100 %

En efecto,

colSums(get_pca_var(peliculas_pca)$contrib)

Gráfica para visualizar la contibución de las variables a los componentes principales (CPA 1)

# grafica para mirar la contibucion de las variables al pca
fviz_contrib(peliculas_pca, choice = "var", axes=1)

Gráfica para visualizar la contibución de las variables a los componentes principales (CPA 2)

fviz_contrib(peliculas_pca, choice = "var", axes=2)

Análisis de componentes principales para las variables (datos Peliculas)

Gráfica para visualizar la contibución de las variables a los componentes principales (CPA 3)

fviz_contrib(peliculas_pca, choice = "var", axes=3)

Gráfica para visualizar los componentes principales en sus ejes (CPA 1 y 2)

fviz_pca_biplot(peliculas_pca)

Observaciones

A partir del anterior gráfico se puede decir que:

  • Andres y Teo les gusta las películas de ciencia ficción.
  • Javier y Manuel les gusta las películas que contienen poca ciencia ficción porque están al lado opuesto en la dimensión 1.
  • Pedro es neutral respecto a las películas de ciencia ficción y no es afínn con las películas de romance.

Ejercicios

Ejercicio 1

Realizar un análisis de componentes principales para los datos AI Global Index.

Ejercicio 2

Realizar un análisis de componentes principales para los datos USArrests.

plano cartesiano