Estadística Descriptiva Multivariada

Análisis de Componentes Principales

Jimmy A Corzo S, PhD
Giovany Babativa-Márquez, PhD

Análisis de Componentes Principales

Contenido

  1. Descripción del método
  2. Fundamentos matemáticos
  3. Construcción de las componentes
  4. Guías para la interpretación
  5. Ejemplo 1: Compresión de imágenes
  6. Ejemplo 2: Rankings universitarios latinoamericanos
  7. Ejemplo 3: Calidad de vida — ECV DANE
  8. Variables y objetos suplementarios
  9. Laboratorio

Descripción del método

Dos enfoques de las componentes principales

Enfoque estadístico

Buscar ponderaciones \(v_1, \ldots, v_p\) de combinaciones lineales de las variables originales que maximizan la varianza de las proyecciones.

  • Las ponderaciones se construyen de forma que las componentes sean ortogonales entre sí.
  • Las componentes resultantes son no correlacionadas.

Enfoque de aprendizaje estadístico

Problema de optimización que minimiza la suma de cuadrados residuales entre los datos originales y su aproximación de rango reducido.

  • Se busca la proyección de los datos sobre un subespacio de dimensión \(q < p\).
  • La solución proviene del Teorema de Descomposición en Valores Singulares (TDVS).

Conclusión: Ambos enfoques producen exactamente la misma solución. El TDVS garantiza la equivalencia mediante los valores y vectores propios de \(X^\prime X\) y \(XX^\prime\).

Dos enfoques de las componentes principales

Pearson (1901) planteó un problema geométrico: encontrar una representación óptima de datos multivariados en una dimensión reducida con respecto al error cuadrático medio.

Sea \(\mathbf{X}\in \mathbb{R}^{n \times p}\) una matriz centrada, el problema del ACP es

\[\min_{V \in \mathbb{R}^{p \times k}} \sum_{i=1}^{n} \left\| \mathbf{x}_i - V V^\prime \mathbf{x}_i \right\|^2 \quad \text{s.a.} \quad V^\prime V = I_k, \quad k < p\]

Equivalente a:

\[\min_{V^\prime V = I_k} \left\|\mathbf{X} - \mathbf{X} V V^\prime \right\|_F^2\]

Dos enfoques de las componentes principales

Hotelling (1933) mostró que las cargas de los componentes principales son los eigenvectores de la matriz de covarianza muestral.


El objetivo del PCA puede escribirse como:


\[ \max_{V \in \mathbb{R}^{p \times k}} \operatorname{tr}\!\left( V^\prime S V \right), \quad \text{s.a.} \quad V^\prime V = I_k, \quad k<p \]

donde

\[ S = \frac{1}{n} X^\prime X \]

es la matriz de covarianza muestral y \(X \in \mathbb{R}^{n \times p}\) es una matriz centrada.

Dos enfoques de las componentes principales

Enfoque de Hotelling (1933) vs Pearson (1901)


Descripción del método

El Análisis de Componentes Principales (ACP) produce combinaciones lineales de las variables originales, denominadas:

componentes principales, factores o dimensiones

  • Reducción de dimensiones: representar \(p\) variables en \(q \ll p\) componentes con mínima pérdida de información.
  • Visualización de tablas: proyectar objetos y variables sobre planos factoriales interpretables.
  • Análisis y comprensión: identificar la estructura de correlaciones entre variables.
  • Imputación de datos faltantes: usar las componentes como base para imputar.
  • Predictores para regresión: solución a la multicolinealidad entre covariables.

Utilidad del ACP

El ACP es la base de los métodos factoriales más importantes:

  • ACS – Análisis de Correspondencias Simples: tablas de contingencia entre dos variables cualitativas.
  • ACM – Análisis de Correspondencias Múltiples: tablas de individuos × variables cualitativas.
  • AFMG – Análisis Factorial Múltiple Generalizado: tablas de individuos × bloques de variables.
  • STATIS: tablas de tres índices (individuos × variables × condiciones).
  • Agrupamiento jerárquico: el ACP es el preprocesamiento más común antes de clusterizar.

Note

El ACP es un método no supervisado: no existe una variable respuesta \(Y\). El objetivo es explorar la estructura de los datos, no predecir.

Fundamentos matemáticos

Matriz de datos centrados, estandarizados y normados

Partiendo de la matriz de datos centrada y estandarizada \(\widetilde{Y}\) (con denominador \(\sqrt{n}\)), se define:

\[Y = \frac{1}{\sqrt{n}}\,\widetilde{Y} = \frac{1}{\sqrt{n}}\,\widetilde{X}\,D^{-1/2}\]

donde \(D = \text{diag}(s_1, \ldots, s_p)\) contiene las desviaciones estándar.

Propiedades:

\[\text{med}(Y) = \frac{1}{\sqrt{n}} med(\tilde{Y}) = \mathbf{0}\]

\[S_Y = Y^\prime Y = \frac{1}{n}\,\widetilde{Y}^\prime\widetilde{Y} = R\]

La matriz de covarianzas de \(Y\) coincide con la matriz de correlaciones \(R\).

Aplicación del TDVS

Aplicando el Teorema de Descomposición en Valores Singulares a \(Y\):

\[Y_{n \times p} = U_{n \times p}\; L_{p \times p}\; V_{p \times p}^\prime\]

donde:

Objeto Descripción
\(U\) columnas ortonormales: \(U^\prime U = I_p\), direcciones en espacio de objetos
\(V\) columnas ortonormales: \(V^\prime V = I_p\), direcciones en espacio de variables (cargas/loadings)
\(L = \text{diag}(\sqrt{\lambda_1}, \ldots, \sqrt{\lambda_p})\) valores singulares, con \(\lambda_1 \ge \cdots \ge \lambda_p \ge 0\)

Los \(\lambda_\alpha\) son los valores propios de \(Y^\prime Y = R\), y las columnas de \(V\) son sus vectores propios. \(\lambda_\alpha\) también son los valores propios de \(YY^\prime\) y \(U\) contiene en sus columnas sus vectores propios.

Matriz de componentes principales

La matriz de scores (coordenadas de los objetos sobre las componentes) se obtiene como:

\[Z = Y\,V\]

La \(\alpha\)-ésima componente principal es: \[z_\alpha = Y\,v_\alpha = \sqrt{\lambda_\alpha}\,u_\alpha\]

donde \(v_\alpha\) es la \(\alpha\)-ésima columna de \(V\) (vector de cargas) y \(u_\alpha\) es la \(\alpha\)-ésima columna de \(U\).

La coordenada del objeto \(i\) sobre la componente \(\alpha\) es: \[z_{i\alpha} = y_{i\cdot}^\prime v_\alpha = \sum_{j=1}^p y_{ij}\, v_{j\alpha}\]

Propiedades de las componentes principales

Las columnas de \(Z = YV\) satisfacen:

1. Media cero: \[\frac{1}{n}Z^\prime\mathbf{1}_n = \frac{1}{n}V^\prime Y^\prime \mathbf{1}_n = V^\prime \text{med}(Y) = \mathbf{0}\]

