Introducción

Adidas es una de las marcas líderes a nivel mundial en la industria deportiva, con presencia en múltiples canales de distribución (tiendas físicas, outlets y venta en línea) y una amplia variedad de líneas de producto para hombre y mujer.

El presente informe realiza un análisis exploratorio y descriptivo de las ventas de Adidas en Estados Unidos, con el objetivo de identificar qué factores (producto, región, distribuidor y método de venta) están más asociados con la rentabilidad de la compañía, y de proponer recomendaciones basadas en evidencia para la toma de decisiones.

La base de datos contiene registros de ventas, con información sobre precio por unidad, unidades vendidas, ventas totales, utilidad operativa, margen operativo, distribuidor, región, ciudad y método de venta.

Análisis exploratorio

PASO 1. Instalar y cargar librerías

# Cargar librerías necesarias
library(readxl)
library(dplyr)
library(ggplot2)
library(plotly)
library(knitr)
library(kableExtra)
library(tidyr)
library(tidyverse)

PASO 2: Cargar la base de datos

# Cargar datos desde el archivo Excel
datos_adidas <- read_excel(
  "DatosCaso1.xlsx", 
  col_types = c(
    "text", "text", "text", "text", "text",
    "numeric", "numeric", "numeric", "numeric", "numeric",
    "text"
  )
)

PASO 3. Estadística descriptiva

Antes de comparar es importante entender el comportamiento general de las variables clave de la empresa.

# Resumen estadístico rápido (rango, cuartiles, media) de las variables numéricas
resumen_general <- datos_adidas %>%
  select(precio_unidad, unidades_vendidas, ventas_total, utilidad_operativa, margen_operativo) %>%
  summary()

resumen_general
##  precio_unidad    unidades_vendidas  ventas_total   utilidad_operativa
##  Min.   :  7.00   Min.   :   0.0    Min.   :    0   Min.   :    0     
##  1st Qu.: 35.00   1st Qu.: 106.0    1st Qu.: 4065   1st Qu.: 1753     
##  Median : 45.00   Median : 176.0    Median : 7804   Median : 3263     
##  Mean   : 45.22   Mean   : 256.9    Mean   :12455   Mean   : 4895     
##  3rd Qu.: 55.00   3rd Qu.: 350.0    3rd Qu.:15864   3rd Qu.: 6192     
##  Max.   :110.00   Max.   :1275.0    Max.   :82500   Max.   :39000     
##  margen_operativo
##  Min.   :0.100   
##  1st Qu.:0.350   
##  Median :0.410   
##  Mean   :0.423   
##  3rd Qu.:0.490   
##  Max.   :0.800
# Tabla de indicadores de centralidad y variabilidad (media, mediana, sd, min, max)
# Se calcula una fila por variable, de forma explícita (misma lógica del ejemplo de Vivienda)

fila_precio  <- data.frame(variable = "Precio por unidad",
                            media = mean(datos_adidas$precio_unidad, na.rm = TRUE),
                            mediana = median(datos_adidas$precio_unidad, na.rm = TRUE),
                            desvest = sd(datos_adidas$precio_unidad, na.rm = TRUE),
                            minimo = min(datos_adidas$precio_unidad, na.rm = TRUE),
                            maximo = max(datos_adidas$precio_unidad, na.rm = TRUE))

fila_unidades <- data.frame(variable = "Unidades vendidas",
                            media = mean(datos_adidas$unidades_vendidas, na.rm = TRUE),
                            mediana = median(datos_adidas$unidades_vendidas, na.rm = TRUE),
                            desvest = sd(datos_adidas$unidades_vendidas, na.rm = TRUE),
                            minimo = min(datos_adidas$unidades_vendidas, na.rm = TRUE),
                            maximo = max(datos_adidas$unidades_vendidas, na.rm = TRUE))

fila_ventas  <- data.frame(variable = "Ventas totales",
                            media = mean(datos_adidas$ventas_total, na.rm = TRUE),
                            mediana = median(datos_adidas$ventas_total, na.rm = TRUE),
                            desvest = sd(datos_adidas$ventas_total, na.rm = TRUE),
                            minimo = min(datos_adidas$ventas_total, na.rm = TRUE),
                            maximo = max(datos_adidas$ventas_total, na.rm = TRUE))

