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.
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.
library(readxl)
library(dplyr)
library(ggplot2)
library(janitor)
library(scales)
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"
El analisis se concentra en las variables con mayor relevancia para responder las preguntas del caso:
utilidad_operativamargen_operativoventas_totalproductociudadmetodo_ventaEsta 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.
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.
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.
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.
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.
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.
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.
Con base en los resultados obtenidos, se recomienda:
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.