# Modelos de elección discreta y análisis conjoint: introducción y conjoint tradicional
```{r}
#| echo: false
#| message: false
#| warning: false
source("script.R")
```
## Introducción: cuando la decisión es elegir entre varias opciones
La regresión logística, desarrollada en capítulos anteriores, enseñó a modelar
una elección entre **dos** opciones: comprar o no comprar, abandonar o
permanecer, aprobar o rechazar. Pero buena parte de las decisiones de consumo
reales no son binarias: un comprador no decide simplemente "comprar o no comprar
un teléfono", sino que elige **entre varias alternativas concretas** —un iPhone,
un Samsung, un Xiaomi— cada una con su propia combinación de precio,
características y marca.
Para modelar este tipo de decisión hace falta una familia de técnicas
específicamente diseñada para elecciones entre múltiples alternativas: los
**modelos de elección discreta** (*discrete choice models*). Su aplicación más
extendida e influyente en investigación de mercados es el **análisis conjoint**,
que se desarrolla a lo largo de cuatro capítulos: este, dedicado a la
introducción conceptual y a la variante tradicional basada en rankings; el
siguiente, dedicado al análisis conjoint basado en elecciones (CBC); un tercero,
dedicado al diseño de experimentos y a la estimación avanzada; y un cuarto,
dedicado al MaxDiff como caso especial de la misma familia de modelos.
::: callout-tip
## Una nota para quien viene de SPSS
SPSS Base no incluye análisis conjoint; IBM ofrece un módulo independiente (SPSS
Conjoint) orientado al conjoint tradicional basado en rankings o puntuaciones,
que es precisamente la variante desarrollada en este capítulo. El análisis CBC,
hoy el estándar de la industria y objeto del capítulo siguiente, no tiene
equivalente en SPSS Conjoint.
:::
## El problema que resuelve el análisis conjoint
Imagínese una empresa de electrónica que quiere lanzar un nuevo lector de libros
electrónicos. Antes de fabricarlo, necesita responder preguntas muy concretas:
- ¿Cuánto le importa a un consumidor la capacidad de almacenamiento frente al
precio?
- ¿Preferirían los clientes una pantalla más grande aunque el dispositivo cueste
más?
- ¿Qué color de carcasa resulta más atractivo, y cuánto vale esa preferencia en
términos de precio?
- Si se lanzara una combinación concreta de atributos (almacenamiento, pantalla,
color, precio), ¿qué cuota de mercado captaría frente a los productos de la
competencia?
Preguntar directamente "¿qué importancia tiene el precio para usted?" produce
respuestas poco fiables: las personas tienden a infravalorar el precio y
sobrevalorar los atributos "nobles" cuando se les pregunta de forma aislada. El
análisis conjoint resuelve este problema de un modo más realista: en lugar de
preguntar por la importancia de cada atributo por separado, presenta a los
encuestados **productos completos** que combinan varios atributos a la vez, y
observa qué prefieren. La importancia relativa de cada atributo se infiere
estadísticamente a partir de esas respuestas, no se pregunta directamente.
## Los componentes de un estudio conjoint
### Atributos y niveles
Un atributo es una característica del producto que se quiere testar (precio,
marca, almacenamiento...); cada atributo se descompone en niveles, los valores
concretos que puede tomar. Por ejemplo:
| Atributo | Niveles |
|:-------------------|:--------------------------|
| Almacenamiento | 8 GB / 16 GB |
| Tamaño de pantalla | 5" / 6" / 7" |
| Color | Negro / Blanco / Plateado |
| Precio | 99€ / 129€ / 159€ |
### Perfiles
Un **perfil** es una combinación concreta de niveles, uno por atributo: un
producto hipotético completo (por ejemplo, "16 GB, pantalla de 6 pulgadas, color
negro, 129€"). A partir de aquí, existen dos grandes familias de diseño
experimental, que dan lugar a las dos variantes principales del análisis
conjoint:
- **Conjoint tradicional**: a cada encuestado se le muestra una secuencia de
perfiles individuales completos, y se le pide que los puntúe o los ordene
según su preferencia. Es la variante histórica original, desarrollada en este
mismo capítulo.
- **Conjoint basado en elecciones (CBC)**: a cada encuestado se le presentan
varios perfiles a la vez, agrupados en una tarea de elección, y se le pide que
seleccione cuál compraría. Es la variante que domina la práctica profesional
actual, y se desarrolla en el capítulo siguiente.
## El conjoint tradicional: fundamento y procedimiento
El **conjoint tradicional** (o *conjoint basado en perfiles completos*) es la
variante original del análisis conjoint, propuesta por @Green1978. A diferencia
del CBC, donde el encuestado elige una alternativa entre varias presentadas en
cada tarea, en el conjoint tradicional se le muestra una tarjeta con un único
perfil de producto completo, y se le pide que lo **puntúe** (en una escala, por
ejemplo de 0 a 10) o lo **ordene** en relación con el resto de perfiles
presentados.
Esta variante resulta más sencilla de estimar que el CBC: en lugar de un modelo
logit condicional basado en la probabilidad de elección entre alternativas, se
ajusta una **regresión lineal** (o un modelo de rangos) sobre las puntuaciones u
órdenes otorgados por cada encuestado, tratando los niveles de cada atributo
como variables predictoras categóricas. El resultado es, igualmente, un conjunto
de **utilidades parciales** (*part-worths*) por nivel de atributo, pero obtenido
con un procedimiento estadístico mucho más directo que el del CBC.
El paquete `conjoint`, desarrollado por **Andrzej Bąk y Tomasz Bartłomowicz**
(Universidad de Economía de Wrocław), implementa este enfoque tradicional en R,
replicando la lógica del módulo SPSS Conjoint [@Bak2012].
## Aplicación práctica: valoración de perfiles de lector electrónico
Se desarrolla el caso de la empresa de electrónica que está diseñando un nuevo
lector de libros electrónicos, utilizando el enfoque tradicional de valoración
de perfiles completos.
### Objetivo de la investigación
> **Objetivo**: estimar, mediante el conjoint tradicional, las utilidades
> parciales de cada nivel de atributo del producto a partir de las puntuaciones
> otorgadas por un encuestado a un conjunto reducido de perfiles completos, y
> determinar la importancia relativa de cada atributo en la decisión de compra.
### Diseño del experimento: perfiles factoriales
El primer paso es generar el diseño de perfiles a partir de los niveles de cada
atributo. Con cuatro atributos (2 × 3 × 3 × 3 = 54 combinaciones posibles), un
diseño factorial completo sería excesivo para que un encuestado lo valore en su
totalidad; se genera por tanto un **diseño factorial fraccional**, que reduce el
número de perfiles mientras conserva la capacidad de estimar los efectos
principales de cada atributo:
```{r}
#| echo: true
#| message: false
trad_attribute_levels <- expand.grid(
storage = c("8GB", "16GB"),
screen = c("5in", "6in", "7in"),
color = c("Black", "White", "Silver"),
price = c("99", "129", "159")
)
trad_design <- conjoint::caFactorialDesign(
data = trad_attribute_levels,
type = "fractional"
)
trad_design
```
### Simulación de las puntuaciones de un encuestado
En un estudio real, cada encuestado puntuaría los perfiles del diseño. Para
ilustrar el procedimiento, se simulan las puntuaciones de un único encuestado,
siguiendo una estructura de preferencias plausible: preferencia por mayor
capacidad de almacenamiento, por pantallas más grandes, por colores distintos
del negro, y aversión al precio.
```{r}
#| echo: true
set.seed(11)
# Simulate plausible 0-10 ratings for each profile in the design,
# following a realistic underlying preference structure
trad_ratings <- trad_design |>
dplyr::mutate(
rating = 5 +
dplyr::if_else(storage == "16GB", 1.5, 0) +
dplyr::case_when(screen == "6in" ~ 0.8, screen == "7in" ~ 0.5, TRUE ~ 0) +
dplyr::case_when(color == "White" ~ 0.3, color == "Silver" ~ 0.6, TRUE ~ 0) -
(as.numeric(as.character(price)) - 99) * 0.02 +
rnorm(dplyr::n(), 0, 0.5)
) |>
dplyr::mutate(rating = round(pmin(10, pmax(0, rating)), 1))
trad_ratings
```
### Estimación de las utilidades parciales
La función `caModel()` ajusta el modelo de regresión que descompone la
puntuación total de cada perfil en las utilidades parciales aportadas por cada
nivel de atributo:
```{r}
#| echo: true
#| message: false
trad_model <- conjoint::caModel(
y = trad_ratings$rating,
x = trad_design
)
summary(trad_model)
```
Cada coeficiente representa la utilidad parcial (*part-worth*) de un nivel de
atributo, en relación con su categoría de referencia.
### Importancia relativa de los atributos
```{r}
#| echo: true
#| message: false
trad_importance_raw <- conjoint::caImportance(
y = trad_ratings$rating,
x = trad_design
)
trad_importance_raw
```
```{r}
#| label: fig-traditional-importance
#| fig-cap: Importancia relativa de los atributos (conjoint tradicional)
#| echo: true
# trad_importance_raw is returned by caImportance() in the same order in
# which attributes were specified in trad_attribute_levels: storage,
# screen, color, price. Names are assigned explicitly here rather than
# relying on any names already attached to the vector, to avoid mismatches.
trad_importance_data <- data.frame(
attribute = c("storage", "screen", "color", "price"),
importance = round(as.numeric(trad_importance_raw), 1)
)
ggplot2::ggplot(trad_importance_data,
ggplot2::aes(x = reorder(attribute, importance), y = importance)) +
ggplot2::geom_col(fill = "#076fa2") +
ggplot2::geom_text(ggplot2::aes(label = paste0(importance, "%")), hjust = -0.1) +
ggplot2::coord_flip() +
ggplot2::scale_y_continuous(limits = c(0, max(trad_importance_data$importance) * 1.2)) +
ggplot2::labs(x = NULL, y = "Importancia relativa (%)") +
ggplot2::theme_minimal()
```
El precio resulta ser el atributo más determinante en la decisión, seguido de la
capacidad de almacenamiento; el color es el atributo de menor peso relativo en
la valoración de los perfiles.
::: callout-tip
## Conjoint tradicional frente a CBC
El conjoint tradicional es conceptualmente más simple y computacionalmente más
ligero —se basa en una regresión, no en un modelo logit—, pero exige al
encuestado una tarea cognitiva menos realista: valorar perfiles de producto de
forma aislada, sin la dinámica de comparación directa entre alternativas que sí
ofrece el CBC. Por esta razón, el CBC ha desplazado progresivamente al conjoint
tradicional como estándar de la industria desde la década de 1990, aunque el
conjoint tradicional conserva su utilidad en estudios con un número reducido de
atributos y encuestados, o como introducción pedagógica a la lógica del análisis
conjoint.
:::
### Conclusiones
El conjoint tradicional ha permitido, con un procedimiento estadístico sencillo,
estimar las utilidades parciales de cada nivel de atributo y determinar su
importancia relativa en la decisión de compra. Esta variante sienta las bases
conceptuales —atributos, niveles, perfiles, utilidades parciales, importancia
relativa— que reaparecerán, con un fundamento estadístico distinto, en el
análisis conjoint basado en elecciones desarrollado en el capítulo siguiente.