1 Introduccion

Este informe presenta un analisis descriptivo y diagnostico enfocado en la rentabilidad de Adidas. El objetivo es estudiar como se distribuyen la utilidad operativa y el margen operativo, identificar que productos, ciudades y metodos de venta parecen mas rentables, y evaluar si existe una relacion entre ventas totales y utilidad operativa.

Con el fin de mantener el analisis alineado con las preguntas del caso, el estudio se concentra en las siguientes variables: utilidad_operativa, margen_operativo, ventas_total, producto, ciudad y metodo_venta.

2 Objetivo general

Analizar el comportamiento de la rentabilidad de Adidas a partir de la utilidad operativa, el margen operativo, las ventas totales, el producto, la ciudad y el metodo de venta.

3 Objetivos especificos

  • Describir la distribucion de la utilidad operativa y del margen operativo.
  • Calcular el margen promedio y su variabilidad.
  • Identificar que productos, ciudades y metodos de venta parecen mas rentables.
  • Evaluar la relacion entre ventas totales y utilidad operativa.
  • Formular recomendaciones basadas en la evidencia obtenida.

4 Librerias

library(readxl)
library(dplyr)
library(ggplot2)
library(janitor)
library(scales)

5 Carga de datos

En esta seccion se carga la base de datos y se realiza una revision basica de su estructura. No se desarrolla una depuracion extensa, ya que el analisis se enfoca principalmente en la interpretacion de la rentabilidad.

# Si el archivo esta en la misma carpeta que este .Rmd, deja esta linea igual.
# Si no, reemplaza por la ruta completa del archivo Excel.
archivo_excel <- "DatosCaso111.xlsx"

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)
  )

str(adidas)
## tibble [9,648 × 11] (S3: tbl_df/tbl/data.frame)
##  $ distribuidor      : chr [1:9648] "Foot Locker" "Foot Locker" "Foot Locker" "Foot Locker" ...
##  $ region            : chr [1:9648] "Northeast" "Northeast" "Northeast" "Northeast" ...
##  $ estado            : chr [1:9648] "New York" "New York" "New York" "New York" ...
##  $ ciudad            : Factor w/ 52 levels "Albany","Albuquerque",..: 36 36 36 36 36 36 36 36 36 36 ...
##  $ producto          : Factor w/ 6 levels "Men's Apparel",..: 3 2 6 5 1 4 3 2 6 5 ...
##  $ precio_unidad     : num [1:9648] 50 50 40 45 60 50 50 50 40 45 ...
##  $ unidades_vendidas : num [1:9648] 1200 1000 1000 850 900 1000 1250 900 950 825 ...
##  $ ventas_total      : num [1:9648] 60000 50000 40000 38250 54000 ...
##  $ utilidad_operativa: num [1:9648] 30000 15000 14000 13388 16200 ...
##  $ margen_operativo  : num [1:9648] 0.5 0.3 0.35 0.35 0.3 0.25 0.5 0.3 0.35 0.35 ...
##  $ metodo_venta      : Factor w/ 3 levels "In-store","Online",..: 1 1 1 1 1 1 1 3 3 3 ...
names(adidas)
##  [1] "distribuidor"       "region"             "estado"            
##  [4] "ciudad"             "producto"           "precio_unidad"     
##  [7] "unidades_vendidas"  "ventas_total"       "utilidad_operativa"
## [10] "margen_operativo"   "metodo_venta"

6 Variables del analisis

El analisis se concentra en las variables con mayor relevancia para responder las preguntas del caso:

  • utilidad_operativa
  • margen_operativo
  • ventas_total
  • producto
  • ciudad
  • metodo_venta

7 Distribucion de la utilidad operativa y del margen operativo

Esta primera parte busca responder como se distribuyen la utilidad operativa y el margen operativo. Para ello se utilizan estadisticas descriptivas, histogramas y boxplots.

