1. Introducción

En este trabajo se realiza un análisis descriptivo de una base de datos de ventas de ADIDAS, con el propósito de identificar diferencias en el desempeño comercial y la rentabilidad según producto, región y método de venta. Para ello, se analizan las ventas, unidades vendidas, utilidad operativa y margen operativo mediante estadísticas descriptivas, tablas y visualizaciones. Además, se exploran las relaciones entre las principales variables cuantitativas para identificar patrones que puedan ser relevantes para la toma de decisiones.

2. Preparación de los datos

Primero se cargan las librerías necesarias y posteriormente se importa el archivo de Excel que contiene la información del caso.

library(readxl)
library(dplyr)
library(ggplot2)
library(scales)
library(knitr)
datos <- read_excel("C:/Users/sammu/OneDrive/Desktop/U/DatosCaso1.xlsx", 
    col_types = c("text", "text", "text", 
        "text", "text", "numeric", "numeric", 
        "numeric", "numeric", "numeric", 
        "text"))

# Revisamos el tamaño de la base y sus variables
dim(datos)
## [1] 9648   11
summary(datos)
##     distribuidor        region           estado           ciudad    
##  Length   :9648   Length   :9648   Length   :9648   Length   :9648  
##  N.unique :   6   N.unique :   5   N.unique :  50   N.unique :  52  
##  N.blank  :   0   N.blank  :   0   N.blank  :   0   N.blank  :   0  
##  Min.nchar:   6   Min.nchar:   4   Min.nchar:   4   Min.nchar:   5  
##  Max.nchar:  13   Max.nchar:   9   Max.nchar:  14   Max.nchar:  14  
##                                                                     
##       producto    precio_unidad    unidades_vendidas  ventas_total  
##  Length   :9648   Min.   :  7.00   Min.   :   0.0    Min.   :    0  
##  N.unique :   6   1st Qu.: 35.00   1st Qu.: 106.0    1st Qu.: 4065  
##  N.blank  :   0   Median : 45.00   Median : 176.0    Median : 7804  
##  Min.nchar:  13   Mean   : 45.22   Mean   : 256.9    Mean   :12455  
##  Max.nchar:  25   3rd Qu.: 55.00   3rd Qu.: 350.0    3rd Qu.:15864  
##                   Max.   :110.00   Max.   :1275.0    Max.   :82500  
##  utilidad_operativa margen_operativo    metodo_venta 
##  Min.   :    0      Min.   :0.100    Length   :9648  
##  1st Qu.: 1753      1st Qu.:0.350    N.unique :   3  
##  Median : 3263      Median :0.410    N.blank  :   0  
##  Mean   : 4895      Mean   :0.423    Min.nchar:   6  
##  3rd Qu.: 6192      3rd Qu.:0.490    Max.nchar:   8  
##  Max.   :39000      Max.   :0.800

La base contiene 9648 registros y 11 variables. Entre las variables más importantes se encuentran el precio por unidad, las unidades vendidas, las ventas totales, la utilidad operativa, el margen operativo, el producto, la región y el método de venta.

3. Estadísticas descriptivas generales

Para comenzar se calcularon algunas medidas que permiten tener una idea general del comportamiento de los datos.

resumen <- datos %>%
  summarise(
    ventas_totales = sum(ventas_total, na.rm = TRUE),
    unidades_totales = sum(unidades_vendidas, na.rm = TRUE),
    utilidad_total = sum(utilidad_operativa, na.rm = TRUE),
    precio_promedio = mean(precio_unidad, na.rm = TRUE),
    ventas_promedio = mean(ventas_total, na.rm = TRUE),
    ventas_mediana = median(ventas_total, na.rm = TRUE),
    desviacion_ventas = sd(ventas_total, na.rm = TRUE),
    utilidad_promedio = mean(utilidad_operativa, na.rm = TRUE),
    margen_promedio = mean(margen_operativo, na.rm = TRUE)
  )

kable(resumen, digits = 2)
ventas_totales unidades_totales utilidad_total precio_promedio ventas_promedio ventas_mediana desviacion_ventas utilidad_promedio margen_promedio
120166650 2478861 47224968 45.22 12455.08 7803.5 12716.39 4894.79 0.42

Al comparar la media y la mediana de las ventas se observa que no tienen exactamente el mismo valor. Además, la desviación estándar es relativamente alta. Esto indica que existen diferencias importantes entre las ventas registradas y que algunas observaciones tienen valores bastante mayores que otras.

