Ejemplo práctico de PCA

Problema de ingeniería

Una empresa constructora, a través de su laboratorio de control de calidad, ha evaluado 50 mezclas de hormigón desarrolladas para distintos proyectos de infraestructura. El objetivo es comprender cuáles son las propiedades que más influyen en el comportamiento global del material y simplificar el análisis de los resultados obtenidos.

Para cada mezcla se realizaron ensayos de laboratorio y se registraron las siguientes propiedades físicas y mecánicas:

Los ingenieros sospechan que varias de estas propiedades están relacionadas entre sí. Por ejemplo, mezclas con alta resistencia mecánica podrían presentar también una mayor rigidez y menores valores de absorción y permeabilidad. En consecuencia, algunas variables podrían estar aportando información similar, dificultando la interpretación de los resultados cuando se analizan todas simultáneamente.

Con el fin de simplificar el estudio y obtener una visión más clara de los factores que caracterizan el desempeño de las mezclas, la empresa decide aplicar un Análisis de Componentes Principales (ACP).

Objetivos del análisis - Reducir la cantidad de variables originales mediante la construcción de un conjunto más pequeño de componentes principales. - Determinar qué propiedades explican la mayor parte de la variabilidad observada entre las mezclas de hormigón. - Identificar relaciones y correlaciones entre las variables medidas. - Interpretar el significado físico de los componentes principales obtenidos. - Representar las mezclas en un espacio de menor dimensión, conservando la mayor cantidad posible de información contenida en los datos originales.

Para ello, se dispone de una base de datos con 50 observaciones (mezclas de hormigón) y 6 variables cuantitativas, sobre la cual se realizará un Análisis de Componentes Principales utilizando la matriz de correlaciones estandarizada.

Este planteamiento justifica naturalmente preguntas típicas de un ejercicio de PCA, como:

¿Cuántos componentes deben retenerse? ¿Qué porcentaje de la variabilidad explican los primeros componentes? ¿Qué variables tienen mayor peso en cada componente? ¿Cómo se interpretan los componentes obtenidos desde el punto de vista ingenieril?

Paso 1: Crear una base de datos simulada

#====================================================
# BASE DE DATOS SIMULADA PARA PCA
# 50 mezclas de hormigón
#====================================================

set.seed(123)

n <- 50

# Factor latente de calidad del hormigón
calidad <- rnorm(n, mean = 0, sd = 1)

# Variables mecánicas (correlacionadas positivamente)
res_comp <- 40 + 8*calidad + rnorm(n, 0, 2)      # MPa
res_trac <- 4.5 + 0.7*calidad + rnorm(n, 0, 0.2) # MPa
mod_elas <- 32 + 5*calidad + rnorm(n, 0, 1.5)    # GPa

# Densidad (moderadamente correlacionada)
densidad <- 2350 + 40*calidad + rnorm(n, 0, 20)  # kg/m3

# Variables de durabilidad (relación inversa con calidad)
absorcion <- 6 - 1.2*calidad + rnorm(n, 0, 0.4)  # %
permeabilidad <- 3 - 0.8*calidad + rnorm(n, 0, 0.3) # 10^-12 m/s

# Base de datos
hormigon <- data.frame(
  Resistencia_Compresion = round(res_comp, 2),
  Resistencia_Traccion = round(res_trac, 2),
  Modulo_Elasticidad = round(mod_elas, 2),
  Densidad = round(densidad, 0),
  Absorcion_Agua = round(absorcion, 2),
  Permeabilidad = round(permeabilidad, 2)
)

Paso 2: Análisis descriptivo de los datos

summary(hormigon)
##  Resistencia_Compresion Resistencia_Traccion Modulo_Elasticidad    Densidad   
##  Min.   :24.37          Min.   :3.000        Min.   :21.44      Min.   :2257  
##  1st Qu.:35.07          1st Qu.:3.962        1st Qu.:29.36      1st Qu.:2331  
##  Median :39.88          Median :4.445        Median :31.91      Median :2353  
##  Mean   :40.57          Mean   :4.473        Mean   :32.23      Mean   :2351  
##  3rd Qu.:46.13          3rd Qu.:4.990        3rd Qu.:35.67      3rd Qu.:2370  
##  Max.   :56.75          Max.   :5.810        Max.   :41.50      Max.   :2455  
##  Absorcion_Agua  Permeabilidad  
##  Min.   :3.170   Min.   :1.280  
##  1st Qu.:5.117   1st Qu.:2.335  
##  Median :6.165   Median :2.975  
##  Mean   :6.058   Mean   :2.973  
##  3rd Qu.:6.768   3rd Qu.:3.487  
##  Max.   :7.980   Max.   :4.550
# Boxplots en una sola figura
boxplot(hormigon,
        main = "Boxplots de las propiedades del hormigón",
        xlab = "Variables",
        ylab = "Valores",
        las = 2)