fila_utilidad <- data.frame(variable = "Utilidad operativa",
                            media = mean(datos_adidas$utilidad_operativa, na.rm = TRUE),
                            mediana = median(datos_adidas$utilidad_operativa, na.rm = TRUE),
                            desvest = sd(datos_adidas$utilidad_operativa, na.rm = TRUE),
                            minimo = min(datos_adidas$utilidad_operativa, na.rm = TRUE),
                            maximo = max(datos_adidas$utilidad_operativa, na.rm = TRUE))

fila_margen  <- data.frame(variable = "Margen operativo",
                            media = mean(datos_adidas$margen_operativo, na.rm = TRUE),
                            mediana = median(datos_adidas$margen_operativo, na.rm = TRUE),
                            desvest = sd(datos_adidas$margen_operativo, na.rm = TRUE),
                            minimo = min(datos_adidas$margen_operativo, na.rm = TRUE),
                            maximo = max(datos_adidas$margen_operativo, na.rm = TRUE))

indicadores_globales <- rbind(fila_precio, fila_unidades, fila_ventas, fila_utilidad, fila_margen)

kable(indicadores_globales, digits = 2, caption = "Tabla 1. Indicadores de centralidad y variabilidad") %>%
  kable_styling(bootstrap_options = c("striped", "hover"), full_width = FALSE)
Tabla 1. Indicadores de centralidad y variabilidad
variable media mediana desvest minimo maximo
Precio por unidad 45.22 45.00 14.71 7.0 110.0
Unidades vendidas 256.93 176.00 214.25 0.0 1275.0
Ventas totales 12455.08 7803.50 12716.39 0.0 82500.0
Utilidad operativa 4894.79 3262.98 4866.46 0.0 39000.0
Margen operativo 0.42 0.41 0.10 0.1 0.8

Interpretación Tabla 1

El precio promedio es de USD 45.22 (mediana USD 45.00), con un rango entre USD 7 y USD 110 y variabilidad moderada de 14.71. En unidades vendidas, ventas totales y utilidad operativa, la media supera claramente a la mediana (ej. USD 12,455 vs. USD 7,803 en ventas), lo que indica una distribución inclinada a la derecha: existen transacciones puntuales de alto valor que elevan el promedio general. Este patrón se confirma más adelante en los boxplots. El margen operativo, en cambio, se mantiene estable: promedio de 42%, mediana 41%, y desviación estándar de 0.10, sin la misma asimetría que las demás variables. Esto sugiere que la rentabilidad relativa del negocio no depende del tamaño de la transacción, sino de otros factores como producto, región o canal los cuales se exploran a continuación.

# Conteo de categorías por variable cualitativa: cuántos productos, regiones,
# distribuidores y métodos de venta hay en la base
sapply(datos_adidas[c("producto","region","distribuidor","metodo_venta")], function(x) length(unique(x)))
##     producto       region distribuidor metodo_venta 
##            6            5            6            3

Análisis detallado

PASO 4. Ventas y margen promedio por producto, región y método de venta

# Resumen de ventas, utilidad y margen promedio por producto, ordenado de mayor a menor margen
resumen_producto <- datos_adidas %>%
  group_by(producto) %>%
  summarise(
    ventas_prom   = mean(ventas_total, na.rm = TRUE),
    utilidad_prom = mean(utilidad_operativa, na.rm = TRUE),
    margen_prom   = mean(margen_operativo, na.rm = TRUE),
    n_transacciones = n()
  ) %>%
  arrange(desc(margen_prom))

kable(resumen_producto, digits = 2, caption = "Tabla 2. Ventas, utilidad y margen promedio por producto") %>%
  kable_styling(bootstrap_options = c("striped", "hover"), full_width = FALSE)
Tabla 2. Ventas, utilidad y margen promedio por producto
producto ventas_prom utilidad_prom margen_prom n_transacciones
Men’s Street Footwear 17193.02 7223.01 0.45 1610
Women’s Apparel 14845.14 6023.15 0.44 1608
Women’s Athletic Footwear 8913.77 3485.57 0.42 1606
Men’s Apparel 10286.82 3973.48 0.41 1606
Women’s Street Footwear 10697.49 4038.57 0.41 1608
Men’s Athletic Footwear 12780.86 4619.54 0.40 1610