2. Incorrelacionadas: \[Z^\prime Z = V^\prime Y^\prime Y V = V^\prime R\, V = \Lambda = \text{diag}(\lambda_1, \ldots, \lambda_p)\]

Important

Las componentes principales son combinaciones lineales no correlacionadas y sus varianzas son los valores propios de \(R\). La varianza de \(Z_\alpha\) es exactamente \(\lambda_\alpha\).

Análisis para los objetos

El objeto \(i\) queda representado en el plano factorial por el vector de coordenadas:

\[z_{i\cdot} = \left(z_{i1}, \ldots, z_{i\alpha}, \ldots, z_{ip}\right)\]

La varianza de la \(\alpha\)-ésima componente en el conjunto de \(n\) objetos es:

\[\text{var}(Z_\alpha) = v_\alpha^\prime Y^\prime Y\, v_\alpha = v_\alpha^\prime R v_\alpha = \lambda_\alpha v_\alpha^\prime v_\alpha = \lambda_\alpha \]

Interpretación: \(v_1\) es la dirección de máxima varianza en el espacio de las variables; \(v_2\) es la dirección de máxima varianza ortogonal a \(v_1\); y así sucesivamente.

Análisis para las variables

De \(Y = ULV^\prime\) se obtiene \(Y^\prime = VLU^\prime\). Proyectando las variables sobre el espacio de objetos:

\[W = Y^\prime U = VL\]

La \(\alpha\)-ésima componente es \(w_\alpha = Y^\prime u_\alpha\) y la coordenada de la variable \(j\) sobre la componente \(\alpha\):

\[w_{j\alpha} = \sum_{i=1}^n u_{i\alpha}\, y_{ij}\]

Las columnas de \(W\) describen cómo cada variable se asocia con cada dirección principal. La distancia de la variable \(j\) al origen en el plano 1-2 mide cuánto de su varianza es capturada por esas dos componentes.

Proporción de varianza explicada

La varianza total de los datos estandarizados es \(\text{tr}(R) = p\).

La proporción de varianza capturada por las primeras \(q\) componentes es:

\[\tau_q = \frac{\sum_{\alpha=1}^q \lambda_\alpha}{\sum_{\alpha=1}^p \lambda_\alpha} = \frac{\sum_{\alpha=1}^q \lambda_\alpha}{p}\]

Criterios para elegir \(q\):

  1. Porcentaje acumulado: retener componentes hasta alcanzar un umbral prefijado (p.ej., 70–80 %).
  2. Valor propio mayor que 1: retener \(\lambda_\alpha > 1\) (regla de Kaiser). Solo aplica cuando se trabaja con \(R\).
  3. Gráfico de sedimentación (scree plot): buscar el “codo” en la curva de valores propios.

Ecuaciones de transición (I)

Los vectores propios de \(Y^\prime Y\) y \(YY^\prime\) comparten los valores propios.

Sea \(v_\alpha\) vector propio de \(R = Y^\prime Y\) con valor propio \(\lambda_\alpha\):

\[Y^\prime Y\, v_\alpha = \lambda_\alpha\, v_\alpha\]

Multiplicando por \(Y\) a la izquierda:

\[Y Y^\prime (Y v_\alpha) = \lambda_\alpha (Y v_\alpha)\]

\(Y v_\alpha\) es vector propio de \(YY^\prime\) con el mismo valor propio \(\lambda_\alpha\). Las matrices \(Y^\prime Y\) y \(YY^\prime\) comparten todos sus valores propios no nulos.

Ecuaciones de transición (II)

La norma de \(Yv_\alpha\) es:

\[\|Yv_\alpha\| = \sqrt{v_\alpha^\prime Y^\prime Y v_\alpha} = \sqrt{\lambda_\alpha}\]

Por tanto, el vector normalizado en el espacio de objetos es:

\[u_\alpha = \frac{1}{\sqrt{\lambda_\alpha}}\,Y v_\alpha\]

Y recíprocamente:

\[v_\alpha = \frac{1}{\sqrt{\lambda_\alpha}}\,Y^\prime u_\alpha\]

Ecuaciones de transición (III)

Sustituyendo \(v_\alpha = \frac{1}{\sqrt{\lambda_\alpha}} Y^\prime u_\alpha\) en \(z_\alpha = Yv_\alpha\):

\[z_\alpha = Y v_\alpha = \frac{1}{\sqrt{\lambda_\alpha}}\,YY^\prime u_\alpha = \frac{\lambda_\alpha}{\sqrt{\lambda_\alpha}}\,u_\alpha = \sqrt{\lambda_\alpha}\,u_\alpha\]

Conclusión clave: Basta calcular los vectores propios de \(R = Y^\prime Y\) para obtener los del espacio de objetos, y viceversa. En la práctica, se elige la descomposición más eficiente según las dimensiones de la tabla (\(n\) vs \(p\)).

Construcción de las componentes

Método de multiplicadores de Lagrange

El primer vector de cargas \(v_1\) es la solución del problema de optimización:

\[\max_{v_1} \quad v_1^\prime R\, v_1 \qquad \text{sujeto a} \quad v_1^\prime v_1 = 1\]

El Lagrangiano del problema es:

\[\mathcal{L} = v_1^\prime R\, v_1 - \lambda_1(v_1^\prime v_1 - 1)\]

Derivando e igualando a cero:

\[\frac{\partial \mathcal{L}}{\partial v_1} = 2R\,v_1 - 2\lambda_1 v_1 = 0 \implies R\,v_1 = \lambda_1\,v_1\]

Conclusión: \(\lambda_1\) y \(v_1\) son el valor propio mayor y su vector propio asociado de \(R\). Las componentes sucesivas se obtienen imponiendo ortogonalidad \(v_j^\prime v_i = 0\) para \(i < j\).

Cálculo de las componentes principales

Ordenando los valores propios de \(R\) de mayor a menor: \(\lambda_1 \ge \lambda_2 \ge \cdots \ge \lambda_p \ge 0\), la \(\alpha\)-ésima componente principal es:

\[Z_\alpha = Y\, v_\alpha = \frac{1}{\sqrt{n}}\; \widetilde{Y}\, v_\alpha\]

con varianza \(\text{var}(Z_\alpha) = \lambda_\alpha\).

Propiedad fundamental — conservación de la varianza total:

\[\text{tr}(R) = \sum_{j=1}^p s_j^2 = p = \sum_{\alpha=1}^p \lambda_\alpha\]

El ACP redistribuye la varianza total de las \(p\) variables originales en \(p\) componentes independientes, concentrando la mayor parte en las primeras.

Guías para la interpretación

Calidad de la representación global

La calidad de representación de un conjunto de \(q\) componentes mide qué fracción de la varianza total captura la aproximación de rango \(q\):

\[\tau_q = \frac{\sum_{\alpha=1}^q \lambda_\alpha}{p}\]

