Introduccion

Adidas cuenta con una base de datos comercial que permite evaluar el comportamiento de variables asociadas con ventas y rentabilidad. En este informe se desarrolla un analisis descriptivo y diagnostico enfocado en la utilidad operativa y el margen operativo, con el proposito de identificar patrones relevantes para la toma de decisiones.

A diferencia de un analisis general de todas las variables, este documento se concentra en las preguntas centrales del caso: como se distribuyen la utilidad operativa y el margen operativo, cual es el margen promedio y que tan variable es, que productos, ciudades y metodos de venta parecen mas rentables, y si existe relacion entre ventas y utilidad.

Con base en ello, se priorizan las variables utilidad_operativa, margen_operativo, ventas_total, producto, ciudad y metodo_venta, ya que estas permiten evaluar tanto la rentabilidad absoluta como la rentabilidad relativa de los distintos segmentos.

Analisis exploratorio

El analisis exploratorio de datos constituye una etapa fundamental para comprender la estructura de la informacion, describir el comportamiento de las variables clave e identificar relaciones relevantes entre ellas.

En este caso, el analisis se orienta especificamente a la rentabilidad de Adidas. Por esta razon, se emplean estadisticas descriptivas, medidas de variabilidad y visualizaciones enfocadas en utilidad operativa, margen operativo, producto, ciudad y metodo de venta.

PASO 1. Instalar y cargar librerias

# Cargar librerias necesarias
library(readxl)
library(dplyr)
library(ggplot2)
library(plotly)
library(knitr)
library(kableExtra)
library(tidyr)
library(tidyverse)
library(janitor)

PASO 2. Cargar la base de datos

# Cargar datos desde el archivo Excel
adidas <- read_excel("C:/Users/ASUS/OneDrive - PUJ Cali/Desktop/MASTER FINANZAS JAVERIANA 2026-2027/Analitica de negocios/trabajos R/DatosCaso111.xlsx",
                     sheet = "Data Sales Adidas") %>%
  clean_names() %>%
  mutate(
    producto = as.factor(producto),
    ciudad = as.factor(ciudad),
    metodo_venta = as.factor(metodo_venta)
  )

# Revision basica de las variables utilizadas en el analisis
variables_clave <- adidas %>%
  select(ciudad, producto, metodo_venta, ventas_total, utilidad_operativa, margen_operativo)

head(variables_clave)
ciudad producto metodo_venta ventas_total utilidad_operativa margen_operativo
New York Men’s Street Footwear In-store 60000 30000.0 0.50
New York Men’s Athletic Footwear In-store 50000 15000.0 0.30
New York Women’s Street Footwear In-store 40000 14000.0 0.35
New York Women’s Athletic Footwear In-store 38250 13387.5 0.35
New York Men’s Apparel In-store 54000 16200.0 0.30
New York Women’s Apparel In-store 50000 12500.0 0.25

Indicadores de centralidad y dispersion

En esta seccion se resume el comportamiento de las variables de rentabilidad principales. Se reportan medidas de tendencia central y dispersion para utilidad operativa, margen operativo y ventas totales.

resumen_rentabilidad <- data.frame(
  Variable = c("Ventas totales", "Utilidad operativa", "Margen operativo"),
  Minimo = c(min(adidas$ventas_total, na.rm = TRUE),
             min(adidas$utilidad_operativa, na.rm = TRUE),
             min(adidas$margen_operativo, na.rm = TRUE)),
  Media = c(mean(adidas$ventas_total, na.rm = TRUE),
            mean(adidas$utilidad_operativa, na.rm = TRUE),
            mean(adidas$margen_operativo, na.rm = TRUE)),
  Mediana = c(median(adidas$ventas_total, na.rm = TRUE),
              median(adidas$utilidad_operativa, na.rm = TRUE),
              median(adidas$margen_operativo, na.rm = TRUE)),
  Maximo = c(max(adidas$ventas_total, na.rm = TRUE),
             max(adidas$utilidad_operativa, na.rm = TRUE),
             max(adidas$margen_operativo, na.rm = TRUE)),
  Desv_Estandar = c(sd(adidas$ventas_total, na.rm = TRUE),
                    sd(adidas$utilidad_operativa, na.rm = TRUE),
                    sd(adidas$margen_operativo, na.rm = TRUE))
)