La representación de los boxplots de las variables del conjunto de datos de hormigón muestra un comportamiento gráfico fuertemente condicionado por las diferencias de escala entre las variables medidas. En particular, se observa que la variable densidad presenta valores numéricos considerablemente más altos (del orden de miles de kg/m³) en comparación con el resto de variables, cuyas magnitudes se encuentran en rangos mucho más reducidos, como las resistencias mecánicas (decenas de MPa), el módulo de elasticidad (decenas de GPa) y las variables de durabilidad (valores entre 1 y 8).

Esta diferencia de órdenes de magnitud provoca que el eje vertical del gráfico quede dominado por la variable densidad, comprimiendo visualmente la variabilidad del resto de variables hacia la parte inferior del gráfico. Como consecuencia, aunque todas las variables presentan dispersión interna, esta no es fácilmente apreciable en la escala original cuando se representan conjuntamente.

Este fenómeno no implica un error en los datos ni en la representación, sino que refleja una característica inherente al conjunto de variables: cada una está expresada en unidades diferentes y con escalas propias. Sin embargo, esta situación limita la comparación directa de la variabilidad entre variables, ya que la escala absoluta distorsiona la percepción visual de su dispersión relativa.

Por este motivo, este comportamiento justifica la necesidad de estandarizar las variables antes de realizar análisis multivariantes como el Análisis de Componentes Principales (PCA), de forma que todas contribuyan en igualdad de condiciones al análisis y puedan ser comparadas en términos de variabilidad relativa.

Paso 3: Explorar correlaciones

cor(hormigon)
##                        Resistencia_Compresion Resistencia_Traccion
## Resistencia_Compresion              1.0000000            0.9186025
## Resistencia_Traccion                0.9186025            1.0000000
## Modulo_Elasticidad                  0.9156702            0.9139751
## Densidad                            0.8292378            0.8295366
## Absorcion_Agua                     -0.9237671           -0.9236953
## Permeabilidad                      -0.8897616           -0.8888953
##                        Modulo_Elasticidad   Densidad Absorcion_Agua
## Resistencia_Compresion          0.9156702  0.8292378     -0.9237671
## Resistencia_Traccion            0.9139751  0.8295366     -0.9236953
## Modulo_Elasticidad              1.0000000  0.8573631     -0.8975401
## Densidad                        0.8573631  1.0000000     -0.8320846
## Absorcion_Agua                 -0.8975401 -0.8320846      1.0000000
## Permeabilidad                  -0.8895435 -0.7989631      0.8600974
##                        Permeabilidad
## Resistencia_Compresion    -0.8897616
## Resistencia_Traccion      -0.8888953
## Modulo_Elasticidad        -0.8895435
## Densidad                  -0.7989631
## Absorcion_Agua             0.8600974
## Permeabilidad              1.0000000

La matriz de correlación del hormigón muestra una estructura muy consistente entre propiedades mecánicas y de durabilidad. La resistencia a compresión, tracción y el módulo de elasticidad están fuertemente correlacionados entre sí (r ≈ 0.91–0.92), lo que indica un comportamiento mecánico altamente redundante y gobernado por un mismo mecanismo resistente. La densidad también se asocia positivamente con estas variables (r ≈ 0.83–0.86), reflejando el efecto de la compacidad del material.

En contraste, la absorción de agua y la permeabilidad presentan correlaciones negativas fuertes con las propiedades mecánicas (r ≈ -0.89 a -0.92), lo que confirma que una mayor resistencia implica una menor conectividad porosa y, por tanto, mejor durabilidad. Entre ambas variables de durabilidad existe además una relación positiva alta (r = 0.86), indicando un mecanismo físico común.

En conjunto, se distinguen dos dominios principales: uno mecánico y otro de durabilidad, fuertemente acoplados de forma inversa, lo que refleja la relación clásica entre densificación del material y mejora simultánea de resistencia y desempeño frente al ingreso de agentes externos.

#Grupo 1: Propiedades mecánicas

#| Relación                                 | Correlación |
#| ---------------------------------------- | ----------: |
#| Resistencia compresión – Tracción        |       0.918 |
#| Resistencia compresión – Módulo elástico |       0.916 |
#| Tracción – Módulo elástico               |       0.914 |

Las variables mecánicas presentan correlaciones muy elevadas entre sí, lo que indica que responden a un mismo factor estructural del material.