Tres criterios para la interpretación de los factores

  1. Correlaciones variable-Factor: Indican hasta dónde es capaz una variable de explicar o conformar el factor.
  2. Contribuciones: Es el aporte de cada variable a la varianza del factor.
  3. Cosenos cuadrados (cos2): Indican hasta dónde un factor es capaz de dar cuenta de una variable.

Interpretación de los factores

La correlación entre la variable \(X_j\) y la componente \(Z_\alpha\) es:

\[r(X_j, Z_\alpha) = \sqrt{\lambda_\alpha}\; v_{j\alpha}\]

Interpretación:

  • Si \(|r(X_j, Z_\alpha)|\) es alto, la variable \(X_j\) tipifica bien la componente \(\alpha\).
  • Variables con alta correlación con la misma componente miden aspectos similares.
  • Variables con correlaciones de signo opuesto están inversamente relacionadas.

En la práctica, en FactoMineR las coordenadas de las variables en el plano se obtienen directamente como \(\sqrt{\lambda_\alpha}\; v_{j\alpha}\), lo que facilita la interpretación.

Interpretación de los factores

La contribución de la variable \(j\) a la componente \(\alpha\) mide qué fracción de \(\lambda_\alpha\) aporta esa variable:

\[\text{CTR}(j, \alpha) = \frac{v_{j\alpha}^2}{\sum_{k=1}^p v_{k\alpha}^2} = v_{j\alpha}^2\]

ya que \(v_\alpha^\prime v_\alpha = 1\)

Para los objetos, la contribución del objeto \(i\) a la componente \(\alpha\) es:

\[\text{CTR}(i, \alpha) = \frac{z_{i\alpha}^2}{\sum_{i^\prime=1}^n z_{i^\prime\alpha}^2} = \frac{z_{i\alpha}^2}{\lambda_\alpha}\]

Note

Las contribuciones suman 1 sobre todas las variables (u objetos) para cada componente fija. Son útiles para identificar qué variables (u objetos) “definen” cada componente.

Interpretación de los factores

Los cosenos cuadrados (\(\cos^2\)) miden la calidad de la representación de un objeto o variable en un plano factorial:

Para las variables: \[\cos^2(\theta_{j,\alpha}) = \lambda_\alpha\, v_{j\alpha}^2 = r^2(X_j, Z_\alpha)\]

Para los objetos: \[\cos^2(i, \alpha) = \frac{z_{i\alpha}^2}{\sum_{\beta=1}^p z_{i\beta}^2} = \frac{z_{i\alpha}^2}{\left\lVert z_i\right\rVert^2}\]

Warning

Una variable puede tener alta contribución a una componente pero bajo cos² en el plano si la norma de su vector de coordenadas es pequeña. Siempre se recomienda interpretar ambos indicadores conjuntamente.

Ilustración contribuciones y cosenos cuadrados

Planos factoriales y distancias entre variables

Las variables se representan en el plano factorial como vectores desde el origen. La distancia entre dos variables en el espacio de \(q\) componentes es:

\[d^2(X_j, X_{j^\prime}) = 2\left(1 - \cos\theta_{jj^\prime}\right)\]

donde \(\theta_{jj^\prime}\) es el ángulo entre sus vectores en el plano.

Ángulo Coseno Distancia Interpretación
\(0°\) \(+1\) \(0\) Directamente correlacionadas
\(90°\) \(0\) \(\sqrt{2}\) Incorrelacionadas
\(180°\) \(-1\) \(2\) Inversamente correlacionadas

Planos factoriales y distancias entre variables

Tipificación de los objetos

Para interpretar los objetos en el plano factorial se utilizan:

  • Coordenadas (\(z_{i\alpha}\)): posición del objeto sobre cada componente. Objetos con coordenadas similares tienen perfiles similares.
  • Contribuciones (CTR): objetos con CTR alta “definen” la componente.
  • Cosenos cuadrados: mide si el objeto está bien representado en el plano.
  • Cuadrantes opuestos: objetos en cuadrantes opuestos tienen perfiles antípodas.
  • Distancia al origen: objetos lejos del origen tienen perfiles distintos al perfil medio.

Tipificación de los objetos

Tipificación de los objetos

Biplots: relaciones objeto-variable

El biplot representa simultáneamente objetos y variables en el mismo plano factorial.

  • Los objetos aparecen como puntos.
  • Las variables aparecen como vectores o flechas desde el origen.
  • Un objeto cercano al extremo de una variable tiene un valor alto en esa variable.
  • Un objeto opuesto al extremo de una variable tiene un valor bajo en ella.
  • Variables con flechas en la misma dirección están correlacionadas positivamente.

Note

En el biplot de factoextra (fviz_pca_biplot), los vectores de las variables están escalados por \(\sqrt{\lambda_\alpha}\), lo que facilita la interpretación simultánea.

Factor tamaño y variables suplementarias

Factor tamaño: Cuando la primera componente está correlacionada con todas las variables, se interpreta como un indicador de “tamaño” o “nivel general”. Las componentes posteriores capturan contrastes (forma, estructura).

Variables suplementarias (ilustrativas):

Variables que no participan en el cálculo del ACP pero se proyectan sobre el plano para interpretar las componentes en términos de variables externas o validar el análisis.

PCA(datos, quanti.sup = c(3, 5))   # columnas 3 y 5 como suplementarias

Objetos suplementarios (ilustrativos):

Objetos que no participan en el cálculo pero se proyectan para evaluar su similitud con los objetos activos.

PCA(datos, ind.sup = c(1, 4, 7))   # filas 1, 4 y 7 como ilustrativas

Ejemplo 1: Rankings universitarios latinoamericanos

Descripción de los datos

Se dispone de tres rankings internacionales para universidades latinoamericanas:

Ranking Institución Criterio principal
Scimago SCImago Research Group Producción e impacto científico
QS Quacquarelli Symonds Reputación académica y empleabilidad
Webometrics CSIC (España) Presencia y visibilidad en internet

Los datos corresponden a promedios por país de las posiciones de sus universidades (en negativo, para que mayor = mejor posición):

Carga de los datos

library(pacman)
p_load(tidyverse, FactoMineR, factoextra, janitor, corrplot)

url <- "https://github.com/jgbabativam/Curso_Multivariado/raw/main/Datos/"
rank_lat <- read.csv2(paste0(url, "r14_Sci_Qs_Webometrics.csv"))


