Introducción

Adidas es una de las empresas líderes del sector deportivo a nivel mundial, destacándose por la comercialización de calzado, ropa y accesorios. En un mercado altamente competitivo, resulta fundamental analizar el comportamiento de las ventas y la rentabilidad para identificar oportunidades de crecimiento y fortalecer la toma de decisiones estratégicas.

En este informe se evalúa el desempeño comercial de la compañía a partir de variables clave como producto, región, método de venta, ventas totales y utilidad operativa. El objetivo es identificar cuáles son los productos, mercados y canales que generan mayor valor para la organización, proporcionando información que sirva de apoyo para la formulación de estrategias orientadas a maximizar las ventas y la rentabilidad de Adidas.

Análisis exploratorio

El análisis exploratorio de datos (EDA) nos permite conocer y entender mejor la información de Adidas, revisando los productos, las regiones y los canales de venta para encontrar patrones, tendencias y datos que puedan ser importantes para la marca.

PASO 1. Instalar y cargar librerias

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

PASO 2: Actualizar ruta o codigo del excel Tabla resumen: Ventas y Utilidad por Producto

Se filtra la base de datos teniendo en cuenta sólo apartamentos y el barrio Santa teresita:

El código siguiente carga un archivo de Excel con datos de viviendas, les asigna un ID único a cada fila, y luego filtra los apartamentos que están en el barrio “Santa Teresita”, permitiendo pequeñas diferencias en la escritura del nombre.

library(readxl)
datos<- read_excel("C:/Users/jerly.cortes/Downloads/2026-2/lunes/CORTE 1/CASO 1/DatosCaso1.xlsx")



# Generar una secuencia de números desde 1 hasta el número total de filas
id = 1:dim(datos)[1]
datos = data.frame(id, datos)

# Asignar a datos_sub para conservar el esquema de análisis
datos_sub = datos
head(datos_sub)
id distribuidor region estado ciudad producto precio_unidad unidades_vendidas ventas_total utilidad_operativa margen_operativo metodo_venta
1 Foot Locker Northeast New York New York Men’s Street Footwear 50 1200 60000 30000.0 0.50 In-store
2 Foot Locker Northeast New York New York Men’s Athletic Footwear 50 1000 50000 15000.0 0.30 In-store
3 Foot Locker Northeast New York New York Women’s Street Footwear 40 1000 40000 14000.0 0.35 In-store
4 Foot Locker Northeast New York New York Women’s Athletic Footwear 45 850 38250 13387.5 0.35 In-store
5 Foot Locker Northeast New York New York Men’s Apparel 60 900 54000 16200.0 0.30 In-store
6 Foot Locker Northeast New York New York Women’s Apparel 50 1000 50000 12500.0 0.25 In-store

Ahora obtenemos los nombres exactos de las variables que tenemos en la base de datos

library(dplyr)
names(datos_sub)
##  [1] "id"                 "distribuidor"       "region"            
##  [4] "estado"             "ciudad"             "producto"          
##  [7] "precio_unidad"      "unidades_vendidas"  "ventas_total"      
## [10] "utilidad_operativa" "margen_operativo"   "metodo_venta"
length(datos_sub$id)
## [1] 9648

Indicadores de centralidad

# Indicadores para la variable Ventas Totales
promedio_ventas = mean(datos_sub$ventas_total, na.rm = TRUE)
mediana_ventas = median(datos_sub$ventas_total, na.rm = TRUE)
minimo_ventas = min(datos_sub$ventas_total, na.rm = TRUE)
maximo_ventas = max(datos_sub$ventas_total, na.rm = TRUE)
desvest_ventas = sd(datos_sub$ventas_total, na.rm = TRUE)