Interpretación Tabla 2

Men’s Street Footwear tiene el mayor margen promedio, de 45%, y también el mayor volumen de ventas, es el producto insignia de la compañía, combinando rentabilidad y desempeño comercial. En el otro extremo, Men’s Athletic Footwear presenta el margen más bajo, siendo este 40%. Sin embargo, su contraparte Women’s Athletic Footwear tiene un 42%, lo que la ubica en un nivel medio-alto, señalando que la brecha de rentabilidad de la línea “Athletic” es más marcada en la versión masculina que en la femenina.

# Resumen por región
resumen_region <- datos_adidas %>%
  group_by(region) %>%
  summarise(
    ventas_prom = mean(ventas_total, na.rm = TRUE),
    margen_prom = mean(margen_operativo, na.rm = TRUE)
  ) %>%
  arrange(desc(margen_prom))

kable(resumen_region, digits = 2, caption = "Tabla 3. Ventas y margen promedio por region") %>%
  kable_styling(bootstrap_options = c("striped", "hover"), full_width = FALSE)
Tabla 3. Ventas y margen promedio por region
region ventas_prom margen_prom
South 11923.24 0.47
Midwest 8907.28 0.44
Southeast 17462.77 0.42
Northeast 10554.83 0.41
West 14884.05 0.40

Interpretación Tabla 3

La región South tiene el margen más alto (47%), mientras que West tiene el más bajo (40%) pese a un mayor volumen de ventas promedio. Al igual que con los productos, mayor volumen no implica mayor rentabilidad, la región y el margen son dimensiones independientes del desempeño.

# Resumen por método de venta
resumen_metodo <- datos_adidas %>%
  group_by(metodo_venta) %>%
  summarise(
    ventas_prom = mean(ventas_total, na.rm = TRUE),
    margen_prom = mean(margen_operativo, na.rm = TRUE)
  ) %>%
  arrange(desc(margen_prom))

kable(resumen_metodo, digits = 2, caption = "Tabla 4. Ventas y margen promedio por metodo de venta") %>%
  kable_styling(bootstrap_options = c("striped", "hover"), full_width = FALSE)
Tabla 4. Ventas y margen promedio por metodo de venta
metodo_venta ventas_prom margen_prom
Online 9197.31 0.46
Outlet 13095.93 0.39
In-store 20496.77 0.36

Interpretación Tabla 4

Existe una relación inversa entre volumen y margen según el canal: In-store genera el mayor volumen (USD 20,497) pero el margen más bajo (36%); Online vende menos (USD 9,197) pero es el más rentable (46%). Outlet queda en una posición intermedia. Esto es consistente con la lógica del negocio: los canales físicos implican mayores costos operativos (arriendo, personal, logística) que reducen el margen, mientras que el canal online es más eficiente en costos.

PASO 5. Gráfico de torta — participación de cada producto en las ventas totales

participacion_producto <- datos_adidas %>%
  group_by(producto) %>%
  summarise(ventas_totales = sum(ventas_total, na.rm = TRUE)) %>%
  mutate(porcentaje = round(ventas_totales / sum(ventas_totales) * 100, 1))

plot_ly(participacion_producto, labels = ~producto, values = ~porcentaje, type = 'pie',
        textinfo = 'label+percent') %>%
  layout(title = "Figura 1. Participación de cada producto en las ventas totales")

Fuente: Elaboración propia con base en los datos proporcionados.

Interpretación Figura 1

Men’s Street Footwear concentra un 23% de las ventas totales de la compañía, seguido de Women’s Apparel (19.9%) y Men’s Athletic Footwear (17.1%). Ningún producto supera el 25% de participación, lo que indica un portafolio relativamente diversificado, con una ventaja competitiva clara del calzado urbano.

PASO 6. Boxplot comparativo — margen operativo por producto