UniPais Pais SC.Lac.Ranking QS.Ranking WEB.Ranking.LA
DE SAO PAULO (USP) - BRA BRA 1 2 1
NAL AUTONO DE (UM) - MEX MEX 2 8 2
Es DE CAMPIS (UNICAMP) - BRA BRA 4 3 8
BUENOS AIRES - ARG ARG 7 19 7
DO RD Janeiro FED - BRA BRA 5 4 5
EEs PAULISTA JULIO MESQU - BRA BRA 3 9 11
Fe DO RG D SUL - BRA BRA 6 10 3
Fe MG - BRA BRA 8 10 9
U de - CHL CHL 10 6 6
POTFIC CATOLICA DE - CHL CHL 13 1 24
Fe DE SAO PAULO (UNIFESP) - BRA BRA 9 15 54
NAL DPL - ARG ARG 15 21 18
Fe SCT - BRA BRA 11 41 4
DO ESTADO DO R de Janeiro (UERJ) - BRA BRA 24 34 35
DE BRASILIA - BRA BRA 19 17 13
Fe DE SAO CARLOS - BRA BRA 21 18 43
LA REPUBLICA (UDELAR) - URY URY 33 54 137
Fe DO PARA (UFPR) - BRA BRA 14 40 12
Fe DO PERMBUCO - BRA BRA 17 43 21
CONCEPCION - CHL CHL 28 12 32
LOS ANDES - COL COL 47 5 38
Fe DO CEARA (UFC) - BRA BRA 22 100 17
INSTITUTO POLITECNICO NAL (IPN) - MEX MEX 16 26 23
Fe DA BAHIA - BRA BRA 29 73 14
NAL DE CORDOBA - ARG ARG 30 25 19
NAL DE - COL COL 18 14 10
FLUMINENSE Fe - BRA BRA 23 49 16
PUERTO RICO - PRI PRI 26 48 26
AUTONOMA METROPOLITA (UAM) - MEX MEX 27 35 15
Fe DE SANTA MARIA - BRA BRA 25 94 40
TECNICA FEDERICO SANTA MARIA - CHL CHL 61 39 74
Fe DE PELOTAS - BRA BRA 41 106 82
ANTIOQUIA - COL COL 37 23 37
Es DE MARINGA - BRA BRA NA 88 48
POTFIC CATOLICADORIOGRANDEDOSUL - BRA BRA 42 38 42
Fe DA PARAIBA - BRA BRA 36 130 49
POTFIC CATOLICA DO R de Janeiro -PUC - BRA BRA 40 13 30
Fe DE VIÇOSA - BRA BRA 20 74 33
IBEROAMERICA (UIA) - MEX MEX 134 28 90
Fe DE GOIAS - BRA BRA 35 103 29
BENEMERITA AUTONOMA DE PUEBLA - MEX MEX 50 70 66
SANTIAGO DE (USACH) - CHL CHL 60 16 34
AUTONOMA DE SAN LUIS DE POTOSI - MEX MEX 64 98 108
Fe DO RIO GRANDE DO NORTE - BRA BRA 32 121 44
NAL DE ROSARIO - ARG ARG 52 46 57
Fe DE UBERLÂNDIA - BRA BRA 39 117 39
U CRica - CRI CRI 1 23 20
NAL MAR DPL - ARG ARG 54 53 64
CENTRAL DE VENEZUELA (UCV) - VEN VEN 45 27 52
NAL DEL LITORAL - ARG ARG 63 81 73
AUSTRAL DE - CHL CHL 65 37 45
NAL DE CUYO - ARG ARG 86 56 70
NAL DEL SUR - ARG ARG 57 82 110
PERUA CAYETANO HEREDIA - PER PER 101 65 193
AUTONOMA DE NUEVO LEON (UANL) - MEX MEX 49 64 51
Es DE LONDRI - BRA BRA 43 74 62
SAN FRANCISCO DE QUITO - ECU ECU 181 71 141
GUAJUATO - MEX MEX 59 100 95
Fe DE LAVRAS - BRA BRA 34 104 101
POTFIC CATOLICA DO PARA -PUCPR - BRA BRA 76 92 69
TECNOLOGICO DE MONTERREY (ITESM) - MEX MEX 56 7 28
DEL VALLE - COL COL 68 51 72
GUADALAJARA (UDG) - MEX MEX 48 59 25
VP - CHL CHL 99 83 159
NAL DE TUCUMAN - ARG ARG 81 74 122
LOS ANDES MERIDA - VEN VEN 75 61 46
CATOLICA DEL NORTE - CHL CHL 98 86 100
AUTONOMA DEL ESTADO DE MORELOS - MEX MEX 73 124 216
NAL DE SAN MARTIN (UNSAM) - ARG ARG 113 125 172
INDUSTRIAL DE SANTANDER - COL COL 95 69 113
AUTONOMA DE YUCATAN - MEX MEX 106 140 143
Fe DE JUIZ DE FORA - BRA BRA 55 130 87
DO NORTE FLUMINENSE Es - BRA BRA 23 138 239
Fe DO ESPIRITO SANTO - BRA BRA 46 142 83
NAL DE SAN LUIS - ARG ARG 103 84 86
AUTONOMA DE BAJA CALIFORNIA - MEX MEX 85 142 81
SIMON BOLIVAR VENEZUELA - VEN VEN 66 32 78
Fe DE OURO PRETO - BRA BRA 78 110 93
LA HABA - CUB CUB 77 91 60
POTFIC CATOLICA DE VP - CHL CHL 82 29 50
POTFIC JAVERIA - COL COL 74 31 61
NAL DE RIO CUARTO - ARG ARG 116 115 218
TALCA - CHL CHL 105 63 58
LA FRONTERA (UFRO) - CHL CHL 93 78 98
Fe DO MG DSUL - BRA BRA 71 149 36
Fe DO R de Janeiro RURAL - BRA BRA 62 137 140
ANDRES BELLO - UB - CHL CHL 107 86 145
TECNOLOGICA NAL (UTN) - ARG ARG 122 85 55
POTFIC CATOLICA MG - BRA BRA 117 128 104
AUTONOMA DEL ESTADO DE - MEX MEX 91 68 56
DEL ROSARIO - COL COL 132 42 128
DIEGO PORTALES - CHL CHL 129 66 132
LA SERE - CHL CHL 177 121 153
POTFIC CATOLICA DEL PERU - PER PER 159 30 31
Es DE PONTA GROSSA - BRA BRA 104 138 147
MAYOR DE SAN ANDRES - BOL BOL 207 112 125
PRESBITERIA MACKENZIE - BRA BRA 129 93 109
DEL ZULIA - VEN VEN 80 147 152
Fe DE SAO JOAO DEL-REI UFSJ - BRA BRA 112 148 165
NAL MAYOR DE SAN MARCOS - PER PER 131 57 65
DO VALE DO RIO DOS SINOS - BRA BRA 119 146 71
VERACRUZA - MEX MEX 100 141 89
NAL - CRI CRI 192 54 102
DO ESTADO SCT - BRA BRA 11 121 59
DEL NORTE - COL COL 407 72 189
LAS AMERICAS PUEBLA (UDLAP) - MEX MEX 147 50 103
NAL DE ASUNCION - PY PY 253 78 204
POTFIC CATOLICA DEL ECUADOR - ECU ECU 221 97 144
COLIMA - MEX MEX 146 150 53
DEL DESARROLLO - CHL CHL 160 150 240
DEL BIO-BIO - CHL CHL 153 144 77
POTFIC BOLIVARIA - COL COL 154 89 136
CARABOBO - VEN VEN 127 126 91
ANTOFAGASTA - CHL CHL 172 126 175
POTFIC CATOLICA DO CAMPIS - BRA BRA 162 114 211
AUSTRAL - ARG ARG 250 20 262
UCA POTFIC CATOLICA ARGENTI - ARG ARG 237 22 171
PAMA (UP) - PAN PAN 262 116 296
ADOLFO IBAÑEZ - CHL CHL 199 52 268
LOS ANDES - CHL CHL 178 80 318
I Tec AUTONOMO DE (ITAM) - MEX MEX 214 36 168
POTFIC CATOLICADESAOPAULO(PUC-SP) - BRA BRA 148 33 96
TORCUATO DI TELLA - ARG ARG 285 44 328
PAMERICA (UP) - MEX MEX 241 99 272
LA SABA - COL COL 217 67 180
JORGETADEOLOZANO - COL COL 286 119 225
NAL AGRARIA LA MOLI - PER PER 269 132 233
SAN ANDRES - ARG ARG 310 46 257
ESC SUP POLITEC DEL LITORAL - ESPOL - ECU ECU 318 134 79
PALERMO - ARG ARG 327 60 148
CATOLICA DEL URUGUAY (UCU) - URY URY 331 111 377
TECNOLOGICA DE PAMA (UTP) - PAN PAN 300 105 275
EAFIT - COL COL 193 77 129
I Tec DE BUENOS AIRES (ITBA) - ARG ARG 297 45 413
COLEGIO DE - MEX MEX 259 112 151
MONTERREY - MEX MEX 56 109 291
ABIERTA INTERAMERICA - UAI - ARG ARG 331 134 375
MONTEVIDEO - URY URY 367 96 429
ORT URUGUAY - URY URY 336 107 309
ALBERTO HURTADO - CHL CHL 272 119 350
BELGRANO - ARG ARG 346 62 319
ARGENTI DE LA EMPRESA -UADE - ARG ARG 352 144 342
LA SALLE - COL COL 300 134 346
CATOLICA ANDRES BELLO - UCAB - VEN VEN 369 58 217
EXTERDO DE - COL COL 340 102 351
DEL SALVADOR - ARG ARG 268 90 525
METROPOLITA - VEN VEN 392 117 554
U de LIMA - PER PER 396 133 475
DE CIEN EMPRESAR Y SOC (UCES) - ARG ARG 404 107 480

