1 Presentación

El análisis de conglomerados constituye una de las técnicas más importantes dentro de la estadística multivariada cuando se desea clasificar unidades de análisis en grupos homogéneos a partir de un conjunto de variables observadas. A diferencia de otros métodos, no parte de una variable dependiente, sino que busca descubrir estructuras subyacentes en los datos.

En esta clase se desarrolla el clúster jerárquico, una técnica que permite agrupar observaciones según su semejanza, representando visualmente el proceso de agrupación mediante un dendrograma. La aplicación práctica se realiza sobre indicadores laborales departamentales, con el propósito de identificar perfiles territoriales similares en términos de inserción ocupacional y vulnerabilidad laboral.

2 Objetivo de la clase

Al finalizar la clase, serás capaz de:

  • comprender el fundamento del análisis de conglomerados;
  • interpretar la lógica del clúster jerárquico;
  • aplicar la distancia euclidiana y el método de Ward;
  • utilizar el coeficiente de silhouette para orientar la elección del número de clústeres;
  • ejecutar e interpretar un análisis de conglomerados en R.

3 Introducción

El análisis de conglomerados o cluster analysis es una técnica de estadística multivariada cuyo objetivo es agrupar unidades de análisis de manera que las observaciones dentro de cada grupo sean lo más semejantes posible entre sí, y al mismo tiempo, lo más diferentes posible respecto de las observaciones pertenecientes a otros grupos.

En este documento se desarrolla la técnica de clúster jerárquico, aplicada a un conjunto de indicadores laborales departamentales simulados. El propósito es identificar grupos de departamentos con perfiles similares en términos de precariedad laboral, ingresos bajos y estructura ocupacional.

4 Objetivo del análisis

El objetivo es clasificar los departamentos en conglomerados homogéneos a partir de un conjunto de variables seleccionadas, utilizando:

  • Distancia euclidiana como medida de disimilitud.
  • Método de Ward como criterio de aglomeración.
  • Coeficiente de silhouette para orientar la elección del número óptimo de clústeres.

5 Fundamento teórico

5.1 Idea general del análisis de conglomerados

Sea un conjunto de unidades \(i = 1,2,\dots,n\), descritas por \(p\) variables. El análisis de conglomerados busca formar grupos tales que:

  • la heterogeneidad interna de cada grupo sea mínima;
  • la heterogeneidad entre grupos sea máxima.

A diferencia de otras técnicas multivariadas, el clustering no requiere definir previamente una variable dependiente, por lo que se trata de una técnica de carácter exploratorio.

5.2 Distancia euclidiana

Una medida habitual de disimilitud entre dos observaciones \(i\) y \(j\) es la distancia euclidiana, definida como:

\[ d(i,j) = \sqrt{\sum_{h=1}^{p}(x_{ih} - x_{jh})^2} \]

Esta distancia resume cuán diferentes son dos observaciones considerando simultáneamente todas las variables.

5.3 Estandarización de variables

Cuando las variables tienen escalas distintas, o aun teniendo la misma unidad presentan distinta dispersión, es recomendable estandarizarlas. La transformación utilizada es:

\[ z_{ih} = \frac{x_{ih} - \bar{x}_h}{s_h} \]

donde:

  • \(x_{ih}\) es el valor de la variable \(h\) en la observación \(i\),
  • \(\bar{x}_h\) es la media de la variable \(h\),
  • \(s_h\) es la desviación estándar de la variable \(h\).

De esta manera, cada variable queda expresada con media 0 y desviación estándar 1.

5.4 Clúster jerárquico

En el método jerárquico aglomerativo, inicialmente cada unidad constituye su propio grupo. Luego, en cada etapa, se fusionan los dos grupos más próximos, hasta llegar a un único conglomerado final que contiene a todas las observaciones.

El resultado se representa mediante un dendrograma, que permite visualizar la secuencia de agrupaciones.

5.5 Método de Ward

El método de Ward selecciona en cada paso la fusión que produce el menor incremento posible en la variabilidad interna de los grupos. En consecuencia, suele generar conglomerados relativamente homogéneos y compactos.

5.6 Coeficiente de silhouette

El coeficiente de silhouette permite evaluar la calidad de una partición.

Para cada observación, el índice compara:

  • su cercanía promedio respecto a las observaciones de su propio grupo;
  • su cercanía promedio respecto al grupo alternativo más próximo.

Sus valores oscilan entre \(-1\) y \(1\):

  • valores cercanos a 1 indican buena asignación;
  • valores cercanos a 0 indican superposición entre grupos;
  • valores negativos sugieren una asignación deficiente.

