“Diseñando el Smartwatch Perfecto: Un Análisis Conjoint para TecnoFácil”
Contexto:
TecnoFácil, una de las cadenas de tiendas de electrónica más grandes del país, ha decidido incursionar en el competitivo mercado de los smartwatches con una línea de productos de marca propia. Este es un paso estratégico importante, ya que competirá directamente con gigantes establecidos como Apple, Samsung y Xiaomi. Para asegurar el éxito y maximizar la aceptación de sus nuevos modelos, TecnoFácil necesita entender profundamente qué atributos valoran más los consumidores en un smartwatch. No pueden permitirse lanzar un producto que no resuene con las preferencias del mercado.
Objetivo:
Mediante la aplicación de una metodología Conjoint Analysis, TecnoFácil busca:
Identificar la importancia relativa de atributos clave como el tipo de pantalla, la duración de la batería, las funcionalidades y el precio.
Determinar la utilidad (preferencia) específica que los consumidores asignan a cada nivel de estos atributos.
Simular la participación de mercado estimada para diferentes configuraciones de smartwatches (incluyendo prototipos propios y modelos de la competencia), con el fin de seleccionar la estrategia de lanzamiento más prometedora.
¡Es tu turno de ayudar a TecnoFácil a diseñar el smartwatch que los consumidores realmente quieren!
Para entender las preferencias de los consumidores, hemos definido 4 atributos clave de un smartwatch, cada uno con 3 niveles distintos. Esta elección nos permite capturar las principales dimensiones de decisión del comprador.
Atributo | Niveles |
---|---|
Pantalla | “LCD”, “OLED”, “AMOLED” |
Batería | “24_horas”, “48_horas”, “72_horas” |
Funcionalidades | “Basicas”, “Avanzadas”, “Pro” |
Precio | “300”, “500”, “700” |
El número total de combinaciones posibles (si evaluáramos todas) sería de 3 x 3 x 3 x 3 = 81 smartwatches únicos. Para hacer el estudio manejable y evitar la fatiga del encuestado, utilizaremos un diseño factorial fraccionado que reduce el número de perfiles a evaluar a solo 18 perfiles. Estos 18 perfiles están cuidadosamente seleccionados para permitirnos estimar la utilidad de cada atributo y nivel de manera eficiente.
# Instalar paquete si es necesario (descomentar y ejecutar una vez)
# install.packages("conjoint")
# install.packages("dplyr")
# install.packages("plotly")
library(conjoint)
library(dplyr)
library(plotly)
## Definir atributos y niveles (asegurarse que los nombres coincidan con el caso)
atributos <- list(
pantalla = c("LCD", "OLED", "AMOLED"),
bateria = c("24_horas", "48_horas", "72_horas"),
funcionalidades = c("Basicas", "Avanzadas", "Pro"),
precio = c("300", "500", "700")
)
# Generar todas las combinaciones posibles (el factorial completo)
# Esto crea un dataframe con 81 filas (3x3x3x3)
perfiles <- expand.grid(atributos)
# Crear diseño factorial fraccionado
set.seed(123)
design <- caFactorialDesign(data = perfiles, type = "fractional", cards = 12)
print(design)
## pantalla bateria funcionalidades precio
## 6 AMOLED 48_horas Basicas 300
## 12 AMOLED 24_horas Avanzadas 300
## 16 LCD 72_horas Avanzadas 300
## 19 LCD 24_horas Pro 300
## 23 OLED 48_horas Pro 300
## 28 LCD 24_horas Basicas 500
## 38 OLED 24_horas Avanzadas 500
## 49 LCD 48_horas Pro 500
## 54 AMOLED 72_horas Pro 500
## 62 OLED 72_horas Basicas 700
## 67 LCD 48_horas Avanzadas 700
## 75 AMOLED 24_horas Pro 700
Hemos encuestado las preferencias de 35 consumidores. A cada uno se le pidió que ranqueara los 18 perfiles de smartwatch generados en la sección anterior, desde el más preferido (rango 1) hasta el menos preferido (rango 18).
Ahora, cargamos la base de datos de las preferencias de las encuestas realizadas:
# Cargar la base de encuestados realizados para este experimento
preferencias <- read.csv("preferencias_smartwatch.csv")
head(preferencias)
## id_encuestado P1 P2 P3 P4 P5 P6 P7 P8 P9 P10 P11 P12
## 1 1 5 4 2 7 3 12 10 6 1 9 11 8
## 2 2 3 4 5 6 1 12 8 7 2 10 11 9
## 3 3 4 5 3 6 1 12 10 7 2 9 11 8
## 4 4 4 5 3 6 2 12 10 7 1 9 11 8
## 5 5 4 5 3 6 2 12 10 7 1 8 11 9
## 6 6 4 5 3 6 2 12 8 7 1 10 11 9
Utilizaremos la función Conjoint()
del paquete
conjoint
para estimar las utilidades parciales de cada
nivel de atributo y la importancia relativa de cada atributo.
niveles <- data.frame(
pantalla = c("LCD", "OLED", "AMOLED"),
bateria = c("24_horas", "48_horas", "72_horas"),
funcionalidades = c("Basicas", "Avanzadas", "Pro"),
precio = c("300", "500", "700")
)
# Ajustar modelo conjoint
# y = datos de preferencia (excluyendo la columna ID, si existe)
# x = el diseño factorial fraccionado (el objeto 'design' generado)
# z = los nombres de los niveles para una interpretación clara
# y.type = "rank" indica que las preferencias son rankings
resultados_conjoint <- Conjoint(y = preferencias[,-1], x = design, z = niveles , y.type ="rank")
##
## Call:
## lm(formula = frml)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1,92976 -0,35476 -0,04048 0,27381 2,07024
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 6,28849 0,03219 195,362 < 2e-16 ***
## factor(x$pantalla)1 -1,42540 0,04218 -33,794 < 2e-16 ***
## factor(x$pantalla)2 -0,17421 0,04743 -3,673 0,000271 ***
## factor(x$bateria)1 -2,44444 0,04218 -57,953 < 2e-16 ***
## factor(x$bateria)2 0,06627 0,04479 1,479 0,139795
## factor(x$funcionalidades)1 -1,43135 0,04743 -30,181 < 2e-16 ***
## factor(x$funcionalidades)2 -0,17183 0,04479 -3,836 0,000145 ***
## factor(x$precio)1 2,86032 0,04218 67,813 < 2e-16 ***
## factor(x$precio)2 -0,14325 0,04479 -3,198 0,001491 **
## ---
## Signif. codes: 0 '***' 0,001 '**' 0,01 '*' 0,05 '.' 0,1 ' ' 1
##
## Residual standard error: 0,6181 on 411 degrees of freedom
## Multiple R-squared: 0,9686, Adjusted R-squared: 0,968
## F-statistic: 1586 on 8 and 411 DF, p-value: < 2,2e-16
## [1] "Part worths (utilities) of levels (model parameters for whole sample):"
## levnms utls
## 1 intercept 6,2885
## 2 LCD -1,4254
## 3 OLED -0,1742
## 4 AMOLED 1,5996
## 5 24_horas -2,4444
## 6 48_horas 0,0663
## 7 72_horas 2,3782
## 8 Basicas -1,4313
## 9 Avanzadas -0,1718
## 10 Pro 1,6032
## 11 300 2,8603
## 12 500 -0,1433
## 13 700 -2,7171
## [1] "Average importance of factors (attributes):"
## [1] 18,40 29,30 18,41 33,89
## [1] Sum of average importance: 100
## [1] "Chart of average factors importance"
resultados_conjoint
## [,1]
## [1,] 0.7
## [2,] 1.9
## [3,] 3.1
## [4,] 4.3
Los coeficientes (utilidades parciales) nos indican cuánto valor o disvalor añade cada nivel de atributo a la preferencia general del consumidor. Un valor alto positivo indica una fuerte preferencia, mientras que un valor negativo indica una dispreferencia. (Nota: el intercepto es la base, y cada utilidad se suma/resta a esta base).
Atributo/Nivel | Estimación | Significancia | Interpretación Clave |
---|---|---|---|
(Intercepto) | 6.29 | *** |
Punto de partida del valor estimado para cualquier diseño de smartwatch. |
Pantalla (LCD) | -1.43 | *** |
Las pantallas LCD son un factor de rechazo muy significativo por los consumidores. |
Pantalla (OLED) | -0.17 | *** |
Las pantallas OLED también generan rechazo, pero significativamente menor que las LCD. |
Pantalla (AMOLED) | 1.60 | N/A | Las pantallas AMOLED son el tipo de pantalla más valorado, impulsando fuertemente la preferencia. |
Batería (24_horas) | -2.44 | *** |
Una batería que dura solo 24 horas es un factor de rechazo masivo y altamente significativo. |
Batería (48_horas) | 0.07 | N/S | Una batería de 48 horas tiene un impacto prácticamente neutral en la preferencia del consumidor. |
Batería (72_horas) | 2.38 | *** |
Las baterías de 72 horas son el factor más valorado en cuanto a autonomía, impulsando significativamente la preferencia. |
Funcionalidades (Básicas) | -1.43 | *** |
Las funcionalidades básicas son un factor de rechazo muy significativo. |
Funcionalidades (Avanzadas) | -0.17 | *** |
Las funcionalidades avanzadas también generan rechazo, aunque significativamente menor que las básicas. |
Funcionalidades (Pro) | 1.60 | N/A | Las funcionalidades “Pro” son el nivel más valorado, aportando un impulso significativo a la preferencia. |
Precio (300) | 2.86 | *** |
El precio de S/300 es el factor más positivo y más fuerte en la decisión, atrayendo enormemente a los consumidores. |
Precio (500) | -0.14 | ** |
El precio de S/500 genera un ligero rechazo, pero es significativamente menos negativo que el precio de S/700. |
Precio (700) | -2.71 | *** |
El precio de S/700 es el factor de rechazo más potente de todos, disuadiendo fuertemente la compra. |
Significancia: ***
p < 0.001, **
p <
0.01, *
p < 0.05.
(N/A = No aplica directamente el p-valor para esta categoría en la
salida lm
porque su valor se deduce de las demás para la
suma cero; N/S = No significativo, p > 0.05).
La importancia relativa nos dice qué porcentaje de la decisión total (o de la variabilidad en la preferencia) es explicado por cada atributo. Cuanto mayor sea el porcentaje, más crítico es el atributo en la decisión de compra.
Atributo | Importancia (%) | Interpretación |
---|---|---|
Precio | 33.89% | El atributo más influyente de todos, el precio es el factor determinante para la decisión del consumidor. |
Batería | 29.30% | El segundo factor más crítico, la duración de la batería es una preocupación primordial para los consumidores. |
Funcionalidades | 18.41% | Importancia moderada, pero significativa; los consumidores sí valoran la complejidad de las características. |
Pantalla | 18.40% | El tipo de pantalla es el menos influyente de los atributos considerados, aunque su impacto es comparable al de las funcionalidades. |
Precio y Batería son los Dictadores del Mercado, especial atención a los “Negativos”. Los resultados confirman que el precio (33.89%) y la batería (29.30%) son, con diferencia, los atributos más importantes. Observamos patrones extremos:
Precio: El precio de S/300 es el imán de la preferencia (+2.86), mientras que S/700 es el repelente más fuerte (-2.71). S/500 es ligeramente negativo (-0.14).
Batería: 72 horas es lo más deseado (+2.38). 24 horas es un rotundo rechazo (-2.44). 48 horas es prácticamente neutral (+0.07).
Importante: La magnitud de los rechazos supera a menudo la de las atracciones. Evitar los “No-Gos” (batería corta, precio alto) es tan o más crítico que ofrecer los “Must-Haves” más premium.
Funcionalidades y Pantalla: El Lujo Valorado, pero Rindes Decrecientes en lo Básico.
Funcionalidades: “Pro” es muy valorado (+1.60), pero “Básicas” (-1.43) y “Avanzadas” (-0.17) son penalizadas. Esto sugiere que los consumidores buscan un smartwatch potente, la “mediocridad” no es bien recibida.
Pantalla: AMOLED es muy apreciado (+1.60), mientras que LCD (-1.43) y OLED (-0.17) restan valor. Los usuarios esperan calidad visual.
TecnoFácil quiere evaluar cómo se comportarían cuatro prototipos de smartwatches en el mercado, frente a una propuesta propia y tres modelos de la competencia hipotéticos. Usaremos nuestro modelo Conjoint para estimar la cuota de mercado probable de cada uno.
Productos a Simular:
Producto | Pantalla | Batería | Funcionalidades | Precio |
---|---|---|---|---|
TecnoFácil_Pro | AMOLED | 48_horas | Pro | 500 |
Competidor_Eco | LCD | 24_horas | Basicas | 300 |
Competidor_Premium | AMOLED | 72_horas | Pro | 700 |
Competidor_Balance | OLED | 48_horas | Avanzadas | 500 |
# Definir los productos a simular
simulacion <- data.frame(
producto = c("TecnoFácil_Pro", "Competidor_Eco", "Competidor_Premium", "Competidor_Balance"),
pantalla = c("AMOLED", "LCD", "AMOLED", "OLED"),
bateria = c("48_horas", "24_horas", "72_horas", "48_horas"),
funcionalidades = c("Pro", "Basicas", "Pro", "Avanzadas"),
precio = c("500", "300", "700", "500")
)
print(simulacion)
## producto pantalla bateria funcionalidades precio
## 1 TecnoFácil_Pro AMOLED 48_horas Pro 500
## 2 Competidor_Eco LCD 24_horas Basicas 300
## 3 Competidor_Premium AMOLED 72_horas Pro 700
## 4 Competidor_Balance OLED 48_horas Avanzadas 500
# Realizar la simulación
# sym = los productos a simular (dataframe sin la columna de nombres de producto)
# y = datos de preferencias (sin la columna de ID si existe)
# x = el diseño factorial fraccionado original utilizado para el estudio
resultados_simulacion <- ShowAllSimulations(
sym = simulacion[, -1],
y = preferencias[,-1],
x = design
)
## TotalUtility MaxUtility BTLmodel LogitModel
## 1 6,61 0,00 24,71 19,67
## 2 6,64 25,71 24,84 24,41
## 3 6,87 34,29 25,71 31,67
## 4 6,62 40,00 24,73 24,26
# Formatear los resultados en un dataframe para una mejor lectura
participacion <- data.frame(
Producto = simulacion$producto,
TotalUtility = resultados_simulacion[, 1],
MaxUtility_Pct = resultados_simulacion[, 2], # Porcentaje de encuestados que lo eligieron como su primera opción
BTL_Pct = resultados_simulacion[, 3], # Cuota de mercado estimada (Modelo BTL - Bradley-Terry-Luce)
Logit_Pct = resultados_simulacion[, 4] # Cuota de mercado estimada (Modelo Logit)
)
print(participacion)
## Producto TotalUtility MaxUtility_Pct BTL_Pct Logit_Pct
## 1 TecnoFácil_Pro 6.61 0.00 24.71 19.67
## 2 Competidor_Eco 6.64 25.71 24.84 24.41
## 3 Competidor_Premium 6.87 34.29 25.71 31.67
## 4 Competidor_Balance 6.62 40.00 24.73 24.26
(Nota: El modelo Logit es generalmente considerado el más robusto para la estimación de cuota de mercado en análisis conjoint, ya que tiene en cuenta el efecto de todos los productos en el set de elección.)
# Gráfico de participación (Modelo Logit)
barplot(participacion$Logit_Pct, # Usar 'Logit_Pct' de la tabla 'participacion'
names.arg = participacion$Producto,
col = c("#1f77b4", "#ff7f0e", "#2ca02c", "#d62728"), # Colores atractivos
main = "Participación de Mercado Estimada (Modelo Logit)",
ylab = "% Participación",
ylim = c(0, 60), # Límite superior del eje Y para dejar espacio al texto
cex.names = 0.8) # Ajusta el tamaño del texto de los nombres
“Competidor_Premium” Emerge como el Líder Inesperado.
Con un 31.67% de participación de mercado Logit, este producto (AMOLED / 72_horas / Pro / 700) demuestra que un segmento considerable de consumidores está dispuesto a pagar un precio muy alto (el más negativo de todos) a cambio de obtener la máxima calidad en todos los atributos valorados (Pantalla, Batería, Funcionalidades). Su victoria se basa en la acumulación de las utilidades positivas más altas, que logran compensar su gran desventaja en el precio.
Su TotalUtility de 6.87 es el más alto, lo que valida su valor percibido, aunque el precio sea una barrera para una mayoría.
“Competidor_Balance” y “Competidor_Eco”: Competencia en Nichos Diferentes.
Ambos se sitúan cercanos a un 24% de cuota.
“Competidor_Balance” (OLED / 48_horas / Avanzadas / 500): Obtiene un impresionante 40% en “MaxUtility”. Esto significa que es la opción preferida por un gran número de individuos, aunque su cuota Logit es menor. Su perfil se basa en evitar grandes rechazos (24h de batería, precio 700, LCD/Básicas) y ofrecer un rendimiento aceptable en atributos que, aunque individualmente son ligeramente negativos (OLED -0.17, Avanzadas -0.17, Precio 500 -0.14), no son catastróficos. Es el “safe bet” que satisface a una base amplia sin ser “el mejor” en nada.
“Competidor_Eco” (LCD / 24_horas / Basicas / 300): Este producto es un claro ejemplo del poder abrumador del precio más bajo (+2.86). A pesar de combinar los atributos más rechazados en batería (24h: -2.44), pantalla (LCD: -1.43) y funcionalidades (Básicas: -1.43), su precio lo convierte en una opción viable para un segmento significativo que valora el costo sobre todo lo demás. Es la opción del “mínimalista de bajo presupuesto”.
El Dilema de “TecnoFácil_Pro”: Atrapado en el Medio.
Este gráfico nos permite visualizar rápidamente qué atributos son los más influyentes en la decisión de compra de un smartwatch. Una barra más alta indica un mayor peso en la elección del consumidor.
# Crear dataframe con la importancia
importancia_df <- data.frame(
Atributo = c("Pantalla", "Batería", "Funcionalidades", "Precio"), # Nombres de atributos
Importancia = c(18.40, 29.30, 18.41, 33.89) # Valores de importancia directamente de la salida
) %>%
arrange(desc(Importancia)) # Ordenar de mayor a menor importancia
# Gráfico interactivo de barras
plot_ly(importancia_df,
x = ~Atributo,
y = ~Importancia,
type = 'bar',
color = ~Atributo, # Colorea las barras por el atributo
colors = c("#4ECDC4", "#FF6B6B", "#45B7D1", "#FFA07A"), # Paleta de colores personalizada
text = ~paste("Importancia:", round(Importancia, 1), "%"), # Texto para hover
hoverinfo = 'text') %>%
layout(title = "IMPORTANCIA RELATIVA DE ATRIBUTOS<br><sup>Análisis Conjoint Smartwatch - TecnoFácil</sup>",
yaxis = list(title = "% Importancia"),
xaxis = list(title = "", categoryorder = "array", categoryarray = importancia_df$Atributo)) # Asegurar el orden visual del eje X
Este heatmap nos da una visión general y visual de las utilidades de cada nivel de atributo. Los colores más cálidos (verde/amarillo) indican mayor preferencia (utilidad positiva), mientras que los colores fríos (rojo) indican menor preferencia (utilidad negativa). Esto permite una rápida identificación de los niveles más y menos valorados dentro de cada atributo.
# Datos de utilidades directamente de la salida proporcionada
utilidades_data <- data.frame(
Nivel = c("LCD", "OLED", "AMOLED", "24_horas", "48_horas", "72_horas",
"Basicas", "Avanzadas", "Pro", "300", "500", "700"),
Estimacion = c(-1.4254, -0.1742, 1.5996, -2.4444, 0.0663, 2.3782,
-1.4313, -0.1718, 1.6032, 2.8603, -0.1432, -2.7171),
Atributo = c(rep("Pantalla", 3), rep("Batería", 3), rep("Funcionalidades", 3), rep("Precio", 3))
)
# Asegurar el orden de los niveles para una visualización coherente
utilidades_data$Nivel <- factor(utilidades_data$Nivel, levels = c(
"LCD", "OLED", "AMOLED",
"24_horas", "48_horas", "72_horas",
"Basicas", "Avanzadas", "Pro",
"300", "500", "700"
))
# Heatmap interactivo
plot_ly(utilidades_data,
x = ~Atributo, # Eje X: Atributos
y = ~Nivel, # Eje Y: Niveles de los atributos
z = ~Estimacion, # Valor a mapear con el color (la estimación de utilidad)
type = "heatmap",
colorscale = "RdYlGn", # Escala de color: Rojo (negativo) - Amarillo (neutro) - Verde (positivo)
hoverinfo = "text", # Mostrar información al pasar el cursor
text = ~paste("Atributo:", Atributo,
"<br>Nivel:", Nivel,
"<br>Utilidad:", round(Estimacion, 2))) %>%
layout(title = "UTILIDADES PARCIALES POR NIVEL<br><sup>Valores más altos = mayor preferencia</sup>",
xaxis = list(title = ""), # Sin título para el eje X
yaxis = list(title = "", categoryorder = "array", categoryarray = levels(utilidades_data$Nivel))) # Mantener el orden definido manualmente para el eje Y
Para tener éxito, TecnoFácil debe dejar de lado las posiciones intermedias y apuntar estratégicamente a un segmento de mercado claro:
Opción 1: Apuntar al Segmento Premium (inspirado en “Competidor_Premium”).
Si buscan liderar, deben ofrecer la experiencia definitiva: Pantalla AMOLED, Batería de 72 horas, Funcionalidades Pro.
Deben aceptar que esto implicará un precio elevado (S/700 o más), pero este estudio demuestra que hay un mercado con buena cuota para ello, dispuesto a pagar por maximizar utilidades.
El marketing debe enfatizar la superioridad absoluta en rendimiento y características premium.
Opción 2: Dominar el Segmento de Valor (inspirado en “Competidor_Balance”).
Crear un producto “inteligente” que evite a toda costa los niveles de atributos más rechazados (24h de batería, precio 700, LCD/Básicas), y se enfoque en ofrecer un balance sólido.
Un perfil como Pantalla OLED / 48_horas (o mejor, 72_horas si es factible) / Funcionalidades Avanzadas / Precio S/500 (o S/300 si la rentabilidad lo permite) podría capturar una gran parte del mercado que busca valor sin grandes sacrificios.
Este producto podría tener el mayor “MaxUtility” y ser la opción por defecto para muchos compradores.
Opción 3: Competir en el Segmento Ultra-Económico (inspirado en “Competidor_Eco”).
Si la estrategia es ser el más barato, deben ir con todo a un precio de S/300.
Deben entender y aceptar que esto implicará sacrificar calidad en los demás atributos (Pantalla, Batería, Funcionalidades). Sin embargo, el estudio demuestra que el precio ultra-bajo por sí solo puede generar una cuota significativa, incluso con características muy básicas.
El marketing aquí sería netamente de precio y accesibilidad.
Urgente: Reposicionar (o eliminar) “TecnoFácil_Pro”.
Su estado actual de 0% MaxUtility es una señal de alerta. Este producto no es el favorito de nadie.
Debe ser reevaluado a la luz de las opciones anteriores: ¿puede convertirse en un premium más fuerte? ¿o un valor más atractivo? Mantenerlo como está es una estrategia de mercado con poco futuro.