Fotografía de portada — vitrina de calzado deportivo urbano.
Este informe analiza el comportamiento de las ventas de Adidas en Estados Unidos a partir de la información disponible sobre productos, regiones, ciudades, distribuidores y métodos de venta. El propósito no es solo describir la base de datos, sino identificar los patrones comerciales y financieros que explican dónde está funcionando bien el negocio y dónde hay espacio de mejora.
A lo largo del documento se revisan la distribución de las ventas, la utilidad operativa, los márgenes, el desempeño por producto y región, y las diferencias entre canales de venta. También se examinan las relaciones entre variables clave —volumen vendido, precio, ventas y rentabilidad— porque ninguna de ellas cuenta la historia completa por sí sola: un negocio puede vender mucho y ser poco rentable, o vender relativamente poco con una eficiencia sobresaliente.
El objetivo final es construir una historia analítica lineal —diagnóstico general, productos, geografía, canales, retailers, relaciones estadísticas y combinaciones estratégicas— que desemboque en hallazgos y recomendaciones accionables para la dirección de Adidas.
Nota metodológica sobre el enfoque visual: en lugar de recurrir a los gráficos que suelen dominar este tipo de ejercicios (boxplots saturados de outliers superpuestos, nubes de dispersión sin jerarquía o barras monocromáticas sin narrativa), este informe utiliza gráficos de un solo mensaje —con un color que resalta exactamente lo que el texto está afirmando— y títulos de acción que anticipan el hallazgo. La meta es que cada cifra relevante del texto “salte a la vista” en su gráfico correspondiente.
datos_raw <- read_excel("DatosCaso1.xlsx")
datos <- datos_raw %>% clean_names()
tipo_variable <- function(x) {
if (is.numeric(x)) return("Numérica")
if (is.character(x)) return("Categórica")
if (is.logical(x)) return("Lógica")
if (inherits(x, "Date")) return("Fecha")
return(class(x)[1])
}
estructura_datos <- tibble(
Variable = names(datos),
`Tipo de dato` = sapply(datos, tipo_variable),
Ejemplo = sapply(datos, function(x) as.character(x[which(!is.na(x))[1]]))
)
estructura_datos %>% tabla_ejecutiva()
| Variable | Tipo de dato | Ejemplo |
|---|---|---|
| distribuidor | Categórica | Foot Locker |
| region | Categórica | Northeast |
| estado | Categórica | New York |
| ciudad | Categórica | New York |
| producto | Categórica | Men’s Street Footwear |
| precio_unidad | Numérica | 50 |
| unidades_vendidas | Numérica | 1200 |
| ventas_total | Numérica | 60000 |
| utilidad_operativa | Numérica | 30000 |
| margen_operativo | Numérica | 0.5 |
| metodo_venta | Categórica | In-store |
La base contiene 9,648 observaciones y 11 variables, relacionadas con la ubicación geográfica, el producto, el distribuidor, el método de venta y el desempeño financiero de cada transacción. Esta cobertura permite analizar sin problemas el comportamiento comercial de Adidas desde varios ángulos complementarios.
Antes de interpretar cualquier patrón, se revisó la completitud y consistencia interna de la información, para asegurar que los hallazgos posteriores no estén contaminados por errores evidentes de calidad.
n_filas <- nrow(datos); n_cols <- ncol(datos)
vars_numericas <- datos %>% select(where(is.numeric)) %>% names()
vars_categoricas <- datos %>% select(where(~ !is.numeric(.))) %>% names()
n_na <- sum(colSums(is.na(datos)))
n_duplicados <- sum(duplicated(datos))
chk_ventas <- datos %>%
summarise(max_diferencia = max(abs(ventas_total - precio_unidad * unidades_vendidas), na.rm = TRUE)) %>%
pull(max_diferencia)
chk_margen <- datos %>% filter(ventas_total > 0) %>%
summarise(max_diferencia = max(abs(margen_operativo - utilidad_operativa / ventas_total), na.rm = TRUE)) %>%
pull(max_diferencia)
calidad_resumen <- tibble(
Indicador = c("Registros", "Variables", "Numéricas", "Categóricas",
"Valores faltantes", "Filas duplicadas exactas",
"Diferencia máx.: ventas vs. precio × unidades",
"Diferencia máx.: margen vs. utilidad / ventas"),
Valor = c(comma(n_filas), n_cols, length(vars_numericas), length(vars_categoricas),
n_na, n_duplicados, round(chk_ventas, 4), round(chk_margen, 6))
)
calidad_resumen %>% tabla_ejecutiva()
| Indicador | Valor |
|---|---|
| Registros | 9,648 |
| Variables | 11 |
| Numéricas | 5 |
| Categóricas | 6 |
| Valores faltantes | 0 |
| Filas duplicadas exactas | 262 |
| Diferencia máx.: ventas vs. precio × unidades | 0 |
| Diferencia máx.: margen vs. utilidad / ventas | 0 |
La base cuenta con 9,648 registros y 11 variables, sin valores
faltantes, y con una estructura financiera internamente consistente: la
diferencia máxima entre ventas_total y
precio_unidad × unidades_vendidas es prácticamente cero
(0), al igual que entre margen_operativo y
utilidad_operativa / ventas_total (0).
Se identificaron 262 filas exactamente duplicadas. Como la base no incluye un identificador único de transacción ni una fecha, no es posible determinar si corresponden a errores de captura o a operaciones comerciales distintas con características idénticas; bajo un criterio conservador, se mantienen en el análisis. Por la misma razón, tampoco es posible evaluar estacionalidad ni tasas de crecimiento en este ejercicio.
El primer nivel del análisis dimensiona el tamaño del negocio y sus indicadores comerciales y financieros más generales.
ventas_totales <- sum(datos$ventas_total)
unidades_totales <- sum(datos$unidades_vendidas)
utilidad_total <- sum(datos$utilidad_operativa)
precio_prom <- mean(datos$precio_unidad)
margen_prom <- mean(datos$margen_operativo)
margen_pond <- utilidad_total / ventas_totales
venta_prom_tx <- mean(datos$ventas_total)
venta_mediana_tx <- median(datos$ventas_total)
cat('<div class="kpi-grid">')
cat(kpi_card(dollar(ventas_totales, scale = 1e-6, suffix = "M", accuracy = 0.1), "Ventas totales"))
cat(kpi_card(comma(unidades_totales), "Unidades vendidas"))
cat(kpi_card(dollar(utilidad_total, scale = 1e-6, suffix = "M", accuracy = 0.1), "Utilidad operativa"))
cat(kpi_card(dollar(precio_prom, accuracy = 0.01), "Precio promedio / unidad"))
cat(kpi_card(percent(margen_prom, accuracy = 0.1), "Margen promedio simple"))
cat(kpi_card(percent(margen_pond, accuracy = 0.1), "Margen ponderado (real)"))
cat('</div>')
En términos generales, Adidas registra $120,166,650 en ventas, con un total de 2,478,861 unidades vendidas y una utilidad operativa de $47,224,968. El precio promedio por unidad es de $45.22.
Margen simple vs. margen ponderado —por qué la diferencia importa: el margen promedio simple (42.3%) da el mismo peso a cada transacción, sin importar su tamaño; una venta pequeña con margen alto pesa igual que una venta grande con margen bajo. El margen ponderado (39.3%), calculado como utilidad total sobre ventas totales, refleja la rentabilidad real del negocio agregado. Como el margen ponderado es menor que el simple, esto muestra que algunas de las transacciones de mayor valor se realizan con márgenes porcentuales más bajos: un mayor nivel de ventas no necesariamente implica una mayor rentabilidad proporcional. Para evaluar la eficiencia global de Adidas, este informe prioriza siempre el margen ponderado.
Además, las ventas presentan una variación importante entre transacciones: mientras la venta promedio por transacción es de $12,455, la mediana es de $7,804. Esto indica que existen operaciones de alto valor que elevan el promedio general por encima del “caso típico”.
Para Adidas, estos resultados muestran que el crecimiento del negocio no depende tanto de subir los precios, sino de vender más unidades y lograr operaciones de mayor valor. Por eso conviene revisar, en las siguientes secciones, qué productos, canales y distribuidores están impulsando esas ventas y cuáles logran hacerlo manteniendo buenos márgenes.
Men’s Street Footwear: la categoría ancla del portafolio.
resumen_producto <- datos %>%
group_by(producto) %>%
summarise(ventas = sum(ventas_total), unidades = sum(unidades_vendidas),
utilidad = sum(utilidad_operativa), .groups = "drop") %>%
mutate(participacion = ventas / sum(ventas), margen_ponderado = utilidad / ventas) %>%
arrange(desc(ventas))
resumen_producto %>%
mutate(ventas = dollar(ventas, big.mark = ","), unidades = comma(unidades),
utilidad = dollar(utilidad, big.mark = ","),
participacion = percent(participacion, accuracy = 0.1),
margen_ponderado = percent(margen_ponderado, accuracy = 0.1)) %>%
rename(Producto = producto, Ventas = ventas, Unidades = unidades, Utilidad = utilidad,
`% Ventas` = participacion, `Margen Ponderado` = margen_ponderado) %>%
tabla_ejecutiva()
| Producto | Ventas | Unidades | Utilidad | % Ventas | Margen Ponderado |
|---|---|---|---|---|---|
| Men’s Street Footwear | $27,680,769 | 593,320 | $11,629,046 | 23.0% | 42.0% |
| Women’s Apparel | $23,870,985 | 433,827 | $9,685,221 | 19.9% | 40.6% |
| Men’s Athletic Footwear | $20,577,180 | 435,526 | $7,437,457 | 17.1% | 36.1% |
| Women’s Street Footwear | $17,201,563 | 392,269 | $6,494,017 | 14.3% | 37.8% |
| Men’s Apparel | $16,520,632 | 306,683 | $6,381,405 | 13.7% | 38.6% |
| Women’s Athletic Footwear | $14,315,521 | 317,236 | $5,597,822 | 11.9% | 39.1% |
lider_producto <- resumen_producto$producto[1]
peor_margen_producto <- resumen_producto %>% arrange(margen_ponderado) %>% slice(1) %>% pull(producto)
resumen_producto <- resumen_producto %>%
mutate(color_dot = case_when(
producto == lider_producto ~ "líder en ventas",
producto == peor_margen_producto ~ "menor margen",
TRUE ~ "otros"
))
ggplot(resumen_producto, aes(x = margen_ponderado, y = reorder(producto, margen_ponderado))) +
geom_segment(aes(x = 0, xend = margen_ponderado, yend = producto), color = col_neutro, linewidth = 1) +
geom_point(aes(size = ventas, color = color_dot)) +
geom_text(aes(label = percent(margen_ponderado, accuracy = 0.1)), hjust = -0.5, size = 3.6, color = "#1A1A1A") +
scale_color_manual(values = c("líder en ventas" = col_acento, "menor margen" = col_alerta, "otros" = col_neutro)) +
scale_size_continuous(range = c(4, 11)) +
scale_x_continuous(labels = percent, limits = c(0, max(resumen_producto$margen_ponderado) * 1.25)) +
labs(title = paste0(lider_producto, " lidera en ventas, pero no es el más rentable"),
subtitle = "Margen operativo ponderado por producto · tamaño del punto = ventas totales",
x = "Margen operativo ponderado", y = NULL) +
theme(axis.text.y = element_text(size = 10.5, color = "#1A1A1A"))
Por qué este gráfico y no un boxplot o una barra simple: un dot plot ordenado por margen, con el tamaño del punto codificando ventas y el color reservado solo a los dos casos que el texto discute, permite leer en un segundo tanto la escala como la eficiencia de cada producto, sin la sobrecarga visual de un boxplot con outliers apilados.
Interpretación: el análisis por producto muestra que Men’s Street Footwear es la categoría más fuerte del portafolio, con ventas por $27,680,769 (23.0% de participación) y una utilidad operativa de $11,629,046. Además, presenta un margen ponderado de 42.0%, por lo que no solo lidera en volumen, también lo hace en rentabilidad.
En segundo lugar se encuentra Women’s Apparel, con $23,870,985 en ventas y un margen de 40.6%. Esta categoría también muestra un buen equilibrio entre ventas y rentabilidad, consolidándose como otro producto clave del portafolio.
Por otro lado, Men’s Athletic Footwear genera un nivel relevante de ventas ($20,577,180) pero registra el margen ponderado más bajo, con 36.1%. Esto indica que esta categoría tiene capacidad para mover volumen, aunque una porción menor de esas ventas se convierte en utilidad; conviene revisar precios, descuentos o costos para entender qué limita su rentabilidad.
Las demás categorías tienen una participación más equilibrada, entre 11.9% y 19.9%, lo que le da a Adidas un portafolio razonablemente balanceado, aunque con diferencias de eficiencia entre categorías.
Para Adidas, lo más conveniente sería seguir fortaleciendo Men’s Street Footwear y Women’s Apparel, que muestran buen desempeño tanto en ventas como en margen, y revisar con más detalle Men’s Athletic Footwear, donde el volumen es alto pero la rentabilidad es menor. La idea no es impulsar todas las categorías de la misma manera, sino enfocar los esfuerzos donde realmente se generan mejores resultados.
Cinco regiones, cinco realidades distintas de rentabilidad.
resumen_region <- datos %>%
group_by(region) %>%
summarise(ventas = sum(ventas_total), unidades = sum(unidades_vendidas),
utilidad = sum(utilidad_operativa), .groups = "drop") %>%
mutate(participacion = ventas / sum(ventas), margen_ponderado = utilidad / ventas) %>%
arrange(desc(ventas))
resumen_region %>%
mutate(ventas = dollar(ventas, big.mark = ","), unidades = comma(unidades),
utilidad = dollar(utilidad, big.mark = ","),
participacion = percent(participacion, accuracy = 0.1),
margen_ponderado = percent(margen_ponderado, accuracy = 0.1)) %>%
rename(Región = region, Ventas = ventas, Unidades = unidades, Utilidad = utilidad,
`% Ventas` = participacion, `Margen Ponderado` = margen_ponderado) %>%
tabla_ejecutiva()
| Región | Ventas | Unidades | Utilidad | % Ventas | Margen Ponderado |
|---|---|---|---|---|---|
| West | $36,436,157 | 686,985 | $13,017,584 | 30.3% | 35.7% |
| Northeast | $25,078,267 | 501,279 | $9,732,774 | 20.9% | 38.8% |
| Southeast | $21,374,436 | 407,000 | $8,393,059 | 17.8% | 39.3% |
| South | $20,603,356 | 492,260 | $9,221,605 | 17.1% | 44.8% |
| Midwest | $16,674,434 | 391,337 | $6,859,945 | 13.9% | 41.1% |
region_lider_ventas <- resumen_region$region[1]
region_lider_margen <- resumen_region %>% arrange(desc(margen_ponderado)) %>% slice(1) %>% pull(region)
resumen_region <- resumen_region %>%
mutate(color_reg = case_when(
region == region_lider_ventas ~ "líder en ventas (menor margen)",
region == region_lider_margen ~ "líder en margen",
TRUE ~ "otras"
))
ggplot(resumen_region, aes(x = margen_ponderado, y = reorder(region, margen_ponderado))) +
geom_vline(xintercept = margen_pond, linetype = "dashed", color = col_neutro2, linewidth = 0.5) +
geom_segment(aes(x = 0, xend = margen_ponderado, yend = region), color = col_neutro, linewidth = 1) +
geom_point(aes(color = color_reg, size = ventas)) +
geom_text(aes(label = percent(margen_ponderado, accuracy = 0.1)), hjust = -0.5, size = 3.6) +
scale_color_manual(values = c("líder en ventas (menor margen)" = col_alerta,
"líder en margen" = col_exito, "otras" = col_neutro)) +
scale_size_continuous(range = c(4, 11)) +
scale_x_continuous(labels = percent, limits = c(0, max(resumen_region$margen_ponderado) * 1.3)) +
labs(title = paste0(region_lider_ventas, " vende más, pero ", region_lider_margen, " es más rentable"),
subtitle = "Margen operativo ponderado por región · línea punteada = margen global de Adidas",
x = "Margen operativo ponderado", y = NULL)
Interpretación: el análisis regional muestra diferencias importantes entre volumen de ventas y rentabilidad. La región West concentra la mayor parte de las ventas ($36,436,157, equivalentes al 30.3% del total) y también genera la mayor utilidad operativa. Sin embargo, su margen ponderado es de 35.7%, el más bajo entre las cinco regiones.
Por otro lado, la región South alcanza el margen ponderado más alto, con 44.8%, aunque vende menos que West. Esto significa que, aunque se vende menos, se logra obtener una mayor eficiencia por cada dólar vendido.
Estos resultados muestran que las regiones con mayores ventas no son necesariamente las más eficientes en términos de margen. Para Adidas, sería conveniente mantener la fortaleza comercial de West, pero revisar qué factores están reduciendo su rentabilidad —mezcla de producto, condiciones de descuento por retailer o estructura de costos regional—. También vale la pena analizar qué está funcionando bien en South y si esas prácticas pueden replicarse en otras regiones.
resumen_ciudad <- datos %>%
group_by(ciudad) %>%
summarise(ventas = sum(ventas_total), utilidad = sum(utilidad_operativa), .groups = "drop") %>%
mutate(participacion = ventas / sum(ventas))
top10_ventas_ciudad <- resumen_ciudad %>% arrange(desc(ventas)) %>% slice(1:10)
top10_ventas_ciudad %>%
mutate(ventas = dollar(ventas, big.mark = ","), utilidad = dollar(utilidad, big.mark = ","),
participacion = percent(participacion, accuracy = 0.1)) %>%
rename(Ciudad = ciudad, Ventas = ventas, Utilidad = utilidad, `% Ventas` = participacion) %>%
tabla_ejecutiva()
| Ciudad | Ventas | Utilidad | % Ventas |
|---|---|---|---|
| New York | $5,676,160 | $2,114,664 | 4.7% |
| San Francisco | $4,929,220 | $1,581,993 | 4.1% |
| Charleston | $4,904,272 | $2,024,086 | 4.1% |
| Portland | $4,176,777 | $1,575,861 | 3.5% |
| Orlando | $3,946,476 | $1,342,207 | 3.3% |
| Miami | $3,874,113 | $1,579,388 | 3.2% |
| Los Angeles | $3,651,288 | $1,378,158 | 3.0% |
| Houston | $3,629,632 | $1,494,772 | 3.0% |
| New Orleans | $3,377,031 | $1,424,390 | 2.8% |
| Seattle | $3,222,093 | $927,709 | 2.7% |
Hallazgo geográfico a nivel de ciudad: New York lidera con $5,676,160 en ventas, seguida de cerca por las siguientes ciudades del Top 10. Sin embargo, New York representa solo 4.7% de las ventas totales, lo que indica que el negocio está distribuido entre muchos mercados y que ninguna ciudad individual concentra un riesgo de concentración geográfica relevante (todas por debajo del 5% del total). En conjunto, la oportunidad está en buscar un mejor equilibrio entre volumen y rentabilidad: fortalecer las plazas que ya generan ventas importantes, sin dejar de prestar atención a aquellas que, con menor volumen, logran mejores márgenes.
Online: mayor volumen y mayor margen al mismo tiempo.
resumen_metodo <- datos %>%
group_by(metodo_venta) %>%
summarise(ventas = sum(ventas_total), unidades = sum(unidades_vendidas),
utilidad = sum(utilidad_operativa), .groups = "drop") %>%
mutate(precio_prom = ventas / unidades,
participacion = ventas / sum(ventas), margen_ponderado = utilidad / ventas) %>%
arrange(desc(ventas))
resumen_metodo %>%
mutate(ventas = dollar(ventas, big.mark = ","), unidades = comma(unidades),
utilidad = dollar(utilidad, big.mark = ","), precio_prom = dollar(precio_prom, accuracy = 0.01),
participacion = percent(participacion, accuracy = 0.1),
margen_ponderado = percent(margen_ponderado, accuracy = 0.1)) %>%
select(metodo_venta, ventas, participacion, unidades, utilidad, margen_ponderado, precio_prom) %>%
rename(`Método de venta` = metodo_venta, Ventas = ventas, `% Ventas` = participacion, Unidades = unidades,
Utilidad = utilidad, `Margen Ponderado` = margen_ponderado, `Precio Promedio` = precio_prom) %>%
tabla_ejecutiva()
| Método de venta | Ventas | % Ventas | Unidades | Utilidad | Margen Ponderado | Precio Promedio |
|---|---|---|---|---|---|---|
| Online | $44,965,657 | 37.4% | 939,093 | $19,552,538 | 43.5% | $47.88 |
| Outlet | $39,536,618 | 32.9% | 849,778 | $14,913,301 | 37.7% | $46.53 |
| In-store | $35,664,375 | 29.7% | 689,990 | $12,759,129 | 35.8% | $51.69 |
canal_lider <- resumen_metodo$metodo_venta[1]
canal_peor <- resumen_metodo %>% arrange(margen_ponderado) %>% slice(1) %>% pull(metodo_venta)
resumen_metodo <- resumen_metodo %>%
mutate(color_canal = case_when(metodo_venta == canal_lider ~ "Online: líder en venta y margen",
metodo_venta == canal_peor ~ "In-store: menor venta y margen",
TRUE ~ "otro"))
ggplot(resumen_metodo, aes(x = reorder(metodo_venta, ventas), y = ventas, fill = color_canal)) +
geom_col(width = 0.6) +
geom_text(aes(label = paste0(dollar(ventas, scale = 1e-6, suffix = "M", accuracy = 0.1), " · ",
percent(margen_ponderado, accuracy = 0.1), " margen")),
hjust = -0.05, size = 3.7, color = "#1A1A1A") +
coord_flip(clip = "off") +
scale_fill_manual(values = c("Online: líder en venta y margen" = col_acento,
"In-store: menor venta y margen" = col_alerta, "otro" = col_neutro)) +
scale_y_continuous(labels = label_dollar(scale = 1e-6, suffix = "M"), expand = expansion(mult = c(0, 0.35))) +
labs(title = "Online domina en ventas y también en rentabilidad",
subtitle = "Ventas por método de venta, con margen ponderado etiquetado",
x = NULL, y = "Ventas (millones USD)") +
theme(plot.margin = margin(5, 60, 5, 5))
Interpretación: Online es el canal que más vende ($44,965,657, 37.4% del total) y el que presenta el margen ponderado más alto (43.5%), seguido por Outlet y luego In-store, que es simultáneamente el canal de menor venta y menor margen ponderado (35.8%). Esto resulta especialmente llamativo porque In-store es, además, el canal con el precio promedio por unidad más alto ($51.69): tener el precio promedio más alto pero el margen más bajo muestra que vender a un mayor precio no garantiza una mejor rentabilidad.
Respuesta clave: Online domina simultáneamente en tamaño y rentabilidad, lo que lo convierte en el canal estratégicamente más sólido para escalar el negocio. In-store, en cambio, combina el menor volumen con el menor margen y con el precio promedio más alto, lo que sugiere una estructura de costos de operación física que reduce su eficiencia relativa; este canal amerita una revisión más profunda de costos, mezcla de producto vendido en tienda y estrategia de promociones.
resumen_retailer <- datos %>%
group_by(distribuidor) %>%
summarise(ventas = sum(ventas_total), unidades = sum(unidades_vendidas),
utilidad = sum(utilidad_operativa), .groups = "drop") %>%
mutate(participacion = ventas / sum(ventas), margen_ponderado = utilidad / ventas) %>%
arrange(desc(ventas))
top3_participacion <- resumen_retailer %>% slice(1:3) %>% summarise(p = sum(participacion)) %>% pull(p)
top3_nombres <- paste(resumen_retailer$distribuidor[1:3], collapse = ", ")
resumen_retailer %>%
mutate(ventas = dollar(ventas, big.mark = ","), unidades = comma(unidades),
utilidad = dollar(utilidad, big.mark = ","),
participacion = percent(participacion, accuracy = 0.1),
margen_ponderado = percent(margen_ponderado, accuracy = 0.1)) %>%
rename(Retailer = distribuidor, Ventas = ventas, Unidades = unidades, Utilidad = utilidad,
`% Ventas` = participacion, `Margen Ponderado` = margen_ponderado) %>%
tabla_ejecutiva()
| Retailer | Ventas | Unidades | Utilidad | % Ventas | Margen Ponderado |
|---|---|---|---|---|---|
| West Gear | $32,409,558 | 625,262 | $12,196,891 | 27.0% | 37.6% |
| Foot Locker | $29,024,945 | 604,369 | $11,317,027 | 24.2% | 39.0% |
| Sports Direct | $24,616,622 | 557,640 | $10,641,609 | 20.5% | 43.2% |
| Kohl’s | $13,512,453 | 287,375 | $5,182,260 | 11.2% | 38.4% |
| Walmart | $10,506,085 | 206,225 | $3,902,749 | 8.7% | 37.1% |
| Amazon | $10,096,987 | 197,990 | $3,984,432 | 8.4% | 39.5% |
mejor_margen_retailer <- resumen_retailer %>% arrange(desc(margen_ponderado)) %>% slice(1) %>% pull(distribuidor)
peor_margen_retailer <- resumen_retailer %>% arrange(margen_ponderado) %>% slice(1) %>% pull(distribuidor)
resumen_retailer <- resumen_retailer %>%
mutate(grupo = ifelse(distribuidor %in% resumen_retailer$distribuidor[1:3], "Top 3 (71,6% de las ventas)", "resto"),
color_ret = case_when(distribuidor == mejor_margen_retailer ~ "mejor margen",
distribuidor == peor_margen_retailer ~ "menor margen",
TRUE ~ grupo))
ggplot(resumen_retailer, aes(x = reorder(distribuidor, ventas), y = ventas, fill = color_ret)) +
geom_col(width = 0.65) +
geom_text(aes(label = percent(margen_ponderado, accuracy = 0.1)), hjust = -0.15, size = 3.6) +
coord_flip(clip = "off") +
scale_fill_manual(values = c("mejor margen" = col_exito, "menor margen" = col_alerta,
"Top 3 (71,6% de las ventas)" = col_acento, "resto" = col_neutro)) +
scale_y_continuous(labels = label_dollar(scale = 1e-6, suffix = "M"), expand = expansion(mult = c(0, 0.15))) +
labs(title = paste0("Tres distribuidores concentran ", percent(top3_participacion, accuracy = 0.1), " de las ventas"),
subtitle = "Ventas por retailer · etiqueta = margen operativo ponderado",
x = NULL, y = "Ventas (millones USD)") +
theme(plot.margin = margin(5, 40, 5, 5))
Interpretación: los tres principales retailers (West Gear, Foot Locker, Sports Direct) concentran en conjunto 71.6% de las ventas totales, lo que evidencia una dependencia comercial relevante en pocos socios de distribución. Sin embargo, el distribuidor que más vende no es el que obtiene el mejor margen: Sports Direct presenta el margen ponderado más alto (43.2%) sin ser el de mayor volumen, mientras que Walmart tiene el margen más bajo (37.1%). Esto muestra que no todos los distribuidores convierten sus ventas en utilidad de la misma forma, incluso cuando manejan volúmenes importantes.
Para Adidas, sería conveniente mantener una relación sólida con los distribuidores que hoy concentran la mayor parte de las ventas, pero también revisar qué condiciones hacen más rentable la relación con Sports Direct. Esa comparación puede ayudar a mejorar acuerdos comerciales y a reducir la dependencia de unos pocos socios. La alta concentración en el Top 3 implica, además, un riesgo comercial que Adidas debería monitorear activamente.
rango_producto <- datos %>%
group_by(producto) %>%
summarise(mediana = median(ventas_total), p90 = quantile(ventas_total, 0.90),
maximo = max(ventas_total), .groups = "drop") %>%
arrange(desc(mediana))
producto_mas_disperso <- datos %>% group_by(producto) %>% summarise(de = sd(ventas_total)) %>%
arrange(desc(de)) %>% slice(1) %>% pull(producto)
ggplot(rango_producto, aes(y = reorder(producto, mediana))) +
geom_segment(aes(x = mediana, xend = p90, yend = producto), color = col_neutro, linewidth = 3.2, lineend = "round") +
geom_point(aes(x = mediana, color = producto == producto_mas_disperso), size = 4.2) +
geom_text(aes(x = mediana, label = dollar(mediana, accuracy = 1, big.mark=",")), vjust = -1.1, size = 3.4) +
scale_color_manual(values = c("TRUE" = col_alerta, "FALSE" = col_acento)) +
scale_x_continuous(labels = label_dollar(scale = 1e-3, suffix = "K")) +
labs(title = paste0(producto_mas_disperso, " combina el ticket típico más alto y la mayor variabilidad"),
subtitle = "Punto = venta mediana por transacción · barra = hasta el percentil 90 (grandes pedidos)",
x = "Ventas por transacción (miles USD)", y = NULL)
Interpretación: el tamaño de las transacciones cambia de forma importante entre productos. Men’s Street Footwear destaca por tener el mayor valor típico de venta y una alta variabilidad, lo que indica que combina operaciones regulares con pedidos de gran tamaño. Categorías como Women’s Athletic Footwear y Men’s Apparel se concentran en tickets relativamente menores. Los valores extremos no necesariamente representan errores: evidencian que una parte relevante del negocio proviene de pedidos puntuales de alto valor, propios de un negocio que atiende tanto tiendas pequeñas como grandes cadenas retail. Para Adidas, esto implica que no todas las categorías deberían gestionarse con la misma estrategia comercial: las líneas con mayor dispersión requieren especial atención a grandes cuentas, inventario y disponibilidad de producto. Vale la pena identificar qué distribuidores o mercados generan estas transacciones puntuales y evaluar si ese comportamiento puede replicarse.
rango_canal <- datos %>%
group_by(metodo_venta) %>%
summarise(mediana = median(margen_operativo), p10 = quantile(margen_operativo, 0.10),
p90 = quantile(margen_operativo, 0.90), .groups = "drop") %>%
arrange(desc(mediana))
ggplot(rango_canal, aes(y = reorder(metodo_venta, mediana))) +
geom_segment(aes(x = p10, xend = p90, yend = metodo_venta), color = col_neutro, linewidth = 3.2, lineend = "round") +
geom_point(aes(x = mediana, color = metodo_venta == "Online"), size = 4.5) +
geom_text(aes(x = mediana, label = percent(mediana, accuracy = 1)), vjust = -1.2, size = 3.6) +
scale_color_manual(values = c("TRUE" = col_acento, "FALSE" = col_neutro2)) +
scale_x_continuous(labels = percent) +
labs(title = "Online es estructuralmente más rentable, no solo por casos excepcionales",
subtitle = "Margen operativo: mediana (punto) y rango del 10% al 90% de las transacciones, por canal",
x = "Margen operativo", y = NULL)
Interpretación: el canal Online presenta una rentabilidad estructuralmente superior, con un margen operativo típico (mediana) cercano al 47%, frente a aproximadamente 40% en Outlet y 35% en In-store. La diferencia no depende únicamente de unos pocos valores extremos: al observar el rango típico de transacciones (del percentil 10 al 90), la mayor parte de las ventas Online se concentra en niveles de margen superiores a los otros canales. Esto sugiere que el canal digital genera más utilidad por cada dólar vendido y constituye una palanca importante para mejorar la rentabilidad global de Adidas —no significa que deba abandonarse la tienda física, sino que existe una oportunidad clara de trasladar crecimiento hacia Online y de analizar qué elementos de su estructura de costos permiten obtener mayores márgenes.
No se eliminan los valores atípicos identificados en ninguna de las dos distribuciones: al no existir un identificador único de transacción que permita confirmarlos como errores, se interpretan como operaciones comerciales de mayor tamaño, plausibles en un negocio que vende tanto a tiendas pequeñas como a grandes cadenas retail.
vars_corr <- datos %>% select(precio_unidad, unidades_vendidas, ventas_total, utilidad_operativa, margen_operativo)
matriz_corr <- cor(vars_corr, method = "pearson")
nombres_es <- c("Precio/unidad", "Unidades vendidas", "Ventas totales", "Utilidad operativa", "Margen operativo")
rownames(matriz_corr) <- nombres_es; colnames(matriz_corr) <- nombres_es
color_por_valor <- function(v) {
case_when(
v >= 1 ~ "background-color:#E5E8EC; color:#1A1A1A; font-weight:600;",
v >= 0.6 ~ paste0("background-color:", col_exito, "; color:white; font-weight:600;"),
v >= 0.2 ~ "background-color:#CFE8E6; color:#1A1A1A;",
v >= -0.2 ~ "background-color:#F0F1F3; color:#1A1A1A;",
TRUE ~ paste0("background-color:", col_alerta, "; color:white; font-weight:600;")
)
}
tabla_corr <- matriz_corr %>%
round(2) %>%
as.data.frame() %>%
rownames_to_column("Variable")
for (col_j in nombres_es) {
vals <- tabla_corr[[col_j]]
tabla_corr[[col_j]] <- sprintf('<span style="%s padding:3px 8px; border-radius:4px;">%s</span>',
color_por_valor(vals), format(vals, nsmall = 2))
}
tabla_corr %>%
kable(format = "html", escape = FALSE) %>%
kable_styling(bootstrap_options = c("condensed", "responsive"), full_width = TRUE, font_size = 13)
| Variable | Precio/unidad | Unidades vendidas | Ventas totales | Utilidad operativa | Margen operativo |
|---|---|---|---|---|---|
| Precio/unidad | 1.00 | 0.27 | 0.54 | 0.50 | -0.14 |
| Unidades vendidas | 0.27 | 1.00 | 0.92 | 0.87 | -0.31 |
| Ventas totales | 0.54 | 0.92 | 1.00 | 0.94 | -0.30 |
| Utilidad operativa | 0.50 | 0.87 | 0.94 | 1.00 | -0.05 |
| Margen operativo | -0.14 | -0.31 | -0.30 | -0.05 | 1.00 |
r_ventas_utilidad <- round(matriz_corr["Ventas totales","Utilidad operativa"], 2)
ggplot(datos, aes(x = ventas_total, y = utilidad_operativa)) +
geom_point(alpha = 0.12, color = col_acento, size = 1.4) +
geom_smooth(method = "lm", se = FALSE, color = col_alerta, linewidth = 1.1) +
scale_x_continuous(labels = label_dollar(scale = 1e-3, suffix = "K")) +
scale_y_continuous(labels = label_dollar(scale = 1e-3, suffix = "K")) +
labs(title = paste0("Las ventas explican la utilidad casi punto por punto (r = ", r_ventas_utilidad, ")"),
subtitle = "Cada punto es una transacción · línea = tendencia lineal",
x = "Ventas totales (miles USD)", y = "Utilidad operativa (miles USD)")
Interpretación: las ventas totales y la utilidad operativa presentan una relación positiva muy fuerte (r = 0.94). En términos prácticos, las transacciones de mayor valor tienden a generar también mayores utilidades. Además, las unidades vendidas están fuertemente relacionadas tanto con las ventas (r = 0.92) como con la utilidad (r = 0.87), lo que evidencia que el volumen comercial es uno de los principales motores del resultado financiero.
r_precio_unidades <- round(matriz_corr["Precio/unidad","Unidades vendidas"], 2)
ggplot(datos, aes(x = precio_unidad, y = unidades_vendidas)) +
geom_point(alpha = 0.12, color = col_neutro2, size = 1.4) +
geom_smooth(method = "lm", se = FALSE, color = col_acento, linewidth = 1.1) +
scale_y_continuous(labels = comma) +
scale_x_continuous(labels = dollar) +
labs(title = paste0("El precio casi no explica cuánto se vende (r = ", r_precio_unidades, ")"),
subtitle = "Para un mismo nivel de precio conviven transacciones muy pequeñas y muy grandes",
x = "Precio por unidad", y = "Unidades vendidas")
Interpretación: el precio por unidad presenta una relación positiva pero débil con las unidades vendidas (r = 0.27). Esto indica que, dentro de la base analizada, los productos de mayor precio no muestran necesariamente menores volúmenes de venta, pero la relación es demasiado débil como para concluir que el precio por sí solo explica el comportamiento de la demanda. La amplia dispersión de unidades vendidas para un mismo nivel de precio sugiere que factores como el tipo de producto, el retailer, el canal o el mercado tienen una influencia más relevante sobre el volumen vendido que el precio en sí mismo.
Respecto al margen, el margen operativo presenta una relación muy débil con la utilidad (r = -0.05) y negativa con las ventas (r = -0.3) y con las unidades vendidas (r = -0.31). En otras palabras, vender más genera más utilidad en dólares, pero no necesariamente un mayor margen porcentual: una operación con margen de 50% no necesariamente genera más dinero que una con margen de 30%, porque lo que mueve la utilidad total es, sobre todo, el tamaño de la operación. Esto sugiere que Adidas debería gestionar dos palancas por separado: cómo crecer en volumen y ventas, y cómo proteger la rentabilidad porcentual de ese crecimiento.
Es importante aclarar que estas relaciones son asociaciones estadísticas observadas en los datos, no relaciones de causalidad: no puede afirmarse que vender más unidades “cause” un menor margen, solo que ambas variables están correlacionadas en este conjunto de transacciones.
combo_prod_region <- datos %>%
group_by(producto, region) %>%
summarise(ventas = sum(ventas_total), unidades = sum(unidades_vendidas),
utilidad = sum(utilidad_operativa), .groups = "drop") %>%
mutate(margen_ponderado = utilidad / ventas) %>%
arrange(desc(ventas))
combo_top_utilidad <- combo_prod_region %>% arrange(desc(utilidad)) %>% slice(1)
combo_prod_region %>%
slice(1:10) %>%
mutate(ventas = dollar(ventas, big.mark = ","), unidades = comma(unidades),
utilidad = dollar(utilidad, big.mark = ","), margen_ponderado = percent(margen_ponderado, accuracy = 0.1)) %>%
rename(Producto = producto, Región = region, Ventas = ventas, Unidades = unidades,
Utilidad = utilidad, `Margen Ponderado` = margen_ponderado) %>%
tabla_ejecutiva()
| Producto | Región | Ventas | Unidades | Utilidad | Margen Ponderado |
|---|---|---|---|---|---|
| Men’s Street Footwear | West | $7,389,988 | 150,795 | $2,907,503 | 39.3% |
| Women’s Apparel | West | $7,038,046 | 116,765 | $2,096,258 | 29.8% |
| Men’s Street Footwear | Northeast | $6,841,324 | 134,252 | $3,030,663 | 44.3% |
| Men’s Athletic Footwear | West | $6,761,339 | 127,724 | $2,154,211 | 31.9% |
| Women’s Street Footwear | West | $5,748,586 | 113,705 | $2,142,439 | 37.3% |
| Women’s Apparel | Northeast | $5,045,208 | 90,048 | $1,917,008 | 38.0% |
| Men’s Apparel | West | $4,827,378 | 84,322 | $2,009,555 | 41.6% |
| Men’s Street Footwear | Midwest | $4,707,360 | 109,861 | $1,948,621 | 41.4% |
| Men’s Street Footwear | Southeast | $4,693,836 | 91,867 | $2,003,886 | 42.7% |
| Women’s Athletic Footwear | West | $4,670,820 | 93,674 | $1,707,618 | 36.6% |
combo_prod_region <- combo_prod_region %>%
mutate(destacado = case_when(
producto == combo_top_utilidad$producto & region == combo_top_utilidad$region ~ "mayor utilidad",
producto == "Women's Apparel" & region == "West" ~ "alta venta, bajo margen",
TRUE ~ "otras combinaciones"
))
ggplot(combo_prod_region, aes(x = ventas, y = margen_ponderado)) +
geom_point(data = filter(combo_prod_region, destacado == "otras combinaciones"),
color = col_neutro, size = 2.6, alpha = 0.8) +
geom_point(data = filter(combo_prod_region, destacado != "otras combinaciones"),
aes(color = destacado), size = 5) +
ggrepel::geom_text_repel(data = filter(combo_prod_region, destacado != "otras combinaciones"),
aes(label = paste0(producto, " – ", region)), size = 3.3, color = "#1A1A1A",
box.padding = 0.6, show.legend = FALSE) +
scale_color_manual(values = c("mayor utilidad" = col_exito, "alta venta, bajo margen" = col_alerta)) +
scale_x_continuous(labels = label_dollar(scale = 1e-6, suffix = "M")) +
scale_y_continuous(labels = percent) +
labs(title = "La mayor utilidad no siempre viene de la combinación que más vende",
subtitle = "Cada punto es un cruce producto × región",
x = "Ventas totales", y = "Margen operativo ponderado")
Interpretación: Adidas debería priorizar la expansión comercial de Men’s Street Footwear en Northeast, porque combina un nivel de ventas alto con la mayor utilidad del ranking ($3,030,663) y un margen ponderado de 44.3%. En paralelo, West debería mantenerse como mercado de escala, pero con una revisión específica de categorías como Women’s Apparel en esa región, que vende un volumen relevante pero opera con un margen ponderado considerablemente más bajo. La recomendación es asignar inventario, presupuesto promocional y esfuerzo comercial de forma diferenciada por combinación producto-región, priorizando donde Adidas ya demuestra mejor desempeño económico. La oportunidad no está en vender más de todo en todas partes, sino en invertir más donde cada producto demuestra su mejor desempeño.
combo_prod_metodo <- datos %>%
group_by(producto, metodo_venta) %>%
summarise(ventas = sum(ventas_total), unidades = sum(unidades_vendidas),
utilidad = sum(utilidad_operativa), .groups = "drop") %>%
mutate(margen_ponderado = utilidad / ventas) %>%
arrange(desc(ventas))
combo_top10 <- combo_prod_metodo %>% slice(1:10)
combo_top10 %>%
mutate(ventas = dollar(ventas, big.mark = ","), unidades = comma(unidades),
utilidad = dollar(utilidad, big.mark = ","), margen_ponderado = percent(margen_ponderado, accuracy = 0.1)) %>%
rename(Producto = producto, `Método de venta` = metodo_venta, Ventas = ventas,
Unidades = unidades, Utilidad = utilidad, `Margen Ponderado` = margen_ponderado) %>%
tabla_ejecutiva()
| Producto | Método de venta | Ventas | Unidades | Utilidad | Margen Ponderado |
|---|---|---|---|---|---|
| Men’s Street Footwear | Online | $10,365,158 | 225,121 | $4,715,551 | 45.5% |
| Women’s Apparel | Online | $8,966,155 | 163,937 | $4,104,331 | 45.8% |
| Men’s Street Footwear | In-store | $8,885,200 | 176,030 | $3,486,710 | 39.2% |
| Men’s Street Footwear | Outlet | $8,430,411 | 192,169 | $3,426,785 | 40.6% |
| Women’s Apparel | Outlet | $7,879,955 | 149,390 | $2,952,377 | 37.5% |
| Men’s Athletic Footwear | Online | $7,625,859 | 163,855 | $3,143,928 | 41.2% |
| Women’s Apparel | In-store | $7,024,875 | 120,500 | $2,628,512 | 37.4% |
| Men’s Athletic Footwear | Outlet | $7,016,446 | 154,521 | $2,323,292 | 33.1% |
| Men’s Apparel | Online | $6,334,120 | 117,766 | $2,626,915 | 41.5% |
| Women’s Street Footwear | Online | $6,303,273 | 147,659 | $2,634,900 | 41.8% |
ggplot(combo_prod_metodo, aes(x = ventas, y = margen_ponderado)) +
geom_point(aes(color = metodo_venta == "Online", size = utilidad), alpha = 0.85) +
scale_color_manual(values = c("TRUE" = col_acento, "FALSE" = col_neutro)) +
scale_x_continuous(labels = label_dollar(scale = 1e-6, suffix = "M")) +
scale_y_continuous(labels = percent) +
scale_size_continuous(range = c(3, 12)) +
labs(title = "Las combinaciones con canal Online concentran venta alta y buen margen",
subtitle = "Cada punto es un cruce producto × método de venta · tamaño = utilidad generada",
x = "Ventas totales", y = "Margen operativo ponderado")
Interpretación: la combinación estratégicamente más sólida es Men’s Street Footwear vendido por el canal Online, que combina el mayor volumen de ventas del cruce ($10,365,158) con un margen ponderado de 45.5%, por encima del margen promedio global. En general, las combinaciones que incluyen el canal Online tienden a ubicarse en la parte superior derecha del gráfico (mayor venta y mayor margen simultáneamente), reforzando el hallazgo de la sección 6: Online es el canal más eficiente para escalar el negocio con buena rentabilidad.
tarjeta("Hallazgo 1 — El canal Online concentra el mayor volumen y también la mayor rentabilidad",
paste0("Online representa ", percent(resumen_metodo$participacion[1], accuracy=0.1),
" de las ventas totales y presenta el margen ponderado más alto entre los tres canales (",
percent(resumen_metodo$margen_ponderado[1], accuracy=0.1),
"). Su relevancia no proviene solo del volumen, sino de su capacidad de generar utilidad de forma eficiente, lo que lo convierte en el canal prioritario de inversión comercial."))
Online representa 37.4% de las ventas totales y presenta el margen ponderado más alto entre los tres canales (43.5%). Su relevancia no proviene solo del volumen, sino de su capacidad de generar utilidad de forma eficiente, lo que lo convierte en el canal prioritario de inversión comercial.
tarjeta("Hallazgo 2 — La región líder en ventas no es la más rentable",
paste0(region_lider_ventas, " concentra ", percent(resumen_region$participacion[resumen_region$region==region_lider_ventas], accuracy=0.1),
" de las ventas pero tiene el margen ponderado más bajo (",
percent(resumen_region$margen_ponderado[resumen_region$region==region_lider_ventas], accuracy=0.1),
"), mientras ", region_lider_margen, " logra el margen más alto (",
percent(max(resumen_region$margen_ponderado), accuracy=0.1),
") con menor participación. Existe una desalineación entre dónde se concentra el volumen y dónde se genera más eficiencia."))
West concentra 30.3% de las ventas pero tiene el margen ponderado más bajo (35.7%), mientras South logra el margen más alto (44.8%) con menor participación. Existe una desalineación entre dónde se concentra el volumen y dónde se genera más eficiencia.
tarjeta("Hallazgo 3 — Existe una dependencia comercial relevante en pocos retailers",
paste0("Los tres principales retailers (", top3_nombres, ") concentran ",
percent(top3_participacion, accuracy=0.1),
" de las ventas totales. Esta concentración representa un riesgo comercial ante eventuales cambios en la relación con estos socios."))
Los tres principales retailers (West Gear, Foot Locker, Sports Direct) concentran 71.6% de las ventas totales. Esta concentración representa un riesgo comercial ante eventuales cambios en la relación con estos socios.
tarjeta("Hallazgo 4 — El canal In-store combina el menor volumen, el menor margen y el precio promedio más alto",
paste0("In-store tiene la menor participación en ventas (",
percent(resumen_metodo$participacion[resumen_metodo$metodo_venta=="In-store"], accuracy=0.1),
") y el margen ponderado más bajo (",
percent(resumen_metodo$margen_ponderado[resumen_metodo$metodo_venta=="In-store"], accuracy=0.1),
") de los tres canales. Este canal amerita una revisión de su estructura de costos operativos y de la mezcla de producto que se vende en tienda física."))
In-store tiene la menor participación en ventas (29.7%) y el margen ponderado más bajo (35.8%) de los tres canales. Este canal amerita una revisión de su estructura de costos operativos y de la mezcla de producto que se vende en tienda física.
tarjeta("Hallazgo 5 — Las ventas totales, no el precio, son la variable más asociada con la utilidad operativa",
paste0("La correlación entre ventas y utilidad es de ", r_ventas_utilidad,
", muy superior a la correlación entre precio y utilidad (",
round(matriz_corr["Precio/unidad","Utilidad operativa"],2),
"). Las estrategias orientadas a incrementar el volumen transaccional tienen mayor potencial de impacto en la utilidad que las estrategias basadas solo en incrementos de precio."))
La correlación entre ventas y utilidad es de 0.94, muy superior a la correlación entre precio y utilidad (0.5). Las estrategias orientadas a incrementar el volumen transaccional tienen mayor potencial de impacto en la utilidad que las estrategias basadas solo en incrementos de precio.
tarjeta("Recomendación 1 — Priorizar la inversión comercial y de marketing en el canal Online",
"Online combina el mayor volumen y el mayor margen ponderado de los tres canales analizados. <br><em>Impacto esperado:</em> ventas y margen.", tipo = "recomendacion")
Online combina el mayor volumen y el mayor margen ponderado de los tres
canales analizados.
Impacto esperado: ventas y margen.
tarjeta(paste0("Recomendación 2 — Investigar las causas del menor margen ponderado en la región ", region_lider_ventas),
"Pese a ser la región líder en ventas, tiene el margen ponderado más bajo del grupo; podría deberse a mezcla de producto, condiciones de descuento por retailer o estructura de costos regional. <br><em>Impacto esperado:</em> margen y eficiencia comercial.", tipo = "recomendacion")
Pese a ser la región líder en ventas, tiene el margen ponderado más bajo
del grupo; podría deberse a mezcla de producto, condiciones de descuento
por retailer o estructura de costos regional.
Impacto
esperado: margen y eficiencia comercial.
tarjeta("Recomendación 3 — Evaluar estrategias de diversificación de retailers",
paste0("El Top 3 de retailers concentra ", percent(top3_participacion, accuracy=0.1), " de las ventas totales. <br><em>Impacto esperado:</em> reducción de riesgo comercial y mayor resiliencia en la asignación de recursos."), tipo = "recomendacion")
El Top 3 de retailers concentra 71.6% de las ventas totales.
Impacto esperado: reducción de riesgo comercial y mayor
resiliencia en la asignación de recursos.
tarjeta("Recomendación 4 — Revisar la estrategia del canal In-store",
"Es el canal con menor participación, menor margen ponderado y precio promedio más alto, lo que sugiere ineficiencias en su operación. <br><em>Impacto esperado:</em> margen y eficiencia comercial.", tipo = "recomendacion")
Es el canal con menor participación, menor margen ponderado y precio
promedio más alto, lo que sugiere ineficiencias en su operación.
Impacto esperado: margen y eficiencia comercial.
tarjeta("Recomendación 5 — Replicar las combinaciones producto-canal más eficientes en mercados o retailers con desempeño más débil",
paste0("Combinaciones como ", combo_top10$producto[1], " vía ", combo_top10$metodo_venta[1],
" logran simultáneamente alto volumen y buen margen. <br><em>Impacto esperado:</em> ventas, margen y asignación de recursos."), tipo = "recomendacion")
Combinaciones como Men’s Street Footwear vía Online logran
simultáneamente alto volumen y buen margen.
Impacto
esperado: ventas, margen y asignación de recursos.
Estas recomendaciones se presentan como líneas de acción a evaluar, no como certezas absolutas, dado que el análisis se basa en datos transaccionales agregados y correlacionales, y no en un diseño experimental.
El desempeño comercial de Adidas está explicado principalmente por el volumen de ventas: la correlación entre ventas y utilidad operativa es la más fuerte de todo el análisis, muy por encima de la del precio. Esto sugiere que el crecimiento del negocio depende más de vender más unidades a través de los canales y retailers correctos, que de ajustes de precio.
Los mejores resultados se concentran en el canal Online, en el producto Men’s Street Footwear, y en combinaciones específicas de producto y canal que logran simultáneamente escala y buen margen. Por el contrario, existen oportunidades de mejora claras en el canal In-store, en la región West (alto volumen, bajo margen) y en la elevada dependencia de pocos retailers.
De cara a un siguiente análisis, sería valioso que Adidas incorporara una dimensión temporal (fecha de transacción) para poder evaluar tendencias, estacionalidad y tasas de crecimiento, así como un identificador único de transacción que permita confirmar o descartar la naturaleza de los registros duplicados identificados en este informe.
Nota de limitaciones: este informe se basa en datos transaccionales agregados sin dimensión temporal ni identificador único de transacción, por lo que no fue posible calcular tasas de crecimiento ni confirmar con certeza la naturaleza de los registros duplicados detectados. Todas las relaciones reportadas son de tipo asociativo/correlacional y no deben interpretarse como relaciones de causa-efecto.