Como criterio de selección, puede elegirse el número de clústeres \(k\) que maximiza la silhouette promedio.

6 Aplicación con R

6.1 Cargar paquetes y base de datos

# Instalar paquetes solo si fuera necesario
# install.packages(c("readxl","cluster","openxlsx"), dependencies = TRUE)

library(cluster)
library(readxl)
library(openxlsx)
df <- read_excel("cluster_departamentos_paraguay_ficticios_reducido.xlsx")

Comentario

La base de datos utilizada en esta práctica contiene información correspondiente a los departamentos del país y un conjunto de indicadores del mercado laboral simulada. Cada fila representa un departamento, mientras que cada columna corresponde a una variable que será empleada en el análisis de conglomerados.

Antes de iniciar, es importante definir correctamente la carpeta de trabajo y verificar que en dicha ubicación se encuentre almacenada la base de datos proporcionada para la clase, ya que esto permitirá importar el archivo sin inconvenientes.

6.2 Selección de variables para clustering

vars <- c("dependencia_total_pct",
          "familiar_no_remunerado_pct",
          "subocupacion_pct",
          "ingresos_bajos_pct",
          "trabajadores_pobres_pct",
          "industria_pct")

X <- df[, vars]

Comentario

Las variables seleccionadas recogen distintas dimensiones del mercado de trabajo:

  • dependencia_total_pct: porcentaje de ocupados en relación de dependencia;
  • familiar_no_remunerado_pct: porcentaje de trabajadores familiares no remunerados;
  • subocupacion_pct: porcentaje de subocupación;
  • ingresos_bajos_pct: porcentaje de ocupados con bajos ingresos;
  • trabajadores_pobres_pct: porcentaje de trabajadores pobres;
  • industria_pct: participación del empleo industrial.

Estas variables permiten construir una tipología de departamentos según su estructura ocupacional y nivel de vulnerabilidad laboral.

6.3 Estadísticas descriptivas

summary(X)
##  dependencia_total_pct familiar_no_remunerado_pct subocupacion_pct
##  Min.   :59.90         Min.   : 4.300             Min.   : 6.1    
##  1st Qu.:62.75         1st Qu.: 6.700             1st Qu.:10.3    
##  Median :67.45         Median : 7.900             Median :11.8    
##  Mean   :68.29         Mean   : 8.488             Mean   :11.2    
##  3rd Qu.:73.17         3rd Qu.:10.600             3rd Qu.:12.3    
##  Max.   :80.70         Max.   :12.200             Max.   :15.5    
##  ingresos_bajos_pct trabajadores_pobres_pct industria_pct  
##  Min.   :25.10      Min.   : 8.40           Min.   :12.20  
##  1st Qu.:39.20      1st Qu.:19.77           1st Qu.:15.65  
##  Median :45.10      Median :24.95           Median :17.30  
##  Mean   :42.85      Mean   :24.04           Mean   :18.45  
##  3rd Qu.:47.88      3rd Qu.:29.75           3rd Qu.:21.75  
##  Max.   :52.00      Max.   :32.50           Max.   :27.00

Interpretación

Antes de realizar el agrupamiento, resulta conveniente examinar las estadísticas descriptivas de las variables para identificar:

  • diferencias de magnitud entre variables;
  • niveles de dispersión;
  • posibles valores extremos;
  • variables con baja variabilidad.

Aunque todas las variables se expresen como porcentajes, ello no implica necesariamente que tengan comportamientos comparables, razón por la cual la estandarización sigue siendo recomendable.

6.4 Estandarización de las variables

Xz <- scale(X)
summary(Xz)
##  dependencia_total_pct familiar_no_remunerado_pct subocupacion_pct 
##  Min.   :-1.3490       Min.   :-1.6839            Min.   :-2.2799  
##  1st Qu.:-0.8910       1st Qu.:-0.7188            1st Qu.:-0.4023  
##  Median :-0.1356       Median :-0.2363            Median : 0.2682  
##  Mean   : 0.0000       Mean   : 0.0000            Mean   : 0.0000  
##  3rd Qu.: 0.7845       3rd Qu.: 0.8495            3rd Qu.: 0.4917  
##  Max.   : 1.9938       Max.   : 1.4929            Max.   : 1.9222  
##  ingresos_bajos_pct trabajadores_pobres_pct industria_pct    
##  Min.   :-2.2063    Min.   :-2.1158         Min.   :-1.5212  
##  1st Qu.:-0.4537    1st Qu.:-0.5773         1st Qu.:-0.6815  
##  Median : 0.2797    Median : 0.1226         Median :-0.2799  
##  Mean   : 0.0000    Mean   : 0.0000         Mean   : 0.0000  
##  3rd Qu.: 0.6246    3rd Qu.: 0.7718         3rd Qu.: 0.8032  
##  Max.   : 1.1373    Max.   : 1.1437         Max.   : 2.0810