Preparación de los datos

Se analizan los promedios por país: columnas 2 (país) y 3-5 (rankings numéricos)

rank <- rank_lat |> 
        select(Pais, SC.Lac.Ranking, QS.Ranking, WEB.Ranking.LA) |> 
        group_by(Pais) |> 
        summarise(across(where(is.numeric), ~mean(., na.rm = T))) |>
        column_to_rownames("Pais") |> 
        mutate(across(where(is.numeric), ~.*-1)) #Invertir escala 
         
names(rank) <- c("SC_Lac", "QS", "WEB")
País SC_Lac QS WEB
ARG -179.4 -68.3 -195.5
BOL -207.0 -112.0 -125.0
BRA -45.6 -77.9 -59.9
CHL -113.0 -69.7 -126.9
COL -169.1 -63.9 -143.9
CRI -96.5 -38.5 -61.0
CUB -77.0 -91.0 -60.0
ECU -240.0 -100.7 -121.3
MEX -96.3 -79.3 -101.2
PAN -281.0 -110.5 -285.5
PER -211.2 -83.4 -199.4
PRI -26.0 -48.0 -26.0
PY -253.0 -78.0 -204.0
URY -266.8 -92.0 -313.0
VEN -164.9 -81.1 -170.0

Valores propios y varianza explicada

pca_rank <- PCA(rank, graph = FALSE)
fviz_eig(pca_rank, addlabels = TRUE, ylim = c(0, 100), barfill = "#0077b6", barcolor = "#0077b6", linecolor = "#C0392B") +
  labs(title = "Gráfico de sedimentación — Rankings latinoamericanos",
       x = "Componente", y = "% varianza explicada") + theme_bw()

Plano 1-2 de variables

fviz_pca_var(pca_rank, col.var = "contrib",
             gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"),
             repel = TRUE, title = "Plano 1-2 — Variables (rankings)") + theme_bw()

Indicadores básicos — Variables

res_var <- pca_rank$var
cat("=== Coordenadas (cargas × √λ) ===\n")
=== Coordenadas (cargas × √λ) ===
round(res_var$coord, 3)
       Dim.1  Dim.2  Dim.3
SC_Lac 0.953 -0.167 -0.251
QS     0.771  0.634  0.058
WEB    0.906 -0.364  0.215
cat("\n=== Contribuciones (%) ===\n")

=== Contribuciones (%) ===
round(res_var$contrib, 2)
       Dim.1 Dim.2 Dim.3
SC_Lac 39.11  4.94 55.95
QS     25.57 71.49  2.94
WEB    35.32 23.57 41.11
cat("\n=== Cosenos cuadrados ===\n")

=== Cosenos cuadrados ===
round(res_var$cos2, 3)
       Dim.1 Dim.2 Dim.3
SC_Lac 0.909 0.028 0.063
QS     0.594 0.402 0.003
WEB    0.821 0.133 0.046

Tipificación de los países

fviz_pca_ind(pca_rank, col.ind = "cos2",
             gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"), repel = TRUE, 
             title = "Plano 1-2 — Países (rankings universitarios)") + theme_bw()

Biplot: países y rankings

fviz_pca_biplot(pca_rank, repel = TRUE,
                col.var = "#C0392B", col.ind = "#0077b6",
                title = "Biplot — Rankings universitarios latinoamericanos") + theme_bw()

Análisis complementario

Número de instituciones por país:

n_inst <- rank_lat |>
          select(Pais, SC.Lac.Ranking, QS.Ranking, WEB.Ranking.LA) |> 
          count(Pais, name = "nInst") 

n_inst[n_inst$nInst == 1,] ## Paises con una sola institución
   Pais nInst
2   BOL     1
7   CUB     1
12  PRI     1
13   PY     1
Pais nInst
ARG 24
BOL 1
BRA 43
CHL 20
COL 14
CRI 2
CUB 1
ECU 3
MEX 21
PAN 2
PER 5
PRI 1
PY 1
URY 4
VEN 7

Objetos suplementarios: países con una sola universidad

Los países con una sola institución en los rankings (Bolivia, Cuba, Puerto Rico, Paraguay) son atípicos respecto a los demás. Se incluyen como objetos ilustrativos:

# Bolivia=2, Cuba=7, Puerto Rico=12, Paraguay=13
pca_supl <- PCA(rank, ind.sup = c(2, 7, 12, 13), graph = FALSE)
fviz_pca_biplot(pca_supl, repel = TRUE, col.var  = "#C0392B", col.ind  = "#0077b6", col.ind.sup = "#8E44AD",
                title = "Biplot con países ilustrativos (en morado)") + theme_bw()

Ejemplo 2: Calidad de vida — ECV DANE

Encuesta Nacional de Calidad de Vida