ggplotly(
  ggplot(datos_adidas, aes(x = reorder(producto, margen_operativo, FUN = median), y = margen_operativo, fill = producto)) +
    geom_boxplot(outlier.colour = "red", outlier.shape = 16, outlier.size = 2) +
    labs(title = "Figura 2. Boxplot del margen operativo por producto",
         x = "Producto", y = "Margen operativo") +
    theme_minimal() +
    theme(axis.text.x = element_text(angle = 30, hjust = 1), legend.position = "none")
)

Fuente: Elaboración propia con base en los datos proporcionados.

Interpretación Figura 2

Las medianas de margen entre productos oscilan entre 40% y 45%, una diferencia moderada, no extrema. Se observan valores atípicos en varios productos, correspondientes a transacciones con márgenes inusuales. Esto confirma que el producto por sí solo no es el factor que más diferencia la rentabilidad; como se ve en la Tabla 4, el canal de venta tiene un efecto más marcado.

PASO 7. Boxplot comparativo — ventas totales por método de venta

ggplotly(
  ggplot(datos_adidas, aes(x = metodo_venta, y = ventas_total, fill = metodo_venta)) +
    geom_boxplot(outlier.colour = "red", outlier.shape = 16, outlier.size = 2) +
    labs(title = "Figura 3. Boxplot de ventas totales por método de venta",
         x = "Método de venta", y = "Ventas totales (USD)") +
    theme_minimal() +
    theme(legend.position = "none")
)

Fuente: Elaboración propia con base en los datos proporcionados.

Interpretación Figura 3

El canal In-store muestra una caja más alta y con mayor dispersión que Online y Outlet. Esto indica que no solo vende más en promedio, sino con mayor variabilidad entre transacciones. Los valores atípicos hacia arriba en los tres canales son consistentes con la asimetría de ventas identificada en la Tabla 1.

PASO 8. Dispersión — precio por unidad vs. unidades vendidas

ggplotly(
  ggplot(datos_adidas, aes(x = precio_unidad, y = unidades_vendidas)) +
    geom_point(color = "lightblue", alpha = 0.5, size = 1.5) +
    geom_smooth(method = "lm", color = "grey30", se = TRUE) +
    labs(
      title = paste("Figura 4. Relación entre precio y unidades vendidas\nCoef. de correlación: ",
                    round(cor(datos_adidas$precio_unidad, datos_adidas$unidades_vendidas, use = "complete.obs"), 2)),
      x = "Precio por unidad (USD)",
      y = "Unidades vendidas"
    ) +
    theme_minimal()
)

Fuente: Elaboración propia con base en los datos proporcionados.

Interpretación Figura 4

La correlación es de 0.27: positiva pero débil. No se observa una relación negativa fuerte entre precio y volumen, es decir, no se cumple del todo la intuición de “a mayor precio, menor demanda”. Otros factores (canal, región, tipo de producto) explican mejor las variaciones en volumen que el precio por sí solo.

PASO 9. Dispersión — ventas totales vs. utilidad operativa

ggplotly(
  ggplot(datos_adidas, aes(x = ventas_total, y = utilidad_operativa)) +
    geom_point(color = "purple", alpha = 0.5, size = 1.5) +
    geom_smooth(method = "lm", color = "grey30", se = TRUE) +
    labs(
      title = paste("Figura 5. Relación entre ventas totales y utilidad operativa\nCoef. de correlación: ",
                    round(cor(datos_adidas$ventas_total, datos_adidas$utilidad_operativa, use = "complete.obs"), 2)),
      x = "Ventas totales (USD)",
      y = "Utilidad operativa (USD)"
    ) +
    theme_minimal()
)

Fuente: Elaboración propia con base en los datos proporcionados.

Interpretación Figura 5

La correlación es de 0.94: relación positiva muy fuerte entre ventas y utilidad. A mayor venta, mayor utilidad en casi la misma proporción. Esto valida el volumen como elemento importante de la rentabilidad en valores absolutos, aunque no garantiza mayor margen porcentual, que depende más del canal de venta (ver Tabla 4).

PASO 10. Matriz de correlación entre variables numéricas

matriz_cor <- datos_adidas %>%
  select(precio_unidad, unidades_vendidas, ventas_total, utilidad_operativa, margen_operativo) %>%
  cor(use = "complete.obs")