Para observar mejor esta situación se realizó un diagrama de caja.

ggplot(datos, aes(y = ventas_total)) +
  geom_boxplot() +
  scale_y_continuous(labels = comma) +
  labs(title = "Distribución de las ventas totales",
       y = "Ventas totales", x = "") +
  theme_minimal()

El gráfico muestra la presencia de varios valores alejados del comportamiento central. Estos valores pueden considerarse atípicos desde el punto de vista estadístico, aunque no necesariamente representan errores en la información.

4. Análisis de las ventas por producto

Se agruparon los datos por producto para conocer cuáles presentan mayores ventas, unidades vendidas y utilidad operativa.

por_producto <- datos %>%
  group_by(producto) %>%
  summarise(
    ventas = sum(ventas_total, na.rm = TRUE),
    unidades = sum(unidades_vendidas, na.rm = TRUE),
    utilidad = sum(utilidad_operativa, na.rm = TRUE),
    .groups = "drop"
  ) %>%
  arrange(desc(ventas))

kable(por_producto, digits = 2)
producto ventas unidades utilidad
Men’s Street Footwear 27680769 593320 11629046
Women’s Apparel 23870985 433827 9685221
Men’s Athletic Footwear 20577180 435526 7437457
Women’s Street Footwear 17201563 392269 6494017
Men’s Apparel 16520632 306683 6381405
Women’s Athletic Footwear 14315521 317236 5597822
ggplot(por_producto, aes(x = reorder(producto, ventas), y = ventas)) +
  geom_col() +
  coord_flip() +
  scale_y_continuous(labels = dollar_format(scale = 1e-6, suffix = " M")) +
  labs(title = "Ventas totales por producto",
       x = "Producto", y = "Ventas") +
  theme_minimal()

Men’s Street Footwear presenta el mayor nivel de ventas de la base, con aproximadamente 27,7 millones, y una utilidad operativa cercana a 11,6 millones. Women’s Apparel ocupa el segundo lugar en ventas, con aproximadamente 23,9 millones. Estos resultados muestran que la contribución a las ventas y a la utilidad varía entre las categorías de producto, por lo que resulta relevante analizar ambas variables y no únicamente el volumen de ventas.

5. Análisis por región

Posteriormente se revisaron las ventas y la utilidad según la región.

por_region <- datos %>%
  group_by(region) %>%
  summarise(
    ventas = sum(ventas_total, na.rm = TRUE),
    unidades = sum(unidades_vendidas, na.rm = TRUE),
    utilidad = sum(utilidad_operativa, na.rm = TRUE),
    margen = utilidad / ventas,
    .groups = "drop"
  ) %>%
  arrange(desc(ventas))

kable(por_region, digits = 2)
region ventas unidades utilidad margen
West 36436157 686985 13017584 0.36
Northeast 25078267 501279 9732774 0.39
Southeast 21374436 407000 8393059 0.39
South 20603356 492260 9221605 0.45
Midwest 16674434 391337 6859945 0.41
ggplot(por_region, aes(x = reorder(region, ventas), y = ventas)) +
  geom_col() +
  coord_flip() +
  scale_y_continuous(labels = dollar_format(scale = 1e-6, suffix = " M")) +
  labs(title = "Ventas por región",
       x = "Región", y = "Ventas") +
  theme_minimal()

La región West concentra el mayor nivel de ventas, con aproximadamente 36,4 millones, mientras que Northeast alcanza cerca de 25,1 millones. Sin embargo, el análisis del margen muestra que un mayor volumen de ventas no necesariamente implica el mayor margen operativo. Esta diferencia permite observar que el desempeño regional debe analizarse considerando simultáneamente ventas, utilidad y margen.

6. Análisis por distribuidor

También se compararon las ventas de los diferentes distribuidores presentes en la base.

por_distribuidor <- datos %>%
  group_by(distribuidor) %>%
  summarise(
    ventas = sum(ventas_total, na.rm = TRUE),
    utilidad = sum(utilidad_operativa, na.rm = TRUE),
    margen = utilidad / ventas,
    .groups = "drop"
  ) %>%
  arrange(desc(ventas))

kable(por_distribuidor, digits = 2)
distribuidor ventas utilidad margen
West Gear 32409558 12196891 0.38
Foot Locker 29024945 11317027 0.39
Sports Direct 24616622 10641609 0.43
Kohl’s 13512453 5182260 0.38
Walmart 10506085 3902749 0.37
Amazon 10096987 3984432 0.39