La ECV es el principal instrumento del DANE para medir las condiciones de vida de los hogares colombianos. Se realiza anualmente con cobertura nacional y departamental.

El conjunto de datos que usaremos contiene 15 indicadores de calidad de vida para los 33 departamentos de Colombia (incluido Bogotá D.C.), construidos a partir de los resultados publicados por el DANE para la ECV 2022.

Todas las variables están en escala 0–100 con la convención:

Mayor valor = mejor condición de vida

Los indicadores en escala inversa (analfabetismo, hacinamiento, IPM) se transformaron como \(I_j = 100 - \text{indicador}\).

Carga de los datos

library(pacman)
p_load(tidyverse, janitor, corrplot)

url <- "https://github.com/jgbabativam/Curso_Multivariado/raw/main/Datos/"
ecv <- read.csv(paste0(url, "ecv_departamentos_2022.csv"), header = TRUE) |> 
       column_to_rownames("departamento") |> 
       rename(inv_hacinamiento = sin_hacinamiento,
              inv_ipm = sin_ipm, leen_adultos = lit_adultos)
departamento piso_adec paredes_adec acueducto alcantarillado energia gas_natural internet nevera computador afiliacion_salud educ_superior asistencia_esc leen_adultos inv_hacinamiento inv_ipm
Bogotá D.C. 98.2 99.1 97.8 96.9 99.8 78.3 77.8 96.8 61.8 95.8 34.8 93.8 98.5 95.8 95.9
Atlántico 90.4 93.8 92.6 87.9 99.2 61.9 59.7 90.9 42.9 92.9 21.9 88.9 96.5 92.9 91.1
Valle del Cauca 88.3 92.7 90.1 84.1 99.1 54.8 58.1 89.7 41.8 91.2 20.8 87.8 96.0 92.2 89.2
Antioquia 87.1 91.3 87.9 82.4 99.3 52.1 56.9 89.2 40.7 92.1 19.7 87.1 96.2 92.1 90.3
Quindío 90.5 92.1 91.7 87.2 99.7 44.7 62.3 91.3 45.9 93.8 22.8 89.7 97.2 94.2 92.8
Risaralda 89.1 91.5 89.8 84.3 99.8 41.9 59.8 89.8 43.8 92.7 21.7 88.8 97.0 93.1 91.9
Caldas 85.3 88.2 85.9 79.8 99.1 37.8 54.7 86.9 39.7 91.1 18.9 86.9 96.5 92.9 90.2
San Andrés 82.1 85.4 87.6 83.2 99.2 9.8 49.8 85.7 37.9 89.2 17.8 84.8 95.9 90.8 87.9
Santander 86.2 89.7 84.3 79.7 99.2 48.2 51.7 87.8 37.8 92.8 19.8 86.7 97.2 93.2 91.3
Meta 78.4 83.1 77.8 72.8 98.3 22.3 39.8 81.9 29.8 89.7 14.9 83.8 95.5 90.9 87.1
Casanare 79.1 84.2 77.2 72.3 98.7 18.1 38.2 82.7 27.9 90.8 12.8 82.9 95.8 90.2 86.3
Cundinamarca 83.5 87.3 82.1 77.4 98.9 30.2 44.9 85.8 33.7 91.7 16.9 85.7 96.5 92.1 89.2
Boyacá 80.2 83.8 78.9 73.1 97.8 25.3 37.9 81.7 27.8 90.1 14.8 83.7 96.0 91.1 87.3
Tolima 77.8 82.1 76.8 70.8 97.9 28.1 36.8 79.8 26.9 88.9 13.9 82.8 94.5 90.2 85.1
Nte. de Santander 81.3 84.7 80.7 74.6 98.1 34.7 39.7 82.7 29.7 89.7 15.8 83.9 95.5 91.2 87.2
Huila 77.1 80.3 75.8 69.9 97.8 27.2 35.9 78.9 25.8 88.8 13.7 81.8 94.2 89.1 84.3
Arauca 68.4 72.5 65.3 57.9 96.9 11.9 24.7 72.1 17.9 86.9 9.9 78.8 92.5 86.2 78.2
Caquetá 65.1 69.3 62.8 55.7 96.2 8.2 22.8 69.2 15.8 85.8 8.8 77.9 92.0 85.1 77.1
Putumayo 63.2 67.1 60.2 53.4 95.3 6.1 19.9 65.9 13.9 84.9 7.8 76.8 91.5 83.2 74.2
Cesar 67.5 71.4 64.7 57.8 96.8 14.8 24.8 70.3 17.8 86.8 9.9 78.7 91.8 84.9 77.3
Magdalena 64.3 68.9 61.9 55.1 96.1 11.9 21.8 66.8 14.9 85.7 8.7 77.8 91.0 83.8 75.2
Bolívar 68.2 72.8 65.8 59.7 97.2 19.7 27.1 71.8 19.7 86.9 11.8 78.7 92.2 86.1 79.1
Sucre 62.1 65.7 59.7 52.8 95.3 9.8 20.9 64.9 13.8 84.8 7.9 76.9 90.5 82.9 74.3
Córdoba 60.5 64.2 57.9 51.2 95.1 8.1 18.8 62.8 12.9 83.9 7.8 75.1 89.8 81.8 72.1
Nariño 61.2 65.1 58.7 51.8 93.8 8.7 19.7 63.7 12.8 84.8 7.7 75.8 90.2 83.1 73.2
Cauca 59.4 63.4 55.9 49.3 92.9 7.2 17.2 60.9 11.2 82.9 6.9 73.9 89.5 81.2 70.3
La Guajira 54.1 62.8 51.8 48.7 91.2 3.9 17.8 63.8 10.8 79.8 6.8 73.8 86.0 73.1 60.2
Chocó 47.2 56.9 46.7 18.9 88.7 0.2 14.9 58.7 9.8 81.9 6.7 75.7 87.8 74.8 58.3
Amazonas 43.5 49.8 39.8 33.2 84.9 0.1 10.8 53.8 7.9 78.9 5.8 72.1 85.0 72.2 54.1
Vaupés 38.1 43.7 32.7 26.1 78.3 0.1 7.9 46.1 5.8 74.8 4.9 68.7 81.0 68.1 48.2
Guainía 36.2 42.1 31.2 23.8 75.8 0.1 6.8 43.8 4.9 73.2 3.9 66.9 80.0 66.2 45.3
Guaviare 55.3 59.7 71.7 67.9 95.1 4.9 21.7 77.9 14.8 87.9 10.8 81.8 91.0 83.3 76.2
Vichada 33.4 39.8 27.9 21.7 72.9 0.1 5.9 39.8 3.9 70.8 3.7 64.8 79.0 65.1 42.1

Exploración de la matriz de correlaciones

R_ecv <- cor(ecv)
corrplot(R_ecv, method  = "color", type    = "upper", order   = "hclust", 
         col = colorRampPalette(c("#2b8cbe", "white", "#d7301f"))(200),  diag = FALSE,
         tl.cex  = 0.65, tl.col  = "black", addCoef.col = "black", number.cex  = 0.45, mar = c(0, 0, 1.5, 0))