indic_ventas = data.frame(promedio_ventas, mediana_ventas, minimo_ventas, maximo_ventas, desvest_ventas)
indic_ventas
promedio_ventas mediana_ventas minimo_ventas maximo_ventas desvest_ventas
12455.08 7803.5 0 82500 12716.39
# Indicadores para la variable Utilidad Operativa
promedio_utilidad = mean(datos_sub$utilidad_operativa, na.rm = TRUE)
mediana_utilidad = median(datos_sub$utilidad_operativa, na.rm = TRUE)
minimo_utilidad = min(datos_sub$utilidad_operativa, na.rm = TRUE)
maximo_utilidad = max(datos_sub$utilidad_operativa, na.rm = TRUE)
desvest_utilidad = sd(datos_sub$utilidad_operativa, na.rm = TRUE)

indic_utilidad = data.frame(promedio_utilidad, mediana_utilidad, minimo_utilidad, maximo_utilidad, desvest_utilidad)
indic_utilidad
promedio_utilidad mediana_utilidad minimo_utilidad maximo_utilidad desvest_utilidad
4894.794 3262.98 0 39000 4866.464

Representación gráfica

Grafico de Barras

Producto

Ahora creamos del gráfico de barras interactivo para analizar las ventas acumuladas por categoría de producto:

colnames(datos_sub)  # Muestra los nombres de las columnas
##  [1] "id"                 "distribuidor"       "region"            
##  [4] "estado"             "ciudad"             "producto"          
##  [7] "precio_unidad"      "unidades_vendidas"  "ventas_total"      
## [10] "utilidad_operativa" "margen_operativo"   "metodo_venta"
str(datos_sub)       # Muestra la estructura del dataframe
## 'data.frame':    9648 obs. of  12 variables:
##  $ id                : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ distribuidor      : chr  "Foot Locker" "Foot Locker" "Foot Locker" "Foot Locker" ...
##  $ region            : chr  "Northeast" "Northeast" "Northeast" "Northeast" ...
##  $ estado            : chr  "New York" "New York" "New York" "New York" ...
##  $ ciudad            : chr  "New York" "New York" "New York" "New York" ...
##  $ producto          : chr  "Men's Street Footwear" "Men's Athletic Footwear" "Women's Street Footwear" "Women's Athletic Footwear" ...
##  $ precio_unidad     : num  50 50 40 45 60 50 50 50 40 45 ...
##  $ unidades_vendidas : num  1200 1000 1000 850 900 1000 1250 900 950 825 ...
##  $ ventas_total      : num  60000 50000 40000 38250 54000 ...
##  $ utilidad_operativa: num  30000 15000 14000 13388 16200 ...
##  $ margen_operativo  : num  0.5 0.3 0.35 0.35 0.3 0.25 0.5 0.3 0.35 0.35 ...
##  $ metodo_venta      : chr  "In-store" "In-store" "In-store" "In-store" ...
grafico_producto <- datos_sub %>% 
  group_by(producto) %>% 
  summarise(Ventas = sum(ventas_total)/1e6) %>% 
  plot_ly(x = ~reorder(producto, -Ventas), y = ~Ventas, type = 'bar',
          marker = list(color = 'skyblue', line = list(color = 'black', width = 1))) %>% 
  layout(
    title = list(text = "<b>Figura 1. Ventas Totales por Línea de Producto (Millones USD)</b>", font = list(size = 14)),
    xaxis = list(title = "Línea de Producto"),
    yaxis = list(title = "Ventas Totales (Millones USD)"),
    hovermode = "x"
  )

grafico_producto

Interpretación Figura 1:

Distribución: La categoría con mayor facturación es Men’s Street Footwear ($27.68M USD), seguida por Women’s Apparel ($23.87M USD).

Patrón relevante: El calzado urbano/casual muestra una clara ventaja en ventas comparado con el calzado deportivo estándar.

Boxplot

Método de Venta

Ahora realizamos una representación visual por medio de un boxplot interactivo para evaluar la dispersión de las ventas por cada canal:

ggplotly(
  ggplot(datos_sub, aes(x = metodo_venta, y = ventas_total, fill = metodo_venta)) +
    geom_boxplot(color = "black", outlier.colour = "red", outlier.shape = 16, outlier.size = 2) +
    scale_fill_manual(values = c("lightblue", "lightgreen", "coral")) +
    labs(
      title = "Figura 2. Boxplot de Ventas por Método de Venta",
      x = "Método de Venta",
      y = "Ventas Totales (USD)"
    ) +
    theme_minimal() +
    theme(legend.position = "none")
)

Interpretación Figura 2:

Mediana y dispersión: Las ventas en tiendas físicas (In-store) presentan un valor por transacción individual más elevado, pero el canal Online genera la mayor suma total de ventas acumuladas ($44.96M USD).

Atípicos: Existen valores atípicos significativos en el canal tradicional y outlet que responden a pedidos mayoristas de gran volumen.

Grafico de Barras Horizontales

Región

Visualización de la utilidad operativa generada según la región geográfica:

grafico_region <- datos_sub %>% 
  group_by(region) %>% 
  summarise(Utilidad = sum(utilidad_operativa)/1e6) %>% 
  plot_ly(x = ~Utilidad, y = ~reorder(region, Utilidad), type = 'bar', orientation = 'h',
          marker = list(color = 'lightgreen', line = list(color = 'black', width = 1))) %>% 
  layout(
    title = list(text = "<b>Figura 3. Utilidad Operativa por Región (Millones USD)</b>", font = list(size = 14)),
    xaxis = list(title = "Utilidad Operativa (Millones USD)"),
    yaxis = list(title = "Región")
  )

grafico_region

Interpretación Fgura 3:

Región Líder: La región West encabeza la utilidad con $13.02M USD, seguida por Northeast ($9.73M USD).

Oportunidad: La región Midwest registra el menor nivel operativo ($6.86M USD), señalando la necesidad de ajustar las promociones en esa zona.

Gráfico de dispersión

Relación Ventas vs. Utilidad Operativa

Exploración bivariada entre las ventas totales y la utilidad operativa obtenida.

# Calcular el coeficiente de correlación
correlacion <- round(cor(datos_sub$ventas_total, datos_sub$utilidad_operativa, use = "complete.obs"), 2)

# Crear el gráfico
grafico_dispersion <- ggplot(datos_sub, aes(x = ventas_total, y = utilidad_operativa)) +
  geom_point(color = "purple", alpha = 0.5, size = 1.8) +
  geom_smooth(method = "lm", color = "black", se = TRUE) +
  labs(
    title = paste("Figura 4. Relación Ventas Totales vs. Utilidad Operativa - Correlación:", correlacion),
    x = "Ventas Totales (USD)",
    y = "Utilidad Operativa (USD)"
  ) +
  theme_minimal()

ggplotly(grafico_dispersion)

Interpretación Figura 4:

Tendencia: Existe una relación positiva fuertemente directa entre las ventas totales y la utilidad operativa.

Coeficiente de correlación: El valor de 0.94 confirma que el incremento en las ventas brutas se traduce de manera sumamente eficiente en mayores utilidades para la empresa.

Hallazgos Relevantes

Liderazgo Urbano: El segmento Street Footwear es el pilar comercial de la marca. Eficiencia Digital: El canal Online aporta la mayor rentabilidad acumulada total gracias a sus reducidos costos operativos fijos. Potencial Geográfico: La región West concentra la mayor contribución a las utilidades globales.

Conclusiones y Recomendaciones para ADIDAS

Fortalecer la presencia Digital (E-commerce): Incrementar la inversión publicitaria digital, pues el canal Online es el más rentable. Expansion de la línea Streetwear: Expandir el portafolio de calzado urbano femenino aprovechando el éxito de la línea masculina. Estrategia en la Región Midwest: Reorganizar la fuerza de ventas en la región Midwest para equiparar su rendimiento con la región West.