En términos prácticos, las mezclas con mayor resistencia a compresión tienden también a presentar mayor resistencia a tracción y mayor rigidez (módulo de elasticidad).

Esto sugiere una alta redundancia de información y hace que este conjunto sea un candidato natural para reducción de dimensionalidad mediante PCA.

#Grupo 2: Indicadores de durabilidad

#| Relación                  | Correlación |
#| ------------------------- | ----------: |
#| Absorción – Permeabilidad |       0.860 |

Existe una relación positiva fuerte entre absorción y permeabilidad, lo que es consistente con la física del material: una mayor conectividad del sistema poroso incrementa simultáneamente ambas propiedades.

Ambas variables pueden interpretarse como manifestaciones del mismo fenómeno subyacente: la porosidad efectiva.

#Relación entre resistencia y durabilidad

#| Relación                               | Correlación |
#| -------------------------------------- | ----------: |
#| Resistencia compresión – Absorción     |      -0.924 |
#| Resistencia compresión – Permeabilidad |      -0.890 |
#| Módulo elástico – Absorción            |      -0.898 |

Se observa una relación inversa fuerte entre propiedades mecánicas y variables de durabilidad.

A medida que aumenta la resistencia del hormigón:

Esto es consistente con una microestructura más densa y menos conectada, con menor porosidad efectiva.

¿Por qué tiene sentido aplicar PCA?

El PCA es útil cuando existen variables altamente correlacionadas.Todas son correlaciones muy altas. Por tanto, existe redundancia de información. podríamos resumirlas en uno o dos componentes principales.

Hipótesis previas al PCA

Paso 4: Estandarización de variables y ejecución del PCA

hormigon_scaled <- scale(hormigon)

#la función scale sirve para estandarizar las observaciones de la base de datos (paso 1 de la presentación)

pca_hormigon <- prcomp(hormigon_scaled, center = TRUE, scale. = TRUE)

#la funcion pca_hormigón crea el pca para ser analizado en base a los datos previamente estandarizados

summary(pca_hormigon)
## Importance of components:
##                           PC1     PC2     PC3     PC4     PC5    PC6
## Standard deviation     2.3221 0.47322 0.38347 0.30083 0.28519 0.2546
## Proportion of Variance 0.8987 0.03732 0.02451 0.01508 0.01356 0.0108
## Cumulative Proportion  0.8987 0.93605 0.96056 0.97564 0.98920 1.0000

El análisis de componentes principales muestra una fuerte capacidad de reducción dimensional en el conjunto de variables del hormigón.

El PC1 presenta una desviación estándar de 2.3221 y explica el 89.87 % de la varianza total, lo que indica que concentra la mayor parte de la información del sistema. El PC2 aporta un 3.73 % adicional, alcanzando una varianza acumulada de 93.61 %. A partir de este punto, los componentes restantes contribuyen marginalmente (menos del 2 % individualmente), lo que evidencia una estructura altamente concentrada en los dos primeros ejes.

Desde el punto de vista de los criterios de selección:

  1. Varianza explicada y acumulada
# Varianza explicada
eigenvalues <- pca_hormigon$sdev^2
var_exp <- eigenvalues / sum(eigenvalues)

# Varianza acumulada
var_cum <- cumsum(var_exp)

# Plot varianza explicada
plot(var_exp, type = "b",
     pch = 19,
     ylim = c(0, 1),
     xlab = "Componentes principales",
     ylab = "Proporción de varianza",
     main = "Varianza explicada por componente")

# Plot varianza acumulada
plot(var_cum, type = "b",
     pch = 19,
     ylim = c(0, 1),
     xlab = "Componentes principales",
     ylab = "Varianza acumulada",
     main = "Varianza acumulada")

# Línea de referencia 80% y 90%
abline(h = 0.80, col = "blue", lty = 2)
abline(h = 0.90, col = "red", lty = 2)

Según el Criterio de varianza acumulada: con PC1 + PC2 se supera ampliamente el umbral del 80–90 %, alcanzando más del 93 % de la información total.

  1. Criterio de Kaiser
# PCA ya calculado
pca_hormigon <- prcomp(hormigon_scaled, center = TRUE, scale. = TRUE)

# Autovalores
eigenvalues <- pca_hormigon$sdev^2

# Scree plot
plot(eigenvalues, type = "b",
     pch = 19,
     xlab = "Componentes principales",
     ylab = "Autovalores",
     main = "Scree Plot (Criterio de Kaiser)")

# Línea de referencia (λ = 1)
abline(h = 1, col = "red", lty = 2)