Análisis de componentes principales

pca_ecv <- PCA(ecv, graph = FALSE,
               scale.unit = TRUE,   # estandariza automáticamente
               ncp        = 5)      # retener 5 componentes
# Tabla de valores propios
eig_ecv <- get_eigenvalue(pca_ecv)
round(eig_ecv, 3)
       eigenvalue variance.percent cumulative.variance.percent
Dim.1      13.889           92.595                      92.595
Dim.2       0.806            5.371                      97.967
Dim.3       0.103            0.688                      98.655
Dim.4       0.069            0.458                      99.113
Dim.5       0.055            0.364                      99.477
Dim.6       0.032            0.213                      99.691
Dim.7       0.027            0.183                      99.874
Dim.8       0.008            0.052                      99.925
Dim.9       0.005            0.034                      99.959
Dim.10      0.002            0.013                      99.972
Dim.11      0.002            0.011                      99.983
Dim.12      0.002            0.010                      99.993
Dim.13      0.001            0.003                      99.997
Dim.14      0.000            0.002                      99.998
Dim.15      0.000            0.002                     100.000

Varianza explicada — Gráfico de sedimentación

fviz_eig(pca_ecv, addlabels  = TRUE, ncp = 10) +
  labs(title = "Gráfico de sedimentación — Calidad de vida ECV 2022",
       x = "Componente", y = "% varianza explicada") + theme_bw()

Plano de variables: tres criterios de interpretación

fviz_pca_var(pca_ecv, col.var = pca_ecv$var$coord[, 1], repel = TRUE,
             gradient.cols = c("#D6EAF8", "#2980B9", "#1A5276"),
             title = "Plano 1-2 — coloreado por correlación con Dim 1") + theme_bw()

Note

Dim 1 explica ~92 % de la varianza: es un factor tamaño. Todas las variables correlacionan positivamente con él. Este factor refleja infraestructura y bienestar general (acueducto, alcantarillado, electricidad, vivienda, conectividad). lit_adultos y educ_superior podrían requerir una lectura aparte. Que una sola dimensión capture casi toda la varianza es un patrón muy común en tablas de indicadores socioeconómicos.

fviz_pca_var(pca_ecv, col.var = "contrib", repel = TRUE,
             gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"),
             title = "Plano 1-2 — coloreado por contribución") + theme_bw()

fviz_pca_var(pca_ecv, col.var = "cos2", repel = TRUE,
             gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"),
             title = "Plano 1-2 — coloreado por cos²") + theme_bw()

Contribuciones de los indicadores

fviz_contrib(pca_ecv, choice = "var", axes = 1,
             fill = "#0077b6", color = "#0077b6",
             title = "Contribuciones a la Dim 1") +
  theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust = 1)) 

fviz_contrib(pca_ecv, choice = "var", axes = 2,
             fill = "#C0392B", color = "#C0392B",
             title = "Contribuciones a la Dim 2") +
  theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust = 1)) 

Plano de individuos (departamentos)

fviz_pca_ind(pca_ecv, col.ind   = "cos2", repel = TRUE, labelsize = 3.5,
             gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"),
             title     = "Plano 1-2 — Departamentos de Colombia") + theme_bw()

Biplot: departamentos e indicadores

fviz_pca_biplot(pca_ecv, repel = TRUE, labelsize = 3.5,
                col.var   = "#C0392B", col.ind   = "#0077b6",
                title     = "Biplot — Calidad de vida ECV 2022") + theme_bw()

Interpretación de las componentes — plano 1-2

Variables y objetos suplementarios

Ejemplo ARWU: variables activas vs. ilustrativas

Los rankings construidos con ponderaciones predefinidas (ARWU World Rank, Regional Rank, National Rank) pueden usarse como variables ilustrativas para validar si las componentes capturan los mismos patrones.

arwu <- read.csv2(paste0(url, "ARWU_100_top.csv")) |> clean_names()
rownames(arwu) <- make.unique(as.character(arwu$institution))

# Invertir rankings: mayor = mejor posición
arwu <- arwu |>
  mutate(across(c(world_rank, national_rank, regional_rank), ~ -.))

# Variables activas: seis criterios académicos
vars_act <- c("alumni", "award", "hi_ci", "n_s", "pub", "pcp")
# Variables ilustrativas: tres rankings y puntaje total
vars_sup <- c("world_rank", "national_rank", "regional_rank", "total_score")

arwu_pca_data <- arwu |> select(all_of(c(vars_sup, vars_act)))

pca_arwu <- PCA(arwu_pca_data,
                quanti.sup = 1:length(vars_sup),
                graph      = FALSE)

Plano de variables: criterios activos vs. ilustrativos

plot.PCA(pca_arwu, choix = "var",
         title = "ARWU — Variables activas (negro) y suplementarias (azul)")

Objetos suplementarios: universidades del rango 51-100

Las 50 universidades de menor rango se proyectan como objetos ilustrativos sobre el plano construido solo con el Top-50 del ARWU:

# Top 50 como activos; universidades 51-100 como ilustrativas
arwu_pca_supl <- PCA(arwu_pca_data,
                     quanti.sup = 1:length(vars_sup),
                     ind.sup    = 51:100,
                     graph      = FALSE)

fviz_pca_biplot(arwu_pca_supl,
                repel        = TRUE,
                col.var      = "#C0392B",
                col.ind      = "#0077b6",
                col.ind.sup  = "#8E44AD",
                label        = "var",
                title = "ARWU — Top 50 (azul) y objetos ilustrativos 51-100 (morado)") +
  theme_bw()

Objetos suplementarios: universidades del rango 51-100

Las 50 universidades de menor rango se proyectan como objetos ilustrativos sobre el plano construido solo con el Top-50 del ARWU:

Ejemplo: Análisis de imágenes

¿Qué es un píxel?

Un píxel (picture element) es la unidad mínima de una imagen digital: el punto de color más pequeño que puede representarse en pantalla o en un archivo.

  • En imágenes de escala de grises, cada píxel tiene un único valor de intensidad en \([0, 1]\) (0 = negro, 1 = blanco).
  • En imágenes a color, cada píxel contiene tres valores de intensidad, uno por canal: Rojo (R), Verde (G) y Azul (B).
  • Una imagen de resolución \(n \times m\) tiene \(n\) filas y \(m\) columnas de píxeles — en total \(n \cdot m\) píxeles.

Note

Los valores se almacenan usualmente como enteros en \([0, 255]\) (8 bits por canal). readJPEG() los normaliza automáticamente al intervalo \([0, 1]\).

El tensor RGB

Una imagen a color de \(n \times m\) píxeles se representa como un tensor (arreglo tridimensional):

\[\mathbf{T} \in \mathbb{R}^{n \times m \times 3}\]

  • Dimensión 1\(n\) filas (alto de la imagen)
  • Dimensión 2\(m\) columnas (ancho de la imagen)
  • Dimensión 3 — 3 canales de color: R, G, B