knitr::kable(resumen_rentabilidad, digits = 2, caption = "Tabla 1. Resumen estadistico de ventas y rentabilidad") %>%
  kable_styling(full_width = FALSE)
Tabla 1. Resumen estadistico de ventas y rentabilidad
Variable Minimo Media Mediana Maximo Desv_Estandar
Ventas totales 0.0 12455.08 7803.50 82500.0 12716.39
Utilidad operativa 0.0 4894.79 3262.98 39000.0 4866.46
Margen operativo 0.1 0.42 0.41 0.8 0.10

La tabla anterior permite observar el nivel promedio de rentabilidad y su dispersion. En particular, la desviacion estandar resulta relevante porque muestra que tan estable o heterogeneo es el comportamiento de cada variable con respecto a su media.

Distribucion de la utilidad operativa

El siguiente histograma permite evaluar como se distribuye la utilidad operativa dentro de la base de datos.

grafico_hist_utilidad <- ggplot(adidas, aes(x = utilidad_operativa)) +
  geom_histogram(bins = 30, fill = "lightblue", color = "black") +
  labs(title = "Figura 1. Distribucion de la utilidad operativa",
       x = "Utilidad operativa",
       y = "Frecuencia") +
  theme_minimal()

ggplotly(grafico_hist_utilidad)

Boxplot de utilidad operativa

El boxplot permite identificar dispersion, asimetria y posibles valores atipicos en la utilidad operativa.

ggplotly(
  ggplot(adidas, aes(y = utilidad_operativa)) +
    geom_boxplot(fill = "lightblue", color = "black", outlier.colour = "red", outlier.shape = 16, outlier.size = 2) +
    labs(title = "Figura 2. Boxplot de utilidad operativa",
         y = "Utilidad operativa") +
    theme_minimal()
)

A partir de estas figuras se puede evaluar si la utilidad operativa presenta alta concentracion, dispersion significativa o dependencia de pocos registros extremos.

Distribucion del margen operativo

El margen operativo es una medida de rentabilidad relativa. Su distribucion permite entender si la eficiencia del negocio es estable o si cambia considerablemente entre observaciones.

grafico_hist_margen <- ggplot(adidas, aes(x = margen_operativo)) +
  geom_histogram(bins = 30, fill = "darkseagreen", color = "black") +
  labs(title = "Figura 3. Distribucion del margen operativo",
       x = "Margen operativo",
       y = "Frecuencia") +
  theme_minimal()

ggplotly(grafico_hist_margen)
ggplotly(
  ggplot(adidas, aes(y = margen_operativo)) +
    geom_boxplot(fill = "khaki", color = "black", outlier.colour = "red", outlier.shape = 16, outlier.size = 2) +
    labs(title = "Figura 4. Boxplot del margen operativo",
         y = "Margen operativo") +
    theme_minimal()
)

Margen promedio y variabilidad

Para responder cual es el margen promedio y que tan variable es, se construye una tabla especifica para el margen operativo.

resumen_margen <- data.frame(
  Medida = c("Media", "Mediana", "Desviacion estandar", "Rango", "Coeficiente de variacion"),
  Valor = c(
    mean(adidas$margen_operativo, na.rm = TRUE),
    median(adidas$margen_operativo, na.rm = TRUE),
    sd(adidas$margen_operativo, na.rm = TRUE),
    max(adidas$margen_operativo, na.rm = TRUE) - min(adidas$margen_operativo, na.rm = TRUE),
    sd(adidas$margen_operativo, na.rm = TRUE) / mean(adidas$margen_operativo, na.rm = TRUE)
  )
)

knitr::kable(resumen_margen, digits = 4, caption = "Tabla 2. Margen promedio y variabilidad") %>%
  kable_styling(full_width = FALSE)
Tabla 2. Margen promedio y variabilidad
Medida Valor
Media 0.4230
Mediana 0.4100
Desviacion estandar 0.0972
Rango 0.7000
Coeficiente de variacion 0.2298

La media resume la rentabilidad promedio, mientras que la desviacion estandar, el rango y el coeficiente de variacion muestran si esa rentabilidad es estable o presenta diferencias importantes entre observaciones.

Productos mas rentables

En esta parte se busca identificar que productos parecen mas rentables, considerando tanto utilidad operativa total como margen operativo promedio.