Interpretación

La estandarización permite que todas las variables contribuyan de manera equilibrada al cálculo de distancias. Así, ninguna variable domina el análisis únicamente por presentar una mayor dispersión.

6.5 Matriz de distancias

d <- dist(Xz, method = "euclidean")

Interpretación

La matriz de distancias resume el grado de disimilitud entre cada par de departamentos. Distancias pequeñas indican perfiles más semejantes; distancias mayores reflejan perfiles más diferenciados.

6.6 Clúster jerárquico con método de Ward

hc <- hclust(d, method = "ward.D2")

Interpretación

A partir de la matriz de distancias, el algoritmo jerárquico va fusionando observaciones o grupos de observaciones según el criterio de Ward. El resultado es una estructura jerárquica de agrupación.

6.7 Dendrograma

plot(hc,
     labels = df$departamento,
     cex = 0.9,
     main = "Clúster jerárquico (Ward.D2)",
     xlab = "",
     sub = "")

Interpretación del dendrograma

El dendrograma muestra visualmente el proceso de agrupación.

  • En la parte inferior se ubican las unidades individuales.
  • Cada unión representa una fusión entre observaciones o grupos.
  • La altura de cada fusión indica el nivel de disimilitud al que se produjo la unión.

Fusiones a baja altura reflejan unidades más similares; fusiones a mayor altura reflejan grupos más distintos.

6.8 Evaluación del número de clústeres con silhouette

k_candidates <- 3:6

sil <- sapply(k_candidates, function(k){
  cl <- cutree(hc, k = k)
  mean(silhouette(cl, d)[, 3])
})

tabla_k <- data.frame(
  k = k_candidates,
  silhouette_prom = round(sil, 3)
)

tabla_k
##   k silhouette_prom
## 1 3           0.384
## 2 4           0.327
## 3 5           0.294
## 4 6           0.264

Interpretación

La tabla muestra la silhouette promedio para distintos valores de \(k\). El valor de \(k\) que presenta la mayor silhouette promedio se considera, en principio, la mejor partición desde el punto de vista de la cohesión interna y la separación entre grupos.

k_opt <- tabla_k$k[which.max(tabla_k$silhouette_prom)]
cat(">>> k óptimo según silhouette promedio:", k_opt, "\n")
## >>> k óptimo según silhouette promedio: 3

Comentario

En este ejemplo se evalúan particiones entre 3 y 6 conglomerados. Este rango puede modificarse según el tamaño de la base de datos y el objetivo del análisis. En la práctica, la elección de \(k\) también debe considerar la interpretabilidad sustantiva de los grupos obtenidos.

6.9 Gráfico de apoyo para la selección de \(k\)

plot(tabla_k$k, tabla_k$silhouette_prom,
     type = "b", pch = 19,
     xlab = "Número de clústeres (k)",
     ylab = "Silhouette promedio",
     main = "Selección del número óptimo de clústeres")
abline(v = k_opt, lty = 2)

Interpretación

El gráfico permite visualizar de forma sencilla qué número de conglomerados presenta la mejor silhouette promedio. La línea vertical marca el valor de \(k\) finalmente seleccionado.

6.10 Asignación final de clústeres

df$cluster <- cutree(hc, k = k_opt)
df[, c("departamento", "cluster")]
## # A tibble: 16 × 2
##    departamento     cluster
##    <chr>              <int>
##  1 Asunción               1
##  2 Concepción             2
##  3 San Pedro              3
##  4 Cordillera             2
##  5 Guairá                 2
##  6 Caaguazú               3
##  7 Caazapá                3
##  8 Itapúa                 2
##  9 Misiones               2
## 10 Paraguarí              2
## 11 Alto Paraná            2
## 12 Central                1
## 13 Ñeembucú               3
## 14 Amambay                2
## 15 Canindeyú              3
## 16 Presidente Hayes       3

Interpretación

Cada departamento queda clasificado en uno de los conglomerados finales. Esta nueva variable puede utilizarse para describir perfiles territoriales o para realizar análisis comparativos entre grupos.

6.11 Dendrograma con rectángulos de clasificación

plot(hc,
     labels = df$departamento,
     cex = 0.9,
     main = paste("Clúster jerárquico con", k_opt, "grupos"),
     xlab = "",
     sub = "")
rect.hclust(hc, k = k_opt, border = 2:(k_opt + 1))

Interpretación