Cada canal es una “rebanada” o subtabla del tensor: una matriz \(n \times m\) cuyos valores indican la intensidad de ese color primario en cada píxel.

ACP aplicado a datos visuales

Una imagen digital en color es un arreglo tridimensional de dimensiones \(n \times m \times 3\):

  • \(n\): número de filas de píxeles (altura)
  • \(m\): número de columnas de píxeles (ancho)
  • \(3\): canales de color R, G, B

ACP aplicado a datos visuales

Cada canal es una matriz de intensidades en \([0,1]\). Si aplicamos ACP a cada canal por separado:

\[\text{Canal}_k = U_k\, L_k\, V_k^\prime, \quad k \in \{R, G, B\}\]

La reconstrucción usando solo las primeras \(q\) componentes es:

\[\widehat{\text{Canal}}_k^{(q)} = U_k^{(q)}\, L_k^{(q)}\, \left(V_k^{(q)}\right)^\prime\]

donde \(U_k^{(q)}\) y \(V_k^{(q)}\) son las primeras \(q\) columnas de \(U_k\) y \(V_k\).

Monte Rushmore

library(pacman)
p_load(jpeg, tidyverse)

url_img <- "https://raw.githubusercontent.com/jgbabativam/Curso_Multivariado/main/images/rushmore.jpg"

tmp <- tempfile(fileext = ".jpg")
download.file(url_img, tmp, mode = "wb")

imagen <- readJPEG(tmp)

cat("Dimensiones:", paste(dim(imagen), collapse = " × "), "\n")
Dimensiones: 853 × 1280 × 3 
cat("Filas (alto):", nrow(imagen), "| Columnas (ancho):", ncol(imagen), "| Canales RGB:", dim(imagen)[3])
Filas (alto): 853 | Columnas (ancho): 1280 | Canales RGB: 3

PCA aplicado a cada canal RGB

img <- imagen[seq(1, nrow(imagen), 3),
              seq(1, ncol(imagen), 3), ]

# ACP por canal (sin centrado: preserva la escala de intensidades)
pca_r <- prcomp(img[,,1], center = FALSE)
pca_g <- prcomp(img[,,2], center = FALSE)
pca_b <- prcomp(img[,,3], center = FALSE)

# Creo la lista con los PCA del RGB.
pca_imagen <- list(pca_r, pca_g, pca_b)

# Matriz Reconstruida
reconstruir <- function(pca_ls, n_comp) {
  sapply(pca_ls, function(p) {
    rec <- p$x[, 1:n_comp] %*% t(p$rotation[, 1:n_comp])
    pmax(0, pmin(1, rec))          
  }, simplify = "array")
}

## Generar Imágenes
getwd()
for (i in seq.int(3, round(nrow(imagen) - 700), length.out = 10)) {
  pca.img <- sapply(pca_imagen, function(j) {
    compressed.img <- j$x[,1:i] %*% t(j$rotation[,1:i])
  }, simplify = 'array')
  writeJPEG(pca.img, paste('imagen_con_', round(i,0), '_componentes.jpg', sep = ''))
}

Note

Se usa prcomp(..., center = FALSE) porque los valores de intensidad ya están en \([0,1]\) y centrar alteraría la escala de grises. La reconstrucción es \(\hat{X} = U^{(q)} \cdot (V^{(q)})^\prime\).

Varianza explicada acumulada en los tres canales

Reconstrucción progresiva con pocas componentes

Laboratorio

Laboratorio Ciudades


Para ver este laboratorio de clic sobre este enlace:

Laboratorio ACP

Índice de Probreza Multidimensional - IPM

Asignación por grupos

Cada grupo trabajará con una semilla distinta y con 3 dimensiones del IPM diferentes.

Grupo Semilla Dimensiones IPM asignadas
1 1234 Educación – Niñez y juventud – Trabajo
2 4321 Salud – Vivienda – Servicios públicos
3 2468 Educación – Salud – Trabajo
4 1357 Niñez y juventud – Vivienda – Servicios públicos
5 9876 Educación – Vivienda – Trabajo

Laboratorio (1/5)

Usando los datos a nivel de hogares del IPM de la Encuesta Nacional de Calidad de Vida (ECV 2025) disponibles en el portal de microdatos del DANE:

DANE Microdatos ECV 2025

Cada grupo debe usar el siguiente código como referencia para generar el conjunto de datos que va a trabajar. Los códigos deben ser entregados.

Laboratorio (2/5)

Selección de la muestra de 30.000 hogares.

library(pacman)
p_load(tidyverse, sampling, haven)

ipm <- read_sav("IPM2025.sav")
n_total <- 30000 # Tamaño muestra

# Tamaños por estrato (afijación proporcional)
tam_estrato <- ipm |> 
               count(DEPARTAMENTO) |> 
               mutate(nh = round(n / sum(n) * n_total))

# Diseño estratificado
set.seed(semilla)
muestra <- strata(data = ipm,
                  stratanames = "DEPARTAMENTO",
                  size = tam_estrato$nh,
                  method = "srswor")

df_ipm <- getdata(ipm, muestra)

Laboratorio (3/5)

  1. Calcules los indicadores de las variables del IPM de las dimensiones que le correspondió a nivel de departamento, incluyendo el promedio del IPM y el porcentaje de hogares en condición de pobreza multidimensional.

  2. Calcule la matriz de correlaciones entre los indicadores seleccionados.

  3. Aplique el ACP usando PCA() de FactoMineR:

  • scale.unit = TRUE
  • scale.unit = FALSE

¿Cambian los resultados? ¿Por qué?

  1. ¿Cuántas componentes retiene cada uno de los tres criterios presentados? Justifique cuál le parece más adecuado para este conjunto de datos.

Laboratorio (4/5)

  1. Construya el plano 1-2 de variables con fviz_pca_var(). Identifique:
  • Las dos variables peor representadas a la Dimensión 1.
  • Las dos variables con la peor contribución a la Dimensión 2.
  1. Construya el plano de individuos con fviz_pca_ind() coloreando por \(cos^2\) y otro por \(contrib\). Identifique:
  • El departamento con mejor calidad de vida general usando el criterio de correlación.
  • El departamento peor representado en el plano 1-2 usando el criterio de los cosenos cuadrados.
  • Dos departamentos con perfiles similares (use la distancia entre variables sobre el plano).
  • Dos departamentos con perfiles opuestos (use la distancia entre variables sobre el plano).

Laboratorio (5/5)

  1. Genere el biplot e interprete qué variable(s) caracterizan al departamento que quedó en el extremo derecho del eje 1.

  2. Agregue las variables IPM y porcentaje de hogares en condición de pobreza (sin transformar) como variables suplementarias usando quanti.sup. ¿Cómo se ubica en el plano de variables? ¿Qué componente captura mejor la pobreza multidimensional?

  3. Repita el ACP con los indicadores de una de las dimensiones como variables suplementarias. ¿Cambia la interpretación de las componentes?