kable(round(matriz_cor, 2), caption = "Tabla 5. Matriz de correlación entre variables numéricas") %>%
  kable_styling(bootstrap_options = c("striped", "hover"), full_width = FALSE)
Tabla 5. Matriz de correlación entre variables numéricas
precio_unidad unidades_vendidas ventas_total 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_total 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

Interpretación Tabla 5

La columna de margen operativo es la más reveladora: correlación negativa con unidades vendidas (-0.31), ventas totales (-0.30) y precio (-0.14), reforzando el hallazgo de la Tabla 4 (mayor volumen, menor margen relativo). En contraste, ventas totales y utilidad operativa están fuertemente correlacionadas entre sí y con unidades vendidas, confirmando que el volumen impulsa el desempeño absoluto mientras el margen responde a una lógica distinta (el canal de venta).

PASO 11. Heatmap — margen promedio por producto y método de venta

heatmap_datos <- datos_adidas %>%
  group_by(producto, metodo_venta) %>%
  summarise(margen_prom = mean(margen_operativo, na.rm = TRUE), .groups = "drop")

ggplotly(
  ggplot(heatmap_datos, aes(x = metodo_venta, y = producto, fill = margen_prom)) +
    geom_tile(color = "white") +
    geom_text(aes(label = round(margen_prom, 2)), color = "black", size = 3) +
    scale_fill_gradient(low = "lightyellow", high = "darkgreen") +
    labs(title = "Figura 6. Margen promedio por producto y método de venta",
         x = "Método de venta", y = "Producto", fill = "Margen") +
    theme_minimal()
)

Fuente: Elaboración propia con base en los datos proporcionados.

Interpretación Figura 6

Las celdas más oscuras que son las de mayor margen se concentran en Online + “Street Footwear”o “Apparel”. Las más claras que representan un menor margen son In-store + “Athletic Footwear”. Este cruce resume visualmente las dos variables categóricas más relevantes del análisis (producto y canal), mostrando de un vistazo las combinaciones más y menos estratégicas para Adidas.

Hallazgos principales

  1. Asimetría en ventas y utilidad: la media supera claramente a la mediana en ambas variables, indicando una distribución sesgada a la derecha por transacciones puntuales de alto valor.

  2. El producto más rentable también es el más vendido: “Men’s Street Footwear” combina la mayor participación en ventas con el margen más alto; “Men´s Athletic Footwear” es consistentemente el menos rentable.

  3. Relación inversa entre volumen y margen por canal: in-store concentra el mayor volumen pero el margen más bajo; online, con menor volumen, es el canal más rentable.

  4. El precio no es el principal determinante del volumen: la correlación precio-unidades es positiva pero débil (0.27).

  5. Ventas y utilidad están fuertemente correlacionadas (0.94), validando el volumen como motor de la rentabilidad absoluta, aunque no del margen relativo.

  6. Existen combinaciones más estratégicas que otras: el cruce producto × canal muestra que ciertas combinaciones concentran los márgenes más altos, y otras representan oportunidades de mejora.

Conclusiones y recomendaciones

Con base en el análisis descriptivo y diagnóstico anterior, se proponen las siguientes recomendaciones para el equipo directivo de Adidas:

  1. Impulsar el canal online de forma estratégica: al tener el margen más alto, se recomienda evaluar mayor inversión en marketing y promociones hacia este canal, sin descuidar el volumen que aporta in-store.

  2. Revisar la estructura de costos del canal in-store: al ser el canal de mayor volumen pero menor margen, existe una oportunidad de optimizar costos operativos para mejorar su rentabilidad relativa.

  3. Priorizar Men’s Street Footwear y Women’s Apparel en campañas y asignación de inventario, al ser los dos productos que combinan mayor margen (45% y 44% respectivamente) con mayor participación en ventas totales (23% y 19.9%).

  4. Evaluar el desempeño de Men’s Athletic Footwear: revisar su estructura de costos y estrategia de precios, o reposicionar su mezcla de canales hacia opciones más rentables.

  5. Aprovechar las combinaciones más estratégicas identificadas en el heatmap (producto × método de venta) para orientar decisiones de inventario, mix de canal y campañas focalizadas por región.