resumen_rentabilidad <- data.frame(
  variable = c("utilidad_operativa", "margen_operativo"),
  minimo = c(min(adidas$utilidad_operativa, na.rm = TRUE),
             min(adidas$margen_operativo, na.rm = TRUE)),
  media = c(mean(adidas$utilidad_operativa, na.rm = TRUE),
            mean(adidas$margen_operativo, na.rm = TRUE)),
  mediana = c(median(adidas$utilidad_operativa, na.rm = TRUE),
              median(adidas$margen_operativo, na.rm = TRUE)),
  maximo = c(max(adidas$utilidad_operativa, na.rm = TRUE),
             max(adidas$margen_operativo, na.rm = TRUE)),
  desv_estandar = c(sd(adidas$utilidad_operativa, na.rm = TRUE),
                    sd(adidas$margen_operativo, na.rm = TRUE))
)

print(resumen_rentabilidad)
##             variable minimo        media mediana  maximo desv_estandar
## 1 utilidad_operativa    0.0 4894.7935012 3262.98 39000.0 4866.46437207
## 2   margen_operativo    0.1    0.4229913    0.41     0.8    0.09719742
ggplot(adidas, aes(x = utilidad_operativa)) +
  geom_histogram(bins = 30, fill = "steelblue", color = "white") +
  scale_x_continuous(labels = comma) +
  labs(
    title = "Distribucion de la utilidad operativa",
    x = "Utilidad operativa",
    y = "Frecuencia"
  ) +
  theme_minimal()

ggplot(adidas, aes(y = utilidad_operativa)) +
  geom_boxplot(fill = "tomato") +
  scale_y_continuous(labels = comma) +
  labs(
    title = "Boxplot de utilidad operativa",
    y = "Utilidad operativa"
  ) +
  theme_minimal()

ggplot(adidas, aes(x = margen_operativo)) +
  geom_histogram(bins = 30, fill = "darkseagreen", color = "white") +
  labs(
    title = "Distribucion del margen operativo",
    x = "Margen operativo",
    y = "Frecuencia"
  ) +
  theme_minimal()

ggplot(adidas, aes(y = margen_operativo)) +
  geom_boxplot(fill = "gold") +
  labs(
    title = "Boxplot del margen operativo",
    y = "Margen operativo"
  ) +
  theme_minimal()

La comparacion entre media y mediana permite evaluar si la distribucion de estas variables es simetrica o si esta influenciada por valores extremos. Adicionalmente, los boxplots permiten identificar posibles observaciones atipicas y el grado de dispersion de la rentabilidad.

8 Margen promedio y variabilidad

Para responder cual es el margen promedio y que tan variable es, se calcula un resumen especifico del margen operativo.

margen_resumen <- data.frame(
  media = mean(adidas$margen_operativo, na.rm = TRUE),
  mediana = median(adidas$margen_operativo, na.rm = TRUE),
  desv_estandar = sd(adidas$margen_operativo, na.rm = TRUE),
  rango = max(adidas$margen_operativo, na.rm = TRUE) - min(adidas$margen_operativo, na.rm = TRUE),
  coef_variacion = sd(adidas$margen_operativo, na.rm = TRUE) / mean(adidas$margen_operativo, na.rm = TRUE)
)

print(margen_resumen)
##       media mediana desv_estandar rango coef_variacion
## 1 0.4229913    0.41    0.09719742   0.7      0.2297859

El margen promedio resume la rentabilidad relativa general de la base. Sin embargo, para interpretar si esta rentabilidad es estable o heterogenea, se requiere observar tambien la desviacion estandar, el rango y el coeficiente de variacion.

9 Productos mas rentables

En esta seccion se analiza la rentabilidad por producto. Para cada producto se calcula la utilidad operativa total, la utilidad operativa promedio y el 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),
    n = n(),
    .groups = "drop"
  ) %>%
  arrange(desc(utilidad_total))