# Etiquetas de componentes
text(1:length(eigenvalues), eigenvalues,
     labels = round(eigenvalues, 2),
     pos = 3, cex = 0.8)

Según el Criterio de Kaiser (λ > 1): solo el primer componente cumple claramente este criterio (PC1), mientras que los restantes presentan contribuciones mucho menores, confirmando su baja relevancia explicativa.

En consecuencia, la estructura de los datos puede reducirse de forma eficiente de 6 variables originales a 2 componentes principales, sin pérdida significativa de información.

El PC1 puede interpretarse como un eje global de comportamiento del hormigón, que integra simultáneamente la variabilidad asociada a propiedades mecánicas y de durabilidad. El PC2, en cambio, actúa como una dimensión secundaria, capturando variaciones residuales no explicadas por el primer componente.

En síntesis, el PCA confirma una fuerte redundancia en los datos y valida la reducción a dos dimensiones latentes que conservan la práctica totalidad de la información estructural del sistema.

Paso 5: Cargas (Loadings)

pca_hormigon$rotation
##                               PC1          PC2         PC3         PC4
## Resistencia_Compresion  0.4149933 -0.204668889 -0.19269051 -0.06833974
## Resistencia_Traccion    0.4148115 -0.200880123 -0.20430596  0.06003387
## Modulo_Elasticidad      0.4146411  0.007254515  0.09664826 -0.84596710
## Densidad                0.3890399  0.893933155  0.10329016  0.17811000
## Absorcion_Agua         -0.4119339  0.131319269  0.55157965 -0.36048832
## Permeabilidad          -0.4034143  0.318345659 -0.77257983 -0.33821633
##                                PC5         PC6
## Resistencia_Compresion -0.68883189  0.51923199
## Resistencia_Traccion    0.71879351  0.47494155
## Modulo_Elasticidad      0.06811362 -0.31365493
## Densidad               -0.01513130  0.08312943
## Absorcion_Agua          0.05630707  0.61294640
## Permeabilidad           0.02841849  0.15438734
round(pca_hormigon$rotation,3)
##                           PC1    PC2    PC3    PC4    PC5    PC6
## Resistencia_Compresion  0.415 -0.205 -0.193 -0.068 -0.689  0.519
## Resistencia_Traccion    0.415 -0.201 -0.204  0.060  0.719  0.475
## Modulo_Elasticidad      0.415  0.007  0.097 -0.846  0.068 -0.314
## Densidad                0.389  0.894  0.103  0.178 -0.015  0.083
## Absorcion_Agua         -0.412  0.131  0.552 -0.360  0.056  0.613
## Permeabilidad          -0.403  0.318 -0.773 -0.338  0.028  0.154
pca_2 <- prcomp(hormigon_scaled)
round(pca_2$rotation[,1:2],3)
##                           PC1    PC2
## Resistencia_Compresion  0.415 -0.205
## Resistencia_Traccion    0.415 -0.201
## Modulo_Elasticidad      0.415  0.007
## Densidad                0.389  0.894
## Absorcion_Agua         -0.412  0.131
## Permeabilidad          -0.403  0.318

La interpretación de las cargas (loadings) en este PCA es el paso clave para traducir los resultados estadísticos en significado ingenieril, ya que permite identificar qué variables construyen cada componente principal.

Una regla práctica en este contexto es considerar relevantes las cargas con valor absoluto mayor a 0.40, ya que indican una contribución importante al componente. Valores cercanos a ±1 implican alta influencia, mientras que valores cercanos a 0 indican poca o nula aportación.

Componente Principal 1 (PC1)

El PC1 presenta cargas muy similares en las variables mecánicas (resistencia a compresión, tracción y módulo de elasticidad ≈ 0.415), y cargas de signo opuesto en las variables relacionadas con la porosidad (absorción ≈ -0.412 y permeabilidad ≈ -0.403). Esto indica que PC1 representa un gradiente global de calidad del hormigón, donde valores altos corresponden a mayor resistencia y menor capacidad de ingreso de agua, es decir, una microestructura más densa y menos porosa.

Componente Principal 2 (PC2)

El PC2, en cambio, está dominado principalmente por la densidad (0.894), mientras que el resto de variables presentan contribuciones bajas. Esto sugiere que este componente captura una dimensión específica asociada a la variabilidad de la densidad del material, relativamente independiente del comportamiento mecánico y de la durabilidad.

En conjunto, PC1 resume el eje principal de desempeño estructural del hormigón, mientras que PC2 está dominado casi exclusivamente por la densidad, lo que indica que este componente representa una dimensión independiente del sistema

Paso 6: Obtener las coordenadas PCA

scores <- pca_2$x