Los rectángulos permiten visualizar los conglomerados finales identificados sobre el dendrograma. Esto facilita reconocer qué departamentos conforman cada grupo dentro de la estructura jerárquica.

6.12 Perfilamiento de los clústeres

perfil <- aggregate(df[, vars], by = list(cluster = df$cluster), FUN = mean)
round(perfil, 1)
##   cluster dependencia_total_pct familiar_no_remunerado_pct subocupacion_pct
## 1       1                  78.7                        5.5              6.6
## 2       2                  68.7                        7.3             11.3
## 3       3                  64.3                       11.0             12.6
##   ingresos_bajos_pct trabajadores_pobres_pct industria_pct
## 1               25.7                    10.2          25.6
## 2               42.2                    22.3          19.5
## 3               49.4                    30.9          14.7

Interpretación

El perfilamiento consiste en calcular las medias de las variables para cada conglomerado, con el fin de caracterizar sustantivamente a los grupos.

Por ejemplo:

  • un clúster con alta subocupación, mayor pobreza laboral y elevada presencia de trabajo familiar no remunerado podría interpretarse como un grupo con mayor vulnerabilidad;
  • un clúster con menor incidencia de ingresos bajos y mayor participación industrial podría asociarse a una estructura ocupacional relativamente más favorable.

6.13 Listado de departamentos por clúster

dept_por_cluster <- split(df$departamento, df$cluster)
dept_por_cluster
## $`1`
## [1] "Asunción" "Central" 
## 
## $`2`
## [1] "Concepción"  "Cordillera"  "Guairá"      "Itapúa"      "Misiones"   
## [6] "Paraguarí"   "Alto Paraná" "Amambay"    
## 
## $`3`
## [1] "San Pedro"        "Caaguazú"         "Caazapá"          "Ñeembucú"        
## [5] "Canindeyú"        "Presidente Hayes"

Interpretación

Este resultado permite identificar concretamente qué departamentos integran cada conglomerado. Es especialmente útil cuando el objetivo es construir tipologías territoriales o diseñar estrategias diferenciadas de política pública.

6.14 Exportación de resultados

write.xlsx(list(
  "tabla_k" = tabla_k,
  "departamentos_con_cluster" = df,
  "perfil_cluster" = perfil
), file = "resultado_cluster_departamentos.xlsx", overwrite = TRUE)

Comentario

La exportación genera un archivo Excel con tres hojas:

  1. tabla_k: evaluación del número de clústeres mediante silhouette;
  2. departamentos_con_cluster: base original con la asignación final del clúster;
  3. perfil_cluster: medias de las variables por conglomerado.

7 Conclusiones metodológicas

El análisis de conglomerados jerárquicos constituye una herramienta útil para identificar grupos de departamentos con características laborales similares. Su aplicación permite:

  • resumir patrones complejos en múltiples indicadores;
  • construir tipologías territoriales;
  • detectar heterogeneidad regional;
  • aportar evidencia para orientar intervenciones diferenciadas.

No obstante, debe recordarse que los resultados dependen de:

  • las variables seleccionadas;
  • la métrica de distancia utilizada;
  • el método de agrupamiento adoptado;
  • el criterio empleado para determinar el número de grupos.

Por tanto, el análisis de conglomerados debe entenderse como una herramienta exploratoria que requiere interpretación sustantiva complementaria.

7.1 Recomendaciones para la interpretación sustantiva

Una vez obtenidos los conglomerados, es conveniente analizar:

  • qué variables distinguen con mayor claridad a los grupos;
  • si existen conglomerados con mayor precariedad laboral;
  • qué departamentos comparten estructuras ocupacionales semejantes;
  • si la clasificación obtenida resulta coherente con el conocimiento previo del territorio.

Nota metodológica: La presente guía fue elaborada con apoyo de herramientas de inteligencia artificial generativa, específicamente ChatGPT de OpenAI, como asistencia en la estructuración y redacción del material. La selección de contenidos, la validación conceptual y la revisión final son responsabilidad del docente.

8 Referencias bibliográficas y software utilizado

8.1 Referencias bibliográficas

  • Alaminos Chica, A., Francés García, F. J., Penalva Verdú, C., & Santacreu Fernández, Ó. A. (2015). Análisis multivariante para las Ciencias Sociales I: Índices de distancia, conglomerados y análisis factorial. Universidad de Cuenca.

  • Hair, J. F., Anderson, R. E., Tatham, R. L., & Black, W. C. (1999). Análisis multivariante (5.ª ed.). Pearson Prentice Hall.

  • Pérez López, C. (2004). Técnicas de análisis multivariante de datos: Aplicaciones con SPSS. Pearson Educación.

8.2 Software y paquetes de R