print(rent_producto)
## # A tibble: 6 × 5
##   producto                utilidad_total utilidad_promedio margen_promedio     n
##   <fct>                            <dbl>             <dbl>           <dbl> <int>
## 1 Men's Street Footwear        11629046.             7223.           0.446  1610
## 2 Women's Apparel               9685221.             6023.           0.441  1608
## 3 Men's Athletic Footwear       7437457.             4620.           0.403  1610
## 4 Women's Street Footwear       6494017.             4039.           0.410  1608
## 5 Men's Apparel                 6381405.             3973.           0.413  1606
## 6 Women's Athletic Footw…       5597822.             3486.           0.424  1606
ggplot(rent_producto, aes(x = reorder(producto, utilidad_total), y = utilidad_total)) +
  geom_col(fill = "steelblue") +
  coord_flip() +
  scale_y_continuous(labels = comma) +
  labs(
    title = "Utilidad total por producto",
    x = "Producto",
    y = "Utilidad total"
  ) +
  theme_minimal()

ggplot(rent_producto, aes(x = reorder(producto, margen_promedio), y = margen_promedio)) +
  geom_col(fill = "darkseagreen") +
  coord_flip() +
  labs(
    title = "Margen promedio por producto",
    x = "Producto",
    y = "Margen promedio"
  ) +
  theme_minimal()

El analisis por producto permite distinguir entre lineas que aportan mas utilidad total al negocio y lineas que destacan por su eficiencia relativa. Un producto puede liderar por escala, por margen, o por ambas.

10 Ciudades mas rentables

Dado que el numero de ciudades puede ser elevado, se presentan rankings enfocados en las mas relevantes.

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),
    n = n(),
    .groups = "drop"
  ) %>%
  arrange(desc(utilidad_total))

print(head(rent_ciudad, 10))
## # A tibble: 10 × 5
##    ciudad        utilidad_total utilidad_promedio margen_promedio     n
##    <fct>                  <dbl>             <dbl>           <dbl> <int>
##  1 New York            2114664.             9790.           0.396   216
##  2 Charleston          2024086.             7028.           0.445   288
##  3 San Francisco       1581993.             7324.           0.358   216
##  4 Miami               1579388.            10968.           0.429   144
##  5 Portland            1575861.             4377.           0.408   360
##  6 Houston             1494772.             6920.           0.436   216
##  7 New Orleans         1424390.             6594.           0.447   216
##  8 Los Angeles         1378158.             6380.           0.416   216
##  9 Birmingham          1368206.             6334.           0.554   216
## 10 Orlando             1342207.             6214.           0.364   216
top_ciudad_utilidad <- rent_ciudad %>%
  slice_max(order_by = utilidad_total, n = 10)

ggplot(top_ciudad_utilidad, aes(x = reorder(ciudad, utilidad_total), y = utilidad_total)) +
  geom_col(fill = "tomato") +
  coord_flip() +
  scale_y_continuous(labels = comma) +
  labs(
    title = "Top 10 ciudades por utilidad total",
    x = "Ciudad",
    y = "Utilidad total"
  ) +
  theme_minimal()

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

ggplot(top_ciudad_margen, aes(x = reorder(ciudad, margen_promedio), y = margen_promedio)) +
  geom_col(fill = "goldenrod") +
  coord_flip() +
  labs(
    title = "Top 10 ciudades por margen promedio",
    x = "Ciudad",
    y = "Margen promedio"
  ) +
  theme_minimal()

La comparacion por ciudad permite identificar mercados geograficos clave. Algunas ciudades pueden destacar por el volumen de utilidad total que aportan, mientras que otras pueden sobresalir por mantener un margen promedio superior.

11 Metodo de venta mas rentable

En esta seccion se analiza si ciertos metodos de venta presentan mejores resultados de 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),
    n = n(),
    .groups = "drop"
  ) %>%
  arrange(desc(utilidad_total))