head(scores)
##              PC1         PC2        PC3         PC4         PC5        PC6
## [1,] -0.79596653  0.91364517  0.2579978  0.18027015 -0.11914365 -0.2005113
## [2,] -0.03419425  0.45922075  0.1343231  0.13896367  0.12690979 -0.1836301
## [3,]  4.06398865 -0.12286487  0.1532219  0.05462463 -0.01024046 -0.2375767
## [4,]  0.37133096  0.07847481  0.2097345  0.46442271 -0.28416726  0.1920388
## [5,] -0.11341489 -0.10943984  0.4073276 -0.11556833 -0.05952865  0.1076443
## [6,]  4.30199601 -0.14512673 -0.2858685 -0.02059201 -0.24804922  0.1880857

los Scores (o puntuaciones) son los nuevos valores que toman tus mezclas de hormigón en el nuevo espacio generado por el PCA.

Físicamente, representan la “posición” o las “coordenadas” de cada una de tus muestras dentro del nuevo sistema de ejes (PC1, PC2, etc.).

Paso 7: Graficar las mezclas en dos dimensiones

plot(scores[,1],
     scores[,2],
     xlab = "PC1",
     ylab = "PC2",
     main = "PCA de mezclas de hormigón")

text(scores[,1],
     scores[,2],
     labels = 1:n)

symbols(
  x = 4.5,
  y = -0.2,
  circles = 0.8,
  inches = FALSE,
  add = TRUE
)

El gráfico de la PCA de las mezclas de hormigón representa la proyección de las observaciones en los dos primeros componentes principales, que concentran la mayor parte de la variabilidad del sistema. En el eje horizontal (PC1) se observa el gradiente principal del comportamiento del hormigón, asociado a su calidad estructural global, mientras que el eje vertical (PC2) recoge variaciones secundarias vinculadas principalmente a la densidad del material.

La distribución de los puntos muestra una clara dispersión a lo largo de PC1, lo que confirma que este componente es el que mejor discrimina entre mezclas. Las observaciones situadas hacia la derecha del gráfico corresponden a valores altos de PC1, es decir, mezclas con mayor resistencia y menor porosidad, mientras que las ubicadas hacia la izquierda reflejan un comportamiento mecánico más débil y mayor permeabilidad.

En particular, se identifica un grupo de observaciones en la zona derecha inferior del gráfico (resaltadas en el círculo), caracterizadas por valores elevados de PC1 y valores negativos o bajos de PC2. Este patrón sugiere mezclas con buen desempeño estructural pero con menor influencia de la densidad relativa en comparación con otras muestras. En contraste, las observaciones más centrales representan comportamientos intermedios y mayor heterogeneidad en las propiedades.

Paso 8: Biplot

biplot(pca_2,
       cex = 0.8)

Es un biplot de PCA (Componentes Principales PC1 vs PC2) que combina dos cosas: la proyección de las observaciones (números 1–50) y la dirección de las variables (flechas rojas).

El gráfico corresponde a un análisis de componentes principales (PCA) representado como biplot, en el que se proyectan simultáneamente las observaciones y las variables originales sobre los dos primeros componentes (PC1 y PC2). En este caso, el primer componente principal (PC1) concentra el gradiente más importante de variabilidad del sistema y separa principalmente a las muestras en función de propiedades físicas y mecánicas, observándose que hacia el lado positivo del eje se agrupan las variables asociadas a mayor densidad, mayor rigidez o comportamiento elástico y mayor resistencia a compresión, mientras que en el lado negativo se ubican variables relacionadas con un comportamiento más permeable o menos resistente, lo que sugiere una relación inversa clara entre ambos conjuntos de propiedades. El segundo componente (PC2), en cambio, aporta una variación secundaria y menos dominante, asociada a diferencias más finas entre las muestras que no quedan completamente explicadas por el gradiente principal.

En cuanto a la distribución de las observaciones, estas aparecen relativamente concentradas alrededor del origen, lo que indica que no existen agrupaciones fuertemente separadas en el espacio definido por los dos primeros componentes, sino más bien un continuo de variación entre las muestras. Aun así, es posible distinguir que aquellas ubicadas hacia la derecha del gráfico tienden a asociarse con mayores valores de densidad, rigidez y resistencia, mientras que las situadas hacia la izquierda presentan el comportamiento contrario, más cercano a condiciones de mayor permeabilidad o menor compacidad. En conjunto, el biplot sugiere que el sistema está dominado por un eje principal que contrapone propiedades mecánicas y de compacidad frente a propiedades hidráulicas, mientras que el segundo eje solo introduce variaciones complementarias de menor peso interpretativo.