De acuerdo con los resultados, West Gear y Foot Locker se encuentran entre los distribuidores con mayores ventas. Al mismo tiempo, existen diferencias entre los márgenes obtenidos por cada distribuidor, por lo que es útil revisar tanto las ventas como la utilidad.

7. Rentabilidad por producto

Para complementar el análisis de ventas se calculó el margen de cada producto como la utilidad dividida entre las ventas.

margen_producto <- datos %>%
  group_by(producto) %>%
  summarise(
    ventas = sum(ventas_total, na.rm = TRUE),
    utilidad = sum(utilidad_operativa, na.rm = TRUE),
    margen = utilidad / ventas,
    .groups = "drop"
  )

kable(margen_producto, digits = 3)
producto ventas utilidad margen
Men’s Apparel 16520632 6381405 0.386
Men’s Athletic Footwear 20577180 7437457 0.361
Men’s Street Footwear 27680769 11629046 0.420
Women’s Apparel 23870985 9685221 0.406
Women’s Athletic Footwear 14315521 5597822 0.391
Women’s Street Footwear 17201563 6494017 0.378
ggplot(margen_producto,
       aes(x = reorder(producto, margen), y = margen)) +
  geom_col() +
  coord_flip() +
  scale_y_continuous(labels = percent) +
  labs(title = "Margen operativo por producto",
       x = "Producto", y = "Margen") +
  theme_minimal()

El análisis del margen permite complementar la información de ventas, ya que un producto puede vender bastante pero tener un margen diferente al de otros productos.

8. Método de venta

Se analizaron los tres métodos de venta registrados en la base para observar cuál tiene mayor participación.

por_metodo <- datos %>%
  group_by(metodo_venta) %>%
  summarise(
    ventas = sum(ventas_total, na.rm = TRUE),
    unidades = sum(unidades_vendidas, na.rm = TRUE),
    utilidad = sum(utilidad_operativa, na.rm = TRUE),
    margen = utilidad / ventas,
    .groups = "drop"
  ) %>%
  arrange(desc(ventas))

kable(por_metodo, digits = 2)
metodo_venta ventas unidades utilidad margen
Online 44965657 939093 19552538 0.43
Outlet 39536618 849778 14913301 0.38
In-store 35664375 689990 12759129 0.36
ggplot(por_metodo, aes(x = metodo_venta, y = ventas)) +
  geom_col() +
  scale_y_continuous(labels = dollar_format(scale = 1e-6, suffix = " M")) +
  labs(title = "Ventas por método de venta",
       x = "Método de venta", y = "Ventas") +
  theme_minimal()

El método Online registra aproximadamente 45,0 millones en ventas, 19,6 millones de utilidad operativa y un margen de 43%, mientras que Outlet e In-store presentan márgenes de 38% y 36%, respectivamente. Esto muestra diferencias tanto en volumen de ventas como en rentabilidad entre los métodos de venta. Por ello, evaluar únicamente las ventas no sería suficiente para comparar el desempeño de cada método.

9. Relación entre variables

Para conocer si algunas variables se mueven de manera similar se calculó una matriz de correlaciones.

variables <- datos %>%
  select(precio_unidad, unidades_vendidas, ventas_total,
         utilidad_operativa, margen_operativo)

correlaciones <- cor(variables, use = "complete.obs")

kable(round(correlaciones, 3))
precio_unidad unidades_vendidas ventas_total utilidad_operativa margen_operativo
precio_unidad 1.000 0.266 0.540 0.504 -0.137
unidades_vendidas 0.266 1.000 0.919 0.872 -0.305
ventas_total 0.540 0.919 1.000 0.935 -0.302
utilidad_operativa 0.504 0.872 0.935 1.000 -0.047
margen_operativo -0.137 -0.305 -0.302 -0.047 1.000

Una de las relaciones más claras es la que existe entre ventas totales y utilidad operativa, ya que la correlación es positiva y alta. Esto significa que, dentro de esta base, cuando las ventas son mayores generalmente también se presenta una utilidad operativa mayor.

Por otro lado, la relación entre precio por unidad y unidades vendidas no es lo suficientemente fuerte como para afirmar que un precio más alto produzca necesariamente una disminución en las unidades vendidas.

