El Análisis de Componentes Principales (PCA) es una técnica estadística que se usa cuando tenemos muchas variables que están relacionadas entre sí. Su objetivo es resumir esa información en menos variables nuevas, llamadas componentes principales, que no están correlacionadas. ¿Para qué sirve? -Resumir datos: Reduce muchas variables a unas pocas que contienen casi toda la información. -Ver patrones: Ayuda a graficar y entender mejor los datos. -Evitar información repetida: Disminuye la redundancia entre variables. -Encontrar grupos o tendencias: Muestra relaciones que no se ven a simple vista. ¿Cómo funciona? -El PCA busca las direcciones donde los datos varían más. -El primer componente guarda la mayor variación posible. -El segundo guarda la segunda mayor variación, y es independiente del primero. Así podemos analizar datos complejos usando solo dos o tres componentes sin perder mucha información, lo que hace más fácil interpretar los resultados. ## Se carga las paqueterías y los datos necesarios Se cuenta con una base de datos de 283 observaciones con 15 variables diferentes sobre los dientes caninos.
library(pacman)
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(FactoMineR)
library(factoextra)
## Loading required package: ggplot2
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
library(ggplot2)
## Abriendo las librerias o paquetes que se usan
p_load(haven,dplyr,ggplot2,tinytex,tidyr,GGally,purrr,labelled,tidyverse,FactoMineR,factoextra)
load("Caninos")
## Seleccionar variables del diente canino a analizar
#RCSD: Área de cavidad pulpar superior derecho, RCSI: Área de cavidad pulpar superior izquierdo, RCID: Área de cavidad pulpar inferior derecho y RCII: Área de cavidad pulpar inferior izquierdo.
vars <- c("RCSD", "RCSI", "RCID", "RCII")
# Datos
datos <- Caninos %>%
select(all_of(vars), Sexo)
# Convertir Sexo a factor (IMPORTANTE)
datos$Sexo <- as_factor(datos$Sexo)
##Interpretación Estas variables representan mediciones anatómicas de los caninos, y se analizarán para identificar si existe estructura multivariada o agrupamientos naturales. Se convierte Sexo en un factor (variable categórica). Esto es importante para: generar gráficos coloreados por sexo, permitir interpretaciones de agrupamiento entre machos y hembras. ## Análisis de Componentes Principales
pca <- PCA(
datos %>% select(all_of(vars)),
scale.unit = TRUE,
ncp = 5,
graph = FALSE
)
summary(pca)
##
## Call:
## PCA(X = datos %>% select(all_of(vars)), scale.unit = TRUE, ncp = 5,
## graph = FALSE)
##
##
## Eigenvalues
## Dim.1 Dim.2 Dim.3 Dim.4
## Variance 3.714 0.228 0.036 0.023
## % of var. 92.840 5.693 0.897 0.570
## Cumulative % of var. 92.840 98.533 99.430 100.000
##
## Individuals (the 10 first)
## Dist Dim.1 ctr cos2 Dim.2 ctr cos2 Dim.3 ctr
## 1 | 1.577 | 1.509 0.217 0.916 | 0.253 0.099 0.026 | 0.376 1.394
## 2 | 0.584 | 0.492 0.023 0.709 | 0.250 0.097 0.184 | 0.010 0.001
## 3 | 3.073 | 2.890 0.795 0.885 | 0.800 0.993 0.068 | -0.134 0.178
## 4 | 1.558 | 1.420 0.192 0.831 | 0.483 0.363 0.096 | -0.401 1.584
## 5 | 0.954 | -0.827 0.065 0.751 | 0.311 0.150 0.106 | -0.349 1.200
## 6 | 1.475 | -1.029 0.101 0.487 | -0.333 0.172 0.051 | -0.869 7.436
## 7 | 2.160 | -2.129 0.431 0.972 | 0.360 0.201 0.028 | -0.031 0.010
## 8 | 1.954 | 1.821 0.316 0.869 | 0.643 0.642 0.108 | 0.220 0.475
## 9 | 1.092 | -1.054 0.106 0.931 | 0.250 0.097 0.052 | -0.107 0.113
## 10 | 1.191 | 1.146 0.125 0.927 | -0.277 0.119 0.054 | 0.155 0.236
## cos2
## 1 0.057 |
## 2 0.000 |
## 3 0.002 |
## 4 0.066 |
## 5 0.134 |
## 6 0.347 |
## 7 0.000 |
## 8 0.013 |
## 9 0.010 |
## 10 0.017 |
##
## Variables
## Dim.1 ctr cos2 Dim.2 ctr cos2 Dim.3 ctr cos2
## RCSD | 0.966 25.121 0.933 | -0.236 24.363 0.055 | -0.017 0.845 0.000 |
## RCSI | 0.965 25.060 0.931 | -0.241 25.437 0.058 | 0.021 1.260 0.000 |
## RCID | 0.963 24.986 0.928 | 0.232 23.647 0.054 | -0.134 50.215 0.018 |
## RCII | 0.960 24.834 0.922 | 0.246 26.554 0.060 | 0.131 47.681 0.017 |
#Dim1,2 3 son los componentes principales
## Gráfica scree-plot
fviz_screeplot(pca,
addlabels = TRUE,
ylim = c(0, 60),
barfill = "steelblue",
barcolor = "steelblue",
linecolor = "red")
## Warning in geom_bar(stat = "identity", fill = barfill, color = barcolor, :
## Ignoring empty aesthetic: `width`.
¿Qué significa? scale.unit = TRUE: estandariza las variables (media 0, varianza 1). Esto es fundamental porque los componentes no deben verse afectados por diferencias de escala entre variables. ncp = 5: se solicitan hasta 5 componentes (aunque solo hay 4 variables, FactoMineR siempre puede pedir más). graph = FALSE: evita gráficos automáticos. Interpretación estadística: El PCA busca transformar las 4 áreas pulpares en nuevas variables (componentes) que capturen la máxima variabilidad posible, reduciendo dimensionalidad y detectando patrones internos. Esta gráfica muestra: el porcentaje de varianza explicada por cada componente,la disminución progresiva mediante una línea roja. Permite decidir cuántos componentes retener. Generalmente se conservan los componentes que juntos expliquen 70–80% de la variabilidad. ## Análisis de Varianza
## Varianza explicada y por componente
varianza <- as.data.frame(pca$eig)
colnames(varianza) <- c("Eigenvalue", "Porcentaje", "Acumulado")
varianza
## Eigenvalue Porcentaje Acumulado
## comp 1 3.71358662 92.8396655 92.83967
## comp 2 0.22773454 5.6933635 98.53303
## comp 3 0.03586229 0.8965574 99.42959
## comp 4 0.02281655 0.5704136 100.00000
## Coeficientes de los componentes
loadings <- as.data.frame(pca$var$coord)
loadings
## Dim.1 Dim.2 Dim.3 Dim.4
## RCSD 0.9658577 -0.2355475 -0.01740755 -0.10645799
## RCSI 0.9646826 -0.2406828 0.02125294 0.10491730
## RCID 0.9632636 0.2320607 -0.13419480 0.01621342
## RCII 0.9603210 0.2459097 0.13076444 -0.01458514
Esta tabla indica qué tan importantes son los componentes. El PC1 suele explicar la mayor parte de la variabilidad total del conjunto. Esta matriz muestra qué tanto contribuye cada variable original a cada componente. Valores altos (positivos o negativos) indican que la variable define fuertemente ese componente. Permite interpretar el significado biológico del componente. Por ejemplo: Si PC1 tiene cargas altas en las cuatro áreas pulpares, ese componente representa un tamaño general del diente.
coords <- as.data.frame(pca$ind$coord[, 1:2])
colnames(coords) <- c("PC1", "PC2")
coords$Sexo <- datos$Sexo # añadir variable de agrupación
ggplot(coords, aes(x = PC1, y = PC2, color = Sexo)) +
geom_point(size = 3, alpha = 0.8) +
theme_minimal(base_size = 14) +
labs(
x = "Componente Principal 1",
y = "Componente Principal 2",
color = "Sexo"
) +
theme(
legend.position = "right",
panel.grid.minor = element_blank(),
panel.grid.major = element_line(color = "grey85")
)
Diferenciación por sexo La gráfica de dispersión que muestra el PC1 contra el PC2, usando colores para distinguir el sexo, permite evaluar si existe alguna diferencia entre hombres y mujeres en las medidas de los caninos. Si hubiera una separación evidente, significaría que ambos sexos presentan variaciones consistentes en el tamaño o la forma de los caninos. Si los puntos se mezclan, indica que las medidas son similares entre hombres y mujeres. En este caso, la fuerte superposición de los puntos muestra que no se observan diferencias marcadas entre los sexos, es decir, no hay dimorfismo sexual en estas variables.