print(rent_metodo)
## # A tibble: 3 × 6
##   metodo_venta utilidad_total utilidad_promedio margen_promedio ventas_totales
##   <fct>                 <dbl>             <dbl>           <dbl>          <dbl>
## 1 Online            19552538.             3999.           0.464       44965657
## 2 Outlet            14913301.             4940.           0.395       39536618
## 3 In-store          12759129.             7333.           0.356       35664375
## # ℹ 1 more variable: n <int>
ggplot(rent_metodo, aes(x = reorder(metodo_venta, utilidad_total), y = utilidad_total)) +
  geom_col(fill = "purple") +
  coord_flip() +
  scale_y_continuous(labels = comma) +
  labs(
    title = "Utilidad total por metodo de venta",
    x = "Metodo de venta",
    y = "Utilidad total"
  ) +
  theme_minimal()

ggplot(rent_metodo, aes(x = reorder(metodo_venta, margen_promedio), y = margen_promedio)) +
  geom_col(fill = "darkorange") +
  coord_flip() +
  labs(
    title = "Margen promedio por metodo de venta",
    x = "Metodo de venta",
    y = "Margen promedio"
  ) +
  theme_minimal()

El metodo de venta representa un hallazgo especialmente util para la toma de decisiones, ya que permite identificar si Adidas obtiene mejores resultados a traves de ciertos canales comerciales.

12 Relacion entre ventas y utilidad

Para responder si existe relacion entre ventas y utilidad, se calcula la correlacion entre ambas variables y se utiliza un grafico de dispersion con linea de tendencia.

cor_ventas_utilidad <- cor(adidas$ventas_total, adidas$utilidad_operativa, use = "complete.obs")
cor_ventas_utilidad
## [1] 0.9353717
ggplot(adidas, aes(x = ventas_total, y = utilidad_operativa)) +
  geom_point(alpha = 0.5, color = "steelblue") +
  geom_smooth(method = "lm", se = FALSE, color = "red") +
  scale_x_continuous(labels = comma) +
  scale_y_continuous(labels = comma) +
  labs(
    title = "Relacion entre ventas y utilidad operativa",
    x = "Ventas totales",
    y = "Utilidad operativa"
  ) +
  theme_minimal()

La correlacion y el grafico de dispersion permiten evaluar si un mayor volumen de ventas suele estar asociado con una mayor utilidad operativa. Si la relacion es positiva y clara, ello sugiere que ambos indicadores se mueven en la misma direccion. Si la dispersion es alta, entonces otros factores, como el margen operativo, tambien juegan un papel importante.

13 Hallazgos principales

A partir del analisis enfocado en rentabilidad, es posible identificar diferencias relevantes entre productos, ciudades y metodos de venta. La comparacion entre utilidad total y margen promedio permite distinguir entre segmentos que sobresalen por escala y segmentos que destacan por eficiencia relativa. Adicionalmente, la relacion entre ventas y utilidad aporta evidencia sobre el papel del volumen comercial en la generacion de beneficios.

14 Conclusiones y recomendaciones

Con base en los resultados obtenidos, se recomienda:

  • Priorizar los productos que combinen alta utilidad total y alto margen promedio.
  • Fortalecer las ciudades que aporten mayor utilidad total y revisar aquellas con baja rentabilidad relativa.
  • Impulsar el metodo de venta que muestre el mejor equilibrio entre utilidad y margen.
  • Revisar segmentos con alta dispersion en utilidad o margen, ya que pueden reflejar heterogeneidad operativa.
  • Profundizar en futuros analisis con combinaciones como producto-metodo de venta o producto-ciudad.

En conclusion, un analisis enfocado en utilidad operativa, margen operativo, ciudad, producto y metodo de venta permite obtener una vision mas precisa sobre las fuentes de rentabilidad de Adidas y ofrece una base clara para orientar decisiones comerciales.