ggplot(datos, aes(x = ventas_total, y = utilidad_operativa)) +
  geom_point(alpha = 0.3) +
  geom_smooth(method = "lm", se = FALSE) +
  scale_x_continuous(labels = comma) +
  scale_y_continuous(labels = comma) +
  labs(title = "Relación entre ventas y utilidad operativa",
       x = "Ventas totales", y = "Utilidad operativa") +
  theme_minimal()

En el gráfico se puede observar una tendencia creciente. A medida que aumentan las ventas, normalmente también aumenta la utilidad operativa.

10. Valores atípicos

Se utilizó el rango intercuartílico para identificar observaciones que se encuentran por encima del comportamiento habitual de las ventas.

q1 <- quantile(datos$ventas_total, 0.25, na.rm = TRUE)
q3 <- quantile(datos$ventas_total, 0.75, na.rm = TRUE)
rango_iq <- IQR(datos$ventas_total, na.rm = TRUE)
limite_superior <- q3 + 1.5 * rango_iq

atipicos <- datos %>%
  filter(ventas_total > limite_superior)

nrow(atipicos)
## [1] 799

Se encontraron observaciones por encima del límite superior. Sin embargo, en este caso no se eliminaron, porque pueden corresponder a ventas reales de mayor tamaño. Antes de eliminar un dato sería necesario comprobar si se trata de un error o de una operación válida.

11. Combinaciones de producto y región

También se revisaron algunas combinaciones entre producto y región para identificar dónde se encuentran las mayores ventas.

producto_region <- datos %>%
  group_by(producto, region) %>%
  summarise(
    ventas = sum(ventas_total, na.rm = TRUE),
    utilidad = sum(utilidad_operativa, na.rm = TRUE),
    .groups = "drop"
  ) %>%
  arrange(desc(ventas))

kable(head(producto_region, 10), digits = 2)
producto region ventas utilidad
Men’s Street Footwear West 7389988 2907503
Women’s Apparel West 7038046 2096258
Men’s Street Footwear Northeast 6841324 3030663
Men’s Athletic Footwear West 6761339 2154211
Women’s Street Footwear West 5748586 2142439
Women’s Apparel Northeast 5045208 1917008
Men’s Apparel West 4827378 2009555
Men’s Street Footwear Midwest 4707360 1948621
Men’s Street Footwear Southeast 4693836 2003886
Women’s Athletic Footwear West 4670820 1707618

Este análisis ayuda a entender que el comportamiento de un producto puede cambiar dependiendo de la región en la cual se vende.

12. Principales hallazgos

A partir de los análisis realizados se identificaron los siguientes aspectos:

  1. Las ventas presentan una variación considerable y existen algunos valores atípicos.
  2. Men’s Street Footwear es el producto con mayores ventas dentro de la base.
  3. La región West presenta el mayor nivel de ventas.
  4. La región South tiene un margen mayor al de otras regiones.
  5. El método de venta Online presenta buenos resultados en ventas y utilidad.
  6. Existe una relación positiva alta entre las ventas totales y la utilidad operativa.
  7. No se observa una evidencia clara de que un mayor precio por unidad reduzca necesariamente el número de unidades vendidas.

13. Conclusiones y recomendaciones

Con los resultados obtenidos se puede concluir que existen diferencias importantes entre productos, regiones y métodos de venta. Por esta razón, no es suficiente analizar solamente el total de ventas de la empresa.

Men’s Street Footwear tiene una participación importante en las ventas, por lo cual sería conveniente continuar haciendo seguimiento a este producto. De igual manera, el método Online presenta buenos resultados y puede seguir siendo un canal relevante para la empresa.

La región West se destaca por sus ventas, mientras que South presenta un margen mayor. Esto puede ser útil para revisar qué diferencias existen entre ambas regiones y qué factores pueden estar relacionados con esos resultados.

Finalmente, se recomienda que ADIDAS tenga en cuenta tanto las ventas como la utilidad y el margen al momento de comparar productos, regiones o métodos de venta. También sería útil analizar con mayor detalle las observaciones atípicas antes de tomar decisiones sobre ellas.

14. Cierre

Este ejercicio permitió aplicar herramientas de analítica descriptiva para conocer mejor el comportamiento de una base de datos comercial. Las tablas, los gráficos y las correlaciones ayudaron a identificar diferencias entre los grupos y a obtener conclusiones básicas que pueden servir como apoyo para la toma de decisiones.