rent_producto <- adidas %>%
  group_by(producto) %>%
  summarise(
    utilidad_total = sum(utilidad_operativa, na.rm = TRUE),
    utilidad_promedio = mean(utilidad_operativa, na.rm = TRUE),
    margen_promedio = mean(margen_operativo, na.rm = TRUE),
    .groups = "drop"
  ) %>%
  arrange(desc(utilidad_total))

knitr::kable(rent_producto, digits = 2, caption = "Tabla 3. Rentabilidad por producto") %>%
  kable_styling(full_width = FALSE)
Tabla 3. Rentabilidad por producto
producto utilidad_total utilidad_promedio margen_promedio
Men’s Street Footwear 11629046 7223.01 0.45
Women’s Apparel 9685221 6023.15 0.44
Men’s Athletic Footwear 7437457 4619.54 0.40
Women’s Street Footwear 6494017 4038.57 0.41
Men’s Apparel 6381405 3973.48 0.41
Women’s Athletic Footwear 5597822 3485.57 0.42
grafico_producto_utilidad <- rent_producto %>%
  plot_ly(x = ~reorder(producto, utilidad_total), y = ~utilidad_total, type = "bar",
          marker = list(color = "steelblue")) %>%
  layout(title = "Figura 5. Utilidad total por producto",
         xaxis = list(title = "Producto"),
         yaxis = list(title = "Utilidad total"))

grafico_producto_utilidad
grafico_producto_margen <- rent_producto %>%
  plot_ly(x = ~reorder(producto, margen_promedio), y = ~margen_promedio, type = "bar",
          marker = list(color = "darkseagreen")) %>%
  layout(title = "Figura 6. Margen promedio por producto",
         xaxis = list(title = "Producto"),
         yaxis = list(title = "Margen promedio"))

grafico_producto_margen

Comparar utilidad total y margen promedio permite diferenciar productos que destacan por escala de aquellos que sobresalen por eficiencia relativa.

Ciudades mas rentables

Dado que existen muchas ciudades, se prioriza el analisis de las 10 con mayor utilidad total y de las 10 con mayor margen promedio.

rent_ciudad <- adidas %>%
  group_by(ciudad) %>%
  summarise(
    utilidad_total = sum(utilidad_operativa, na.rm = TRUE),
    utilidad_promedio = mean(utilidad_operativa, na.rm = TRUE),
    margen_promedio = mean(margen_operativo, na.rm = TRUE),
    .groups = "drop"
  ) %>%
  arrange(desc(utilidad_total))

knitr::kable(head(rent_ciudad, 10), digits = 2, caption = "Tabla 4. Top 10 ciudades por utilidad total") %>%
  kable_styling(full_width = FALSE)
Tabla 4. Top 10 ciudades por utilidad total
ciudad utilidad_total utilidad_promedio margen_promedio
New York 2114664 9790.11 0.40
Charleston 2024086 7028.08 0.44
San Francisco 1581993 7324.04 0.36
Miami 1579388 10967.97 0.43
Portland 1575861 4377.39 0.41
Houston 1494772 6920.24 0.44
New Orleans 1424390 6594.40 0.45
Los Angeles 1378158 6380.36 0.42
Birmingham 1368206 6334.29 0.55
Orlando 1342207 6213.92 0.36
top_ciudad_utilidad <- rent_ciudad %>%
  slice_max(order_by = utilidad_total, n = 10)

grafico_ciudad_utilidad <- top_ciudad_utilidad %>%
  plot_ly(x = ~reorder(ciudad, utilidad_total), y = ~utilidad_total, type = "bar",
          marker = list(color = "tomato")) %>%
  layout(title = "Figura 7. Top 10 ciudades por utilidad total",
         xaxis = list(title = "Ciudad"),
         yaxis = list(title = "Utilidad total"))

grafico_ciudad_utilidad
top_ciudad_margen <- rent_ciudad %>%
  slice_max(order_by = margen_promedio, n = 10)

grafico_ciudad_margen <- top_ciudad_margen %>%
  plot_ly(x = ~reorder(ciudad, margen_promedio), y = ~margen_promedio, type = "bar",
          marker = list(color = "goldenrod")) %>%
  layout(title = "Figura 8. Top 10 ciudades por margen promedio",
         xaxis = list(title = "Ciudad"),
         yaxis = list(title = "Margen promedio"))

grafico_ciudad_margen

Este analisis permite distinguir ciudades estrategicas por volumen de utilidad y ciudades con mejor rentabilidad relativa.

Metodo de venta mas rentable

Ahora se analiza si el canal de venta influye en la rentabilidad.

rent_metodo <- adidas %>%
  group_by(metodo_venta) %>%
  summarise(
    utilidad_total = sum(utilidad_operativa, na.rm = TRUE),
    utilidad_promedio = mean(utilidad_operativa, na.rm = TRUE),
    margen_promedio = mean(margen_operativo, na.rm = TRUE),
    ventas_totales = sum(ventas_total, na.rm = TRUE),
    .groups = "drop"
  )

knitr::kable(rent_metodo, digits = 2, caption = "Tabla 5. Rentabilidad por metodo de venta") %>%
  kable_styling(full_width = FALSE)
Tabla 5. Rentabilidad por metodo de venta
metodo_venta utilidad_total utilidad_promedio margen_promedio ventas_totales
In-store 12759129 7332.83 0.36 35664375
Online 19552538 3999.29 0.46 44965657
Outlet 14913301 4939.81 0.39 39536618
grafico_metodo_utilidad <- rent_metodo %>%
  plot_ly(x = ~metodo_venta, y = ~utilidad_total, type = "bar",
          marker = list(color = "purple")) %>%
  layout(title = "Figura 9. Utilidad total por metodo de venta",
         xaxis = list(title = "Metodo de venta"),
         yaxis = list(title = "Utilidad total"))

grafico_metodo_utilidad
grafico_metodo_margen <- rent_metodo %>%
  plot_ly(x = ~metodo_venta, y = ~margen_promedio, type = "bar",
          marker = list(color = "darkorange")) %>%
  layout(title = "Figura 10. Margen promedio por metodo de venta",
         xaxis = list(title = "Metodo de venta"),
         yaxis = list(title = "Margen promedio"))

grafico_metodo_margen

El metodo de venta es una variable especialmente util para la toma de decisiones, ya que permite identificar si un canal destaca por utilidad total, por margen promedio o por ambas dimensiones.

Relacion entre ventas y utilidad

Finalmente, se analiza si existe relacion entre ventas y utilidad operativa.

cor_ventas_utilidad <- cor(adidas$ventas_total, adidas$utilidad_operativa, use = "complete.obs")
cor_ventas_utilidad
## [1] 0.9353717
ggplotly(
  ggplot(adidas, aes(x = ventas_total, y = utilidad_operativa)) +
    geom_point(color = "lightblue", alpha = 0.8, size = 2) +
    geom_smooth(method = "lm", color = "grey", se = TRUE) +
    labs(
      title = paste("Figura 11. Relacion entre ventas y utilidad operativa\nCoef. de correlacion:", 
                    round(cor(adidas$ventas_total, adidas$utilidad_operativa, use = "complete.obs"), 2)),
      x = "Ventas totales",
      y = "Utilidad operativa"
    ) +
    theme_minimal()
)

Si la correlacion es positiva y alta, ello sugiere que un mayor volumen de ventas tiende a estar asociado con una mayor utilidad operativa. Si la dispersion es alta, entonces otros factores como el margen operativo tambien influyen de manera importante.

Conclusiones

A partir del analisis realizado, se pueden extraer varias conclusiones relevantes:

  • La utilidad operativa y el margen operativo presentan una distribucion que permite identificar dispersion y posibles diferencias importantes entre observaciones.
  • El margen promedio debe interpretarse junto con su desviacion estandar, ya que la variabilidad es clave para entender la estabilidad de la rentabilidad.
  • El analisis por producto permite identificar lineas fuertes tanto por escala de utilidad como por eficiencia relativa.
  • El analisis por ciudad ayuda a detectar mercados estrategicos y diferencias geograficas en la rentabilidad.
  • El metodo de venta constituye una palanca clave para la toma de decisiones comerciales.
  • La relacion entre ventas y utilidad permite evaluar hasta que punto el crecimiento comercial se traduce en beneficios operativos.

Recomendaciones

Con base en los resultados del analisis, se recomienda:

  • Priorizar productos con alta utilidad total y alto margen promedio.
  • Fortalecer ciudades que combinen escala de utilidad y buena rentabilidad relativa.
  • Potenciar el metodo de venta que muestre el mejor equilibrio entre ventas, utilidad y margen.
  • Profundizar en analisis posteriores sobre combinaciones como producto-metodo de venta o producto-ciudad.