# Análisis clúster
```{r}
#| echo: false
#| message: false
#| warning: false
source("script.R")
```
## Introducción
El capítulo anterior concluyó el análisis de componentes principales
transformando un conjunto complejo de variables en un número reducido de
dimensiones subyacentes. Al visualizar a los 300 consumidores en un mapa
perceptual, se observó que parecían agruparse en "nubes" o segmentos. Esa
observación fue, sin embargo, puramente visual e intuitiva. Para pasar de la
intuición a la evidencia hace falta una técnica diseñada específicamente para
identificar esos grupos de manera objetiva y sistemática: el **análisis
clúster**.
El análisis clúster, también llamado análisis de conglomerados o de
segmentación, es una técnica de interdependencia cuyo objetivo es clasificar un
conjunto de objetos (consumidores, productos, empresas) en grupos, de modo que
los objetos dentro de un mismo clúster sean muy similares entre sí y muy
diferentes de los de otros grupos [@Hair2019]. Es el arte de encontrar la
estructura de "grupos naturales" en los datos.
La característica que define al análisis clúster es que es una técnica de
**clasificación no supervisada**. A diferencia del análisis discriminante, donde
los grupos ya están definidos a priori y se buscan reglas para clasificarlos, en
el análisis clúster se parte sin conocer ni el número de grupos ni qué
individuos pertenecen a cada uno. El algoritmo debe "descubrir" la estructura
por sí mismo, basándose únicamente en las características de los datos.
Existen dos grandes familias de métodos de clustering: jerárquicos y no
jerárquicos. Esta primera sección se centra en el enfoque jerárquico, ideal para
explorar los datos cuando no existe una idea clara del número de clústeres que
podrían encontrarse.
## El enfoque jerárquico: construyendo un árbol de relaciones
El **análisis clúster jerárquico** no produce una única partición de los datos,
sino una serie de particiones anidadas, representable en una estructura de árbol
conocida como **dendrograma**. Existen dos enfoques:
1. **Aglomerativo (de abajo hacia arriba)**: el más habitual. Comienza tratando
cada objeto como un clúster individual; en cada paso, los dos clústeres más
cercanos se fusionan, hasta que todos los objetos forman un único gran
clúster. Es como construir un árbol genealógico desde los individuos hasta
un ancestro común.
2. **Divisivo (de arriba hacia abajo)**: funciona a la inversa. Comienza con un
único clúster que contiene todos los objetos y, en cada paso, divide el más
heterogéneo en dos, hasta que cada objeto forma su propio clúster.
Esta sección se centra en el método aglomerativo, que se basa en dos decisiones
fundamentales: cómo medir la distancia entre objetos y cómo agruparlos.
### Paso 1: la medida de la distancia (o disimilitud)
El concepto central del clustering es la proximidad. Para que el algoritmo
decida qué objetos fusionar, primero hay que definir una medida de cuán "cerca"
o "lejos" están unos de otros. Para datos cuantitativos, la medida más utilizada
es la **distancia euclídea**: dados dos objetos descritos por varias variables
(por ejemplo, sus puntuaciones en los componentes principales RC1, RC2...), es
la longitud de la línea recta que los une en el espacio multidimensional.
::: callout-important
## Sobre la estandarización
La distancia euclídea es muy sensible a la escala de las variables. Si una
variable se mide de 1 a 10 y otra de 1 a 1.000.000, la segunda dominará por
completo el cálculo de la distancia. Por ello es **imprescindible estandarizar
las variables** (a media 0 y desviación típica 1) antes de calcular las
distancias. Cuando se utilizan las puntuaciones de un ACP como entrada, estas ya
están estandarizadas y no correlacionadas, lo que las convierte en un punto de
partida ideal [@Tabachnick2013].
:::
### Paso 2: el criterio de enlace (linkage)
Con una matriz de distancias entre todos los pares de objetos, el algoritmo
comienza a fusionar. Pero ¿cómo se calcula la distancia entre un objeto y un
clúster, o entre dos clústeres que ya contienen varios objetos? Esta regla se
conoce como **criterio de enlace**, y su elección puede tener un impacto
significativo en la forma de los clústeres resultantes [@Everitt2011].
Los más importantes son:
- **Enlace simple** (*single linkage*): la distancia entre dos clústeres es la
distancia entre sus dos miembros más cercanos. Tiende a producir clústeres
largos en forma de cadena; bueno para grupos con formas no elípticas, pero muy
sensible a valores atípicos.
- **Enlace completo** (*complete linkage*): la distancia entre dos clústeres es
la distancia entre sus dos miembros más lejanos. Tiende a producir clústeres
compactos y esféricos; también sensible a valores atípicos.
- **Enlace promedio** (*average linkage*): la distancia promedio entre todos los
pares de objetos de ambos clústeres. Buen compromiso entre los dos anteriores
y menos sensible a valores atípicos.
- **Método de Ward**: uno de los métodos más populares y robustos. En cada paso
fusiona los dos clústeres cuya unión produce el **menor incremento de la
varianza total intra-clúster**: busca formar los grupos más compactos y
homogéneos posibles. Tiende a crear clústeres de tamaño similar y es, a
menudo, el método de elección para segmentación de mercados [@Ward1963].
### El resultado visual: el dendrograma
El resultado final de un análisis clúster jerárquico no es una asignación de
clústeres, sino un **dendrograma**: un gráfico en forma de árbol que mapea todo
el proceso de fusión.
- El **eje horizontal** representa los objetos individuales.
- El **eje vertical** representa la "altura" o distancia a la que se fusionaron
los clústeres. Las uniones cercanas a la base son entre objetos o clústeres
muy similares; las uniones cerca de la copa son entre clústeres ya muy
diferentes.
### La gran pregunta: ¿cuántos clústeres elegir?
El dendrograma muestra una solución para cualquier número de clústeres, desde N
hasta 1. La decisión final recae en el investigador, aunque se apoya en
criterios objetivos. El método más habitual es la **inspección visual del
dendrograma**:
> Se busca "cortar" el árbol a una altura donde las líneas verticales sean lo
> más largas posible. Una línea vertical larga indica que se fusionaron dos
> clústeres muy separados (muy diferentes entre sí), lo que sugiere que esa
> fusión fue "poco natural". Cortar el dendrograma justo por encima de los
> mayores saltos de distancia produce una partición de clústeres internamente
> homogéneos y externamente heterogéneos.
Aunque existen métodos numéricos más formales (el método del codo, la silueta o
el estadístico de Gap), la inspección del dendrograma combinada con la
interpretabilidad de la solución es el enfoque más extendido en la práctica
[@Uriel2005].
En resumen, el análisis clúster jerárquico es una técnica exploratoria ideal
para descubrir la estructura de grupos sin supuestos previos sobre su número. Su
principal inconveniente es el coste computacional: requiere calcular una matriz
de distancias N×N, lo que lo hace inviable para conjuntos de datos muy grandes
(decenas de miles de casos). Esta limitación da paso a los métodos no
jerárquicos, que se desarrollan tras el caso práctico.
## Aplicación práctica: segmentación de consumidores de smartphones
El capítulo anterior transformó 10 variables de percepción de una marca de
teléfonos inteligentes en 3 dimensiones subyacentes, claras e independientes:
"Rendimiento y funcionalidad" (RC1), "Diseño y estatus" (RC2) y "Valor
económico" (RC3), con un conjunto de puntuaciones para cada uno de los 300
consumidores. Este capítulo da el siguiente paso: utilizar esas puntuaciones
para identificar grupos de consumidores con perfiles de percepción similares.
### Objetivo de la investigación
> **Objetivo**: segmentar a los 300 consumidores en un número óptimo de
> clústeres homogéneos y bien diferenciados, basándose en sus percepciones sobre
> la marca (resumidas en las puntuaciones de los componentes), para caracterizar
> y perfilar cada segmento de cara a futuras estrategias de marketing.
### Preparación de los datos
El punto de partida son las puntuaciones de los componentes principales
calculadas en el capítulo anterior. Utilizarlas en lugar de las 10 variables
originales tiene ventajas importantes:
1. **Reducción de ruido**: los componentes capturan la estructura principal de
los datos, filtrando la varianza única de cada variable.
2. **No correlación**: los componentes son, por construcción, ortogonales, lo
que evita que el análisis esté sesgado por variables redundantes.
3. **Estandarización**: las puntuaciones ya están estandarizadas (media 0,
desviación típica 1), cumpliendo un requisito fundamental para los
algoritmos de clustering basados en distancia.
```{r}
#| echo: true
# Recreate the component scores from the previous chapter
set.seed(456)
n <- 300
latent_performance <- rnorm(n, 0, 1)
latent_design <- rnorm(n, 0, 1)
latent_value <- rnorm(n, 0, 1)
smartphone_data <- data.frame(
battery = 7 + 0.80 * latent_performance + rnorm(n, 0, 0.5),
camera = 7 + 0.85 * latent_performance + rnorm(n, 0, 0.5),
performance = 7 + 0.90 * latent_performance + rnorm(n, 0, 0.4),
screen = 7 + 0.75 * latent_performance + rnorm(n, 0, 0.6),
design = 8 + 0.90 * latent_design + rnorm(n, 0, 0.4),
materials = 8 + 0.85 * latent_design + rnorm(n, 0, 0.5),
exclusivity = 8 + 0.75 * latent_design + rnorm(n, 0, 0.6),
low_price = 4 + 0.90 * latent_value + rnorm(n, 0, 0.4),
promotions = 5 + 0.70 * latent_value + rnorm(n, 0, 0.7)
)
smartphone_data <- as.data.frame(lapply(smartphone_data,
function(x) round(pmin(10, pmax(1, x)))))
pca_model <- psych::principal(smartphone_data, nfactors = 3, rotate = "varimax", scores = TRUE)
component_scores <- as.data.frame(pca_model$scores)
head(component_scores)
```
### Ejecución del análisis clúster jerárquico
El proceso aglomerativo jerárquico consta de dos pasos: calcular la matriz de
distancias y aplicar el algoritmo de enlace.
#### Paso 1: cálculo de la matriz de distancias
Se calcula la distancia euclídea entre cada par de consumidores en el espacio
tridimensional definido por los componentes:
```{r}
#| echo: true
dist_matrix <- dist(component_scores, method = "euclidean")
```
#### Paso 2: aplicación del algoritmo de enlace
Se utiliza el **método de Ward** (`ward.D2`), adecuado para encontrar clústeres
compactos y esféricos, ideal para la segmentación de mercados:
```{r}
#| echo: true
hc_result <- hclust(dist_matrix, method = "ward.D2")
```
### Interpretación y determinación del número de clústeres
#### Paso 3: visualización del dendrograma
```{r}
#| label: fig-dendrogram
#| fig-cap: Dendrograma del clúster jerárquico (método de Ward)
#| echo: true
factoextra::fviz_dend(hc_result, k = 4,
cex = 0.5,
k_colors = c("#076fa2", "#c40000", "#f0a202", "#2ca02c"),
rect = TRUE,
rect_border = "grey50",
rect_fill = TRUE,
main = "Dendrograma del clúster jerárquico (método de Ward)")
```
El dendrograma muestra la historia completa de las fusiones. Para decidir dónde
"cortar" se buscan los saltos verticales más largos. Pasar de 4 a 3 clústeres
implica un salto de distancia considerable, y lo mismo ocurre al pasar de 3 a 2.
Esto sugiere que una solución de 3 o 4 clústeres podría ser la más estable y
significativa.
#### Paso 4: métodos objetivos para el número óptimo de clústeres
Para complementar la inspección visual, se utilizan dos métodos numéricos: la
silueta y el codo (suma de cuadrados interna).
```{r}
#| label: fig-nbclust-silhouette
#| fig-cap: Método de la silueta para determinar el número de clústeres
#| echo: true
# Manual silhouette method: average silhouette width for k = 2..10
silhouette_values <- sapply(2:10, function(k) {
clusters_k <- cutree(hc_result, k = k)
sil <- cluster::silhouette(clusters_k, dist_matrix)
mean(sil[, 3])
})
silhouette_data <- data.frame(k = 2:10, avg_silhouette = silhouette_values)
ggplot2::ggplot(silhouette_data, ggplot2::aes(x = k, y = avg_silhouette)) +
ggplot2::geom_line(color = "#076fa2") +
ggplot2::geom_point(color = "#076fa2", size = 2) +
ggplot2::scale_x_continuous(breaks = 2:10) +
ggplot2::labs(subtitle = "Método de la silueta", x = "Número de clústeres (k)",
y = "Ancho de silueta promedio") +
ggplot2::theme_minimal()
```
```{r}
#| label: fig-nbclust-wss
#| fig-cap: Método del codo para determinar el número de clústeres
#| echo: true
# Manual elbow method: total within-cluster sum of squares for k = 1..10
wss_values <- sapply(1:10, function(k) {
clusters_k <- cutree(hc_result, k = k)
sum(sapply(split(component_scores, clusters_k), function(group) {
sum(scale(group, scale = FALSE)^2)
}))
})
wss_data <- data.frame(k = 1:10, wss = wss_values)
ggplot2::ggplot(wss_data, ggplot2::aes(x = k, y = wss)) +
ggplot2::geom_line(color = "#076fa2") +
ggplot2::geom_point(color = "#076fa2", size = 2) +
ggplot2::scale_x_continuous(breaks = 1:10) +
ggplot2::labs(subtitle = "Método del codo", x = "Número de clústeres (k)",
y = "Suma de cuadrados intra-clúster (WSS)") +
ggplot2::theme_minimal()
```
- **Método de la silueta**: sugiere un óptimo de **4 clústeres**, el punto donde
el ancho promedio de la silueta es máximo (valor alto = objetos bien
clasificados en su propio clúster y mal en los vecinos).
- **Método del codo**: muestra un codo claro en **4 clústeres**; a partir de
ahí, añadir más clústeres no reduce significativamente la varianza
intra-clúster.
**Decisión**: ambos métodos objetivos, junto con la inspección del dendrograma,
apuntan de forma consistente a una solución de **4 clústeres**.
### Finalización de la segmentación y perfilado
#### Paso 5: asignación final de los clústeres
```{r}
#| echo: true
final_clusters <- cutree(hc_result, k = 4)
smartphone_data$cluster <- final_clusters
component_scores$cluster <- as.factor(final_clusters)
table(final_clusters)
```
#### Paso 6: visualización de los segmentos en el mapa perceptual
```{r}
#| label: fig-cluster-pca
#| fig-cap: Visualización de clústeres en el espacio de componentes
#| echo: true
factoextra::fviz_cluster(list(data = component_scores[, 1:3], cluster = final_clusters),
ellipse.type = "convex",
repel = TRUE,
show.clust.cent = FALSE,
ggtheme = ggplot2::theme_minimal(),
main = "Visualización de clústeres en el espacio de componentes")
```
El gráfico muestra cuatro grupos bien separados, cada uno ocupando un cuadrante
distinto del espacio perceptual: la segmentación ha sido exitosa.
#### Paso 7: perfilado de los segmentos
El paso más importante desde una perspectiva de negocio es entender quiénes son
estos segmentos, calculando la media de las variables de percepción originales
para cada clúster:
```{r}
#| echo: true
segment_profile <- smartphone_data |>
dplyr::group_by(cluster) |>
dplyr::summarise(dplyr::across(dplyr::where(is.numeric), mean)) |>
dplyr::mutate(dplyr::across(dplyr::where(is.numeric), ~ round(., 2)))
print(segment_profile)
```
**Interpretación y nomenclatura de los segmentos**:
- **Clúster 1 (n = 78), "Pragmáticos del rendimiento"**: puntuaciones
excepcionalmente altas en `battery`, `camera`, `performance` y `screen`; las
más bajas en `design`, `exclusivity` y `low_price`. Buscan un teléfono que
funcione a la perfección, con gran cámara y batería duradera; no priorizan la
estética ni son especialmente sensibles al precio.
- **Clúster 2 (n = 71), "Cazadores de ofertas"**: las puntuaciones más altas en
`low_price` y `promotions`; las más bajas en casi todo lo demás, especialmente
diseño y rendimiento. Su motor de compra principal es el precio; buscan la
mejor relación calidad-precio.
- **Clúster 3 (n = 74), "Entusiastas premium"**: el segmento aspiracional, con
las puntuaciones más altas de todos en casi todas las categorías. Quieren lo
mejor de lo mejor y están dispuestos a pagarlo; el smartphone es herramienta,
accesorio de moda y símbolo de estatus a la vez.
- **Clúster 4 (n = 77), "Estetas del diseño"**: las puntuaciones más altas en
`design`, `materials` y `exclusivity`, con valoraciones mediocres en
rendimiento. Compran con los ojos: la estética y la sensación premium de los
materiales importan más que el último procesador o la mejor cámara.
### Conclusiones
El análisis clúster jerárquico, aplicado sobre las dimensiones extraídas del
ACP, ha permitido identificar cuatro segmentos de consumidores claros, robustos
y accionables. Se ha pasado de 10 variables de percepción a 4 perfiles de
clientes con necesidades y motivaciones distintas, una segmentación que puede
utilizarse para diseñar productos específicos, personalizar campañas de
marketing y optimizar la comunicación de marca para cada grupo.
## El enfoque no jerárquico o de optimización
Si el análisis clúster jerárquico es un explorador paciente que dibuja un mapa
completo de todas las posibles agrupaciones, el **análisis clúster no
jerárquico** es un optimizador eficiente que busca la mejor solución posible
para un número de grupos *predefinido*. No construye un árbol de fusiones, sino
que parte de una asignación inicial y la refina iterativamente para optimizar un
criterio numérico, generalmente minimizando la varianza dentro de los clústeres.
Este enfoque resuelve el principal inconveniente del método jerárquico: la
escalabilidad. Al no necesitar una matriz de distancias N×N, los métodos no
jerárquicos pueden manejar conjuntos de datos mucho mayores de forma eficiente.
El método no jerárquico más utilizado, con diferencia, es el algoritmo
**k-medias** (*k-means*).
### El algoritmo k-medias
El algoritmo k-medias es elegante por su simplicidad y potente por su eficacia.
Su objetivo es particionar N observaciones en *k* clústeres, donde *k* es un
número que el analista debe especificar de antemano. Funciona así
[@MacQueen1967]:
1. **Elección**: se decide el número de clústeres (*k*) a obtener. Es la
decisión más crítica del proceso, y suele apoyarse en el análisis clúster
jerárquico previo.
2. **Inicialización**: el algoritmo selecciona aleatoriamente *k* observaciones
como centros iniciales de los clústeres (**centroides**).
3. **Asignación**: cada observación se asigna al clúster cuyo centroide le sea
más cercano (habitualmente por distancia euclídea), creando la primera
partición.
4. **Actualización**: se recalculan las posiciones de los *k* centroides, como
el vector de medias de las observaciones de cada clúster.
5. **Iteración**: los pasos 3 y 4 se repiten hasta alcanzar la
**convergencia**: cuando ya no hay reasignaciones de objetos entre clústeres
y las posiciones de los centroides se estabilizan.
El resultado final es una única partición que minimiza la suma de los cuadrados
de las distancias de cada punto a su centroide (la varianza intra-clúster).
### Diferencias clave y complementariedad con el clúster jerárquico
| Característica | Clúster jerárquico | Clúster no jerárquico (k-medias) |
|:-------------------|:----------------------|:------------------------------------|
| Número de clústeres | No se especifica a priori; el análisis revela soluciones para todos los números posibles | Debe especificarse (*k*) antes de ejecutar el análisis |
| Resultado principal | Un dendrograma que requiere una decisión posterior para "cortar" | Una única partición de los datos en *k* clústeres |
| Coste computacional | Alto (O(N²)); inviable para conjuntos muy grandes | Bajo; eficiente para grandes conjuntos de datos |
| Sensibilidad | Determinista: mismos datos y método, mismo resultado | Sensible a la selección inicial de centroides |
| Forma de los clústeres | Variable según el método de enlace | Tiende a clústeres esféricos y de tamaño similar |
Lejos de ser competidores, ambos métodos son **altamente complementarios**. Una
de las estrategias de segmentación más robustas y recomendadas es el **enfoque
en dos etapas** [@Hair2019]:
1. **Etapa exploratoria**: se ejecuta un análisis clúster jerárquico
(habitualmente con el método de Ward) sobre los datos, utilizando el
dendrograma y los métodos objetivos (silueta, codo) para determinar el
número óptimo de clústeres (*k*).
2. **Etapa de optimización**: una vez determinado *k*, se ejecuta un análisis
k-medias sobre el conjunto de datos completo, forzando la solución a *k*
clústeres, lo que permite asignar a todos los individuos de forma
computacionalmente eficiente.
Este enfoque combina la riqueza exploratoria del método jerárquico para decidir
el número de segmentos con la eficiencia del método no jerárquico para la
asignación final.
### El desafío de elegir *k*
No existe una respuesta única y mágica para elegir el valor correcto de *k*. La
decisión debe basarse en la convergencia de varias fuentes de evidencia
[@Uriel2005]:
- **Métodos estadísticos**: los mismos que ayudan a cortar el dendrograma (codo,
silueta, estadístico de Gap) pueden aplicarse para evaluar distintas
soluciones de k-medias.
- **Interpretabilidad**: la solución elegida debe tener sentido práctico; un
modelo con 10 clústeres puede ser estadísticamente óptimo pero inútil si no se
puede describir y diferenciar cada segmento con claridad.
- **Estabilidad**: si distintas ejecuciones con diferentes puntos de partida
aleatorios producen particiones muy diferentes, la estructura de clústeres no
es robusta.
- **Conocimiento del negocio**: la teoría o la experiencia previa en un dominio
concreto pueden sugerir un número plausible de segmentos.
### Supuestos y limitaciones de k-medias
1. **Sensibilidad a valores atípicos**: como los centroides se basan en medias,
los valores atípicos pueden arrastrarlos y distorsionar la forma y el centro
de un clúster.
2. **Asunción de clústeres esféricos**: k-medias funciona mejor cuando los
clústeres naturales de los datos son compactos y esféricos; tiene
dificultades con formas irregulares o alargadas.
3. **Variables cuantitativas**: el algoritmo estándar se basa en distancia
euclídea y cálculo de medias, por lo que está diseñado para variables
cuantitativas. Para datos categóricos existen variantes como **k-modas**.
En conclusión, k-medias es una adición indispensable al conjunto de herramientas
del analista, que aporta velocidad, escalabilidad y una solución de segmentación
final optimizada. Su uso combinado con un análisis jerárquico previo constituye
el estándar de referencia para la segmentación de datos en investigación
aplicada.
## Aplicación práctica: optimización de la segmentación con k-medias
La sección anterior utilizó el análisis clúster jerárquico para explorar la
estructura de los datos de consumidores de smartphones. El dendrograma y los
métodos de la silueta y el codo sugirieron de forma consistente que una solución
de cuatro clústeres era la más óptima. Esta sección completa el proceso de
segmentación aplicando k-medias para refinar y finalizar esa solución.
### Objetivo de la investigación
Aplicar el algoritmo k-medias para obtener una partición final y optimizada de
los 300 consumidores en los cuatro segmentos identificados, validando la
estabilidad de la solución encontrada con el método jerárquico.
### Preparación de los datos
Se trabaja con el mismo conjunto de datos que en la sección anterior: las
puntuaciones estandarizadas y no correlacionadas de los 300 consumidores en las
tres dimensiones de percepción.
```{r}
#| echo: true
# Use the component scores, without the previous cluster assignment
kmeans_input <- component_scores[, c("RC1", "RC2", "RC3")]
head(kmeans_input)
```
### Ejecución del análisis clúster k-medias
#### Paso 1: especificación del número de clústeres
Con base en los resultados consistentes del análisis jerárquico exploratorio, se
fija **k = 4**. La decisión ya no es arbitraria, sino que está fundamentada en
la evidencia del paso anterior.
#### Paso 2: ejecución del algoritmo
Se establece una semilla (`set.seed()`) para garantizar reproducibilidad, ya que
el algoritmo parte de una selección aleatoria de centroides. El argumento
`nstart` ejecuta el algoritmo múltiples veces con distintos puntos de partida y
conserva la mejor solución, ayudando a evitar óptimos locales deficientes:
```{r}
#| echo: true
set.seed(123)
kmeans_result <- kmeans(kmeans_input, centers = 4, nstart = 25)
print(kmeans_result)
```
La salida incluye el tamaño de cada clúster (`size`), los centroides finales
(`centers`) y la suma de cuadrados interna (`withinss`), la medida que el
algoritmo minimiza.
### Visualización y caracterización de los clústeres
#### Paso 3: visualización de la solución final
```{r}
#| label: fig-kmeans-cluster
#| fig-cap: Visualización de clústeres (k-medias, k=4)
#| echo: true
factoextra::fviz_cluster(kmeans_result, data = kmeans_input,
ellipse.type = "convex",
repel = TRUE,
show.clust.cent = TRUE,
ggtheme = ggplot2::theme_minimal(),
main = "Visualización de clústeres (k-medias, k=4)")
```
El gráfico muestra cuatro segmentos bien definidos y compactos. Visualmente, la
solución es muy similar a la obtenida con el método jerárquico, pero los grupos
resultan algo más cohesivos, lo esperable dado que k-medias está diseñado
específicamente para optimizar esa compacidad.
#### Paso 4: perfilado de los segmentos
```{r}
#| echo: true
smartphone_data$cluster_kmeans <- kmeans_result$cluster
segment_profile_kmeans <- smartphone_data |>
dplyr::group_by(cluster_kmeans) |>
dplyr::summarise(dplyr::across(dplyr::where(is.numeric), mean)) |>
dplyr::mutate(dplyr::across(dplyr::where(is.numeric), ~ round(., 2)))
print(segment_profile_kmeans)
```
Los perfiles son extraordinariamente similares a los obtenidos con el método
jerárquico, lo que aporta gran confianza en la estabilidad de la segmentación:
- **Clúster 1 (n = 77), "Estetas del diseño"**: puntuaciones máximas en
`design`, `materials` y `exclusivity`, con valoraciones mediocres en
rendimiento.
- **Clúster 2 (n = 78), "Pragmáticos del rendimiento"**: puntuaciones máximas en
`battery`, `camera`, `performance` y `screen`, con poco interés en diseño o
precio.
- **Clúster 3 (n = 71), "Cazadores de ofertas"**: puntuaciones máximas en
`low_price` y `promotions`, con las valoraciones más bajas en casi todo lo
demás.
- **Clúster 4 (n = 74), "Entusiastas premium"**: puntuaciones altas en todas las
dimensiones, tanto rendimiento como diseño. El segmento que lo quiere todo.
### Validación: comparación de las soluciones jerárquica y k-medias
Para validar formalmente la estabilidad de la segmentación, se cruzan las
asignaciones de clúster de ambos métodos en una tabla de contingencia:
```{r}
#| echo: true
hierarchical_clusters <- cutree(hc_result, k = 4)
comparison_table <- table(Hierarchical = hierarchical_clusters, KMeans = kmeans_result$cluster)
print(comparison_table)
```
La tabla muestra una concordancia casi perfecta: la gran mayoría de los
individuos (los valores altos en la diagonal) han sido asignados al mismo
clúster por ambos métodos. Las pequeñas discrepancias fuera de la diagonal son
mínimas. Esta alta consistencia da una gran confianza en que los segmentos
identificados no son un artefacto de un método particular, sino una estructura
real y robusta en los datos.
### Conclusiones
Al aplicar un enfoque en dos etapas se ha logrado una segmentación de mercado
sólida y fiable. El análisis jerárquico permitió explorar los datos y determinar
de forma objetiva que una solución de cuatro clústeres era la más apropiada; el
análisis k-medias utilizó después esa información para producir una partición
final optimizada, eficiente y altamente estable.
Se han identificado cuatro perfiles de consumidores de smartphones distintos y
accionables, cada uno con un conjunto único de prioridades. Esta información
permite al fabricante:
- **Desarrollar productos** enfocados a las necesidades de cada segmento.
- **Diseñar mensajes de marketing** que resuenen con las motivaciones de cada
grupo.
- **Seleccionar los canales de comunicación** más adecuados para llegar a ellos.
Este caso práctico ilustra cómo la combinación de distintas técnicas
multivariantes permite pasar de datos brutos a una visión estratégica clara y
fundamentada.
## Addendum teórico: caracterización vs. perfilado de segmentos
Una vez que el algoritmo de clustering ha producido una partición de los datos
en segmentos, el análisis no ha hecho más que empezar. Obtener los clústeres es
la parte técnica; el verdadero valor para el negocio reside en la capacidad de
**entenderlos y describirlos**. Este proceso se divide en dos fases
conceptualmente distintas pero complementarias: la caracterización y el
perfilado.
### Caracterización de los segmentos: el "¿qué?"
La **caracterización** describe los clústeres utilizando las **mismas variables
que se usaron para crearlos** (las "variables activas"). Responde a la pregunta:
¿qué define a cada segmento? ¿En qué se diferencian fundamentalmente unos de
otros según las variables de segmentación?
En el caso práctico, calcular las medias de las puntuaciones de los componentes
("Rendimiento", "Diseño", "Valor") para cada clúster es, precisamente, una
caracterización. Este paso es indispensable para entender la esencia de cada
grupo y poder nombrarlo de forma descriptiva ("Pragmáticos del rendimiento",
"Estetas del diseño"...). La caracterización revela la "razón de ser" de cada
clúster según el propio algoritmo.
### Perfilado de los segmentos: el "¿quién?"
El **perfilado** describe los clústeres utilizando **variables externas que no
se incluyeron en el algoritmo de clustering**, conocidas como "variables
ilustrativas". Suelen ser variables demográficas (edad, sexo, ingresos, nivel
educativo), geográficas (país, tipo de hábitat) o de comportamiento (frecuencia
de compra, canal preferido).
El perfilado responde a la pregunta: ¿quiénes son las personas que componen cada
segmento? Este paso dota de "carne y hueso" a los segmentos, haciéndolos
tangibles y accionables desde una perspectiva de marketing. Saber que el
"Segmento 1" valora el rendimiento es útil (caracterización), pero saber que
está compuesto mayoritariamente por hombres de 25 a 35 años con ingresos altos
que viven en zonas urbanas (perfilado) es lo que permite diseñar una campaña de
marketing para alcanzarlos.
#### La validación estadística en el perfilado
Una tabla de porcentajes o medias de las variables de perfilado para cada
clúster es un buen punto de partida, pero no basta: ¿cómo saber si las
diferencias observadas son reales o fruto del azar muestral? Aquí se conecta de
nuevo con la estadística inferencial de capítulos anteriores.
Para un perfilado robusto, se trata la variable "clúster" (categórica, creada
por el algoritmo) como variable independiente, y las variables de perfilado como
variables dependientes, aplicando la prueba adecuada según su naturaleza
[@Hair2019]:
- **Variable de perfilado cualitativa** (sexo, nivel educativo): **test
chi-cuadrado de independencia**. H₀: no hay asociación entre la pertenencia a
un clúster y la variable de perfilado. Se busca un p-valor \< 0,05 para
rechazar H₀ y concluir que la variable discrimina significativamente entre
segmentos.
- **Variable de perfilado cuantitativa** (edad, gasto mensual): **ANOVA de un
factor** (más de dos clústeres) o **prueba t** (solo dos). H₀: la media de la
variable es la misma en todos los clústeres. Se busca un p-valor \< 0,05 para
rechazar H₀; si el ANOVA es significativo, pruebas post-hoc como Tukey
permiten identificar qué segmentos difieren entre sí.
### Síntesis y flujo de trabajo
| Fase | Pregunta clave | Variables utilizadas | Metodología principal |
|:----------------|:----------------|:----------------------|:-----------------------|
| Caracterización | ¿Qué define al segmento? | Las mismas del clúster (activas) | Comparación de medias o frecuencias |
| Perfilado | ¿Quién está en el segmento? | Externas al clúster (ilustrativas) | Chi-cuadrado, ANOVA, prueba t |
Este proceso en dos fases transforma el resultado de un algoritmo de clustering
en un activo estratégico. La caracterización aporta la esencia conceptual de
cada segmento; el perfilado estadísticamente validado proporciona un retrato
accionable y fiable de los individuos que lo componen, permitiendo tomar
decisiones de negocio con mayor confianza.