warning = FALSE)
Adidas, es una compañía que se dedica a la comercialización de artículos Deportivos como prendas de vestir, calzado y accesorios entre otros, es una empresa de reconocimiento mundial, debido a su expansión a nivel global.
Fue creada en 1949 por Adi Dassler porque quería marcar la diferencia en el rendimiento de los atletas; a través del tiempo, Adidas ha tenido un impacto no solo en el deporte y los atletas, sino también en la moda, la música, la cultura y mucho más.
El análisis financiero de Adidas es fundamental para evaluar el desempeño comercial y financiero de distintas líneas de productos en el mercado, identificar tendencias y comprender el comportamiento de las ventas y la rentabilidad de la compañía. En este documento, realizaremos un análisis de algunas variables financieras clave de la compañía. Aplicaremos técnicas de estadística descriptiva y visualización de datos para detectar patrones, anomalías y relaciones entre variables, facilitando una mejor interpretación de la información contenida en la base de datos.
Objetivo
Traducir los datos en información accionable que respalde la toma de decisiones: identificar qué distribuidores, regiones, productos y canales generan mayor rentabilidad operativa y evaluar la eficiencia comercial a través de indicadores clave como ventas totales, utilidad operativa y margen operativo. Este análisis es de utilidad para la gerencia comercial y financiera de la compañía, ya que brindara herramientas para establecer estrategias de crecimiento y mejora.
El análisis exploratorio de datos (EDA) es un paso clave para comprender la información del comportamiento de las ventas y la rentabilidad de la Compañía Adidas en Estados Unidos, para identificar patrones y evaluar la distribución de las variables.
A través de estadísticas descriptivas y visualización de datos con R, identificaremos tendencias, relaciones entre variables y posibles anomalías, proporcionando una base sólida para interpretar el desempeño comercial y financiero de la compañia.
Limitaciones de la base de datos
La naturaleza de la base de datos, presenta restricciones:
📌 Al no contar con series de tiempos, los datos no permiten establecer patrones de crecimiento.
📌 La información presenta un sesgo geográfico, ya que los datos corresponden a un solo país, el análisis no permite comparativos internacionales.
PASO 1. Instalar y cargar librerias
# Cargar librerías necesarias
library(readxl)
library(dplyr)
library(ggplot2)
library(plotly)
library(knitr)
library(kableExtra)
library(tidyr)
library(RecordLinkage)
library(leaflet)
library(htmltools)
library(scales)
library(gt)
PASO 2: Cargar la base de datos
# Cargar datos desde el archivo Excel
datos <- read_excel("DatosCaso1.xlsx")
# Ver las primeras filas de los datos
class(datos)
## [1] "tbl_df" "tbl" "data.frame"
colnames(datos)
## [1] "distribuidor" "region" "estado"
## [4] "ciudad" "producto" "precio_unidad"
## [7] "unidades_vendidas" "ventas_total" "utilidad_operativa"
## [10] "margen_operativo" "metodo_venta"
head(datos)
| distribuidor | region | estado | ciudad | producto | precio_unidad | unidades_vendidas | ventas_total | utilidad_operativa | margen_operativo | metodo_venta |
|---|---|---|---|---|---|---|---|---|---|---|
| Foot Locker | Northeast | New York | New York | Men’s Street Footwear | 50 | 1200 | 60000 | 30000.0 | 0.50 | In-store |
| Foot Locker | Northeast | New York | New York | Men’s Athletic Footwear | 50 | 1000 | 50000 | 15000.0 | 0.30 | In-store |
| Foot Locker | Northeast | New York | New York | Women’s Street Footwear | 40 | 1000 | 40000 | 14000.0 | 0.35 | In-store |
| Foot Locker | Northeast | New York | New York | Women’s Athletic Footwear | 45 | 850 | 38250 | 13387.5 | 0.35 | In-store |
| Foot Locker | Northeast | New York | New York | Men’s Apparel | 60 | 900 | 54000 | 16200.0 | 0.30 | In-store |
| 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)
## [1] "distribuidor" "region" "estado"
## [4] "ciudad" "producto" "precio_unidad"
## [7] "unidades_vendidas" "ventas_total" "utilidad_operativa"
## [10] "margen_operativo" "metodo_venta"
El análisis descriptivo de los datos permite examinar el comportamiento de las ventas y los márgenes operativos en función de la región, el distribuidor, el método de venta y el tipo de producto. A partir de este diagnóstico, surgen interrogantes clave que serán evaluados mediante indicadores estadísticos. Estas métricas permitirán analizar las distintas combinaciones de variables para determinar qué estrategia comerciales deberia aplicar la compañía.
Resumen general
A continuación se presenta un resumen general donde se pueden evidenciar la cantidad total de unidades vendidas, las ventas totales, la utilidad operativa total y el margen operativo obtenido, de acuerdo a la información contenida en la base de datos.
## Resumen general
tabla_general <- datos %>%
summarise(
Registros = n(),
Precio_promedio = mean(precio_unidad, na.rm = TRUE),
Unidades_vendidas = sum(unidades_vendidas, na.rm = TRUE),
Ventas_totales = sum(ventas_total, na.rm = TRUE),
Utilidad_operativa = sum(utilidad_operativa, na.rm = TRUE),
Margen_operativo = mean(margen_operativo, na.rm = TRUE)
)
tabla_general %>%
gt() %>%
fmt_number(
columns = Registros,
decimals = 0,
use_seps = TRUE
) %>%
fmt_currency(
columns = c(Precio_promedio, Ventas_totales, Utilidad_operativa),
currency = "USD",
decimals = 2
) %>%
fmt_number(
columns = Unidades_vendidas,
decimals = 0,
use_seps = TRUE
) %>%
fmt_percent(
columns = Margen_operativo,
decimals = 1
) %>%
cols_label(
Registros = "Registros",
Precio_promedio = "Precio promedio (USD)",
Unidades_vendidas = "Unidades vendidas (unid.)",
Ventas_totales = "Ventas totales (USD)",
Utilidad_operativa = "Utilidad operativa (USD)",
Margen_operativo = "Margen operativo"
) %>%
tab_header(
title = "Tabla 1. Resumen general"
) %>%
tab_style(
style = cell_text(
color = "#1F4E79",
weight = "bold"
),
locations = cells_title(groups = "title")
) %>%
tab_options(
table.font.size = px(11),
heading.title.font.size = px(14),
data_row.padding = px(3)
)
| Tabla 1. Resumen general | |||||
| Registros | Precio promedio (USD) | Unidades vendidas (unid.) | Ventas totales (USD) | Utilidad operativa (USD) | Margen operativo |
|---|---|---|---|---|---|
| 9,644 | $45.22 | 2,478,861 | $120,166,650.00 | $47,224,967.70 | 42.3% |
La tabla 1. Presenta un panorama general del desempeño comercial y financiero de Adidas. Se identifican 9.644 registros, correspondientes a 2.478.861 unidades vendidas y ventas totales por $120.166.650. La utilidad operativa alcanzó $47.224.968, mientras que el margen operativo promedio fue de 42,3%. El precio promedio por unidad fue de $45,22. Estos resultados constituyen una primera aproximación al desempeño de la empresa, que posteriormente será analizada por región, producto, distribuidor y método de venta para identificar los factores asociados al comportamiento de las ventas y la rentabilidad.
Variables Cualitativas
## Se calcula la cantidad de distribuidores, regiones, estados, ciudades, productos y metodo de venta- como variables cualitativas y se colocan los datos en una tabla o dataframe
resultado_prom <- data.frame(
Distribuidor = length(unique(datos$distribuidor)),
Región = length(unique(datos$region)),
Estado = length(unique(datos$estado)),
Ciudad = length(unique(datos$ciudad)),
Producto = length(unique(datos$producto)),
`Método de venta` = length(unique(datos$metodo_venta))
)
resultado_prom %>%
gt() %>%
tab_header(
title = "Tabla 2. Cantidad de alternativas por variable"
) %>%
tab_style(
style = cell_text(
color = "#1F4E79",
weight = "bold"
),
locations = cells_title(groups = "title")
) %>%
tab_options(
table.font.size = px(11),
heading.title.font.size = px(14),
data_row.padding = px(3)
)
| Tabla 2. Cantidad de alternativas por variable | |||||
| Distribuidor | Región | Estado | Ciudad | Producto | Método.de.venta |
|---|---|---|---|---|---|
| 6 | 5 | 50 | 52 | 6 | 3 |
En la tabla 2. Se pueden evidenciar el número de alternativas que presenta cada variable cualitativa en la base de datos, este resultado permite conocer la estructura y diversidad de las variables y facilita la selección de aquellas que resultan más relevantes para el análisis. En este caso, se optará por analizar las variables de distribuidor, región, producto y método de venta, debido a que permiten realizar comparaciones relevantes sobre el desempeño comercial y financiero de la Compañía.
# se calcula un resumen estadístico de las variables financieras para conocer su comportamiento y variabilidad teniendo en cuenta todas las observaciones de la base de datos.
tabla_descriptivos <- data.frame(
Variable = c(
"Precio unitario",
"Unidades vendidas",
"Ventas totales",
"Utilidad operativa",
"Margen operativo"
),
Unidad = c(
"USD/unidad",
"Unidades",
"USD",
"USD",
"%"
),
Minimo = c(
min(datos$precio_unidad, na.rm = TRUE),
min(datos$unidades_vendidas, na.rm = TRUE),
min(datos$ventas_total, na.rm = TRUE),
min(datos$utilidad_operativa, na.rm = TRUE),
min(datos$margen_operativo, na.rm = TRUE) * 100
),
Q1 = c(
quantile(datos$precio_unidad, 0.25, na.rm = TRUE),
quantile(datos$unidades_vendidas, 0.25, na.rm = TRUE),
quantile(datos$ventas_total, 0.25, na.rm = TRUE),
quantile(datos$utilidad_operativa, 0.25, na.rm = TRUE),
quantile(datos$margen_operativo, 0.25, na.rm = TRUE) * 100
),
Mediana = c(
median(datos$precio_unidad, na.rm = TRUE),
median(datos$unidades_vendidas, na.rm = TRUE),
median(datos$ventas_total, na.rm = TRUE),
median(datos$utilidad_operativa, na.rm = TRUE),
median(datos$margen_operativo, na.rm = TRUE) * 100
),
Media = c(
mean(datos$precio_unidad, na.rm = TRUE),
mean(datos$unidades_vendidas, na.rm = TRUE),
mean(datos$ventas_total, na.rm = TRUE),
mean(datos$utilidad_operativa, na.rm = TRUE),
mean(datos$margen_operativo, na.rm = TRUE) * 100
),
Q3 = c(
quantile(datos$precio_unidad, 0.75, na.rm = TRUE),
quantile(datos$unidades_vendidas, 0.75, na.rm = TRUE),
quantile(datos$ventas_total, 0.75, na.rm = TRUE),
quantile(datos$utilidad_operativa, 0.75, na.rm = TRUE),
quantile(datos$margen_operativo, 0.75, na.rm = TRUE) * 100
),
Maximo = c(
max(datos$precio_unidad, na.rm = TRUE),
max(datos$unidades_vendidas, na.rm = TRUE),
max(datos$ventas_total, na.rm = TRUE),
max(datos$utilidad_operativa, na.rm = TRUE),
max(datos$margen_operativo, na.rm = TRUE) * 100
)
)
# Redondear valores
tabla_descriptivos[, 3:8] <-
lapply(tabla_descriptivos[, 3:8], function(x) round(x, 1))
# Mostrar tabla
tabla_descriptivos %>%
gt() %>%
tab_header(
title = "Tabla 3. Estadísticos descriptivos de las variables numéricas"
) %>%
tab_style(
style = cell_text(
color = "#1F4E79",
weight = "bold"
),
locations = cells_title(groups = "title")
) %>%
fmt_number(
columns = c(Minimo, Q1, Mediana, Media, Q3, Maximo),
decimals = 1,
use_seps = TRUE
) %>%
tab_options(
table.font.size = px(11),
heading.title.font.size = px(14),
data_row.padding = px(3)
)
| Tabla 3. Estadísticos descriptivos de las variables numéricas | |||||||
| Variable | Unidad | Minimo | Q1 | Mediana | Media | Q3 | Maximo |
|---|---|---|---|---|---|---|---|
| Precio unitario | USD/unidad | 7.0 | 35.0 | 45.0 | 45.2 | 55.0 | 110.0 |
| Unidades vendidas | Unidades | 6.0 | 106.0 | 176.0 | 257.0 | 350.0 | 1,275.0 |
| Ventas totales | USD | 160.0 | 4,068.0 | 7,812.0 | 12,460.2 | 15,872.0 | 82,500.0 |
| Utilidad operativa | USD | 75.2 | 1,754.0 | 3,264.0 | 4,896.8 | 6,193.8 | 39,000.0 |
| Margen operativo | % | 10.0 | 35.0 | 41.0 | 42.3 | 49.0 | 80.0 |
En la tabla 3. Se observa que el precio unitario presenta un promedio de $45,2, mientras que las unidades vendidas alcanzan un promedio de 257 unidades. Las ventas totales y la utilidad operativa presentan medias superiores a sus respectivas medianas, lo que indica la existencia de registros con valores elevados que influyen en estos promedios. En cuanto al margen operativo, la mediana es del 41% y el promedio del 42,3%, con rangos entre 10% y 80%, evidenciando diferencias importantes en los niveles de rentabilidad.
# Seleccionar las variables para el análisis
datos_cor <- datos %>%
select(
precio_unidad,
unidades_vendidas,
ventas_total,
utilidad_operativa,
margen_operativo
)
# Calcular la matriz de correlación
matriz_cor <- cor(datos_cor, use = "complete.obs")
# Convertir la matriz a formato largo
matriz_larga <- as.data.frame(matriz_cor) %>%
mutate(variable1 = rownames(.)) %>%
pivot_longer(
cols = -variable1,
names_to = "variable2",
values_to = "correlacion"
)
# Orden de las variables
orden_variables <- c(
"precio_unidad",
"unidades_vendidas",
"ventas_total",
"utilidad_operativa",
"margen_operativo"
)
# Nombres para mostrar en el gráfico
nombres_variables <- c(
"precio_unidad" = "Precio unitario",
"unidades_vendidas" = "Unidades vendidas",
"ventas_total" = "Ventas totales",
"utilidad_operativa" = "Utilidad operativa",
"margen_operativo" = "Margen operativo"
)
# Preparar datos y conservar solo la mitad inferior
matriz_larga <- matriz_larga %>%
mutate(
variable1 = factor(variable1, levels = orden_variables),
variable2 = factor(variable2, levels = orden_variables),
fila = as.numeric(variable1),
columna = as.numeric(variable2)
) %>%
filter(fila >= columna) %>%
mutate(
variable1 = recode(variable1, !!!nombres_variables),
variable2 = recode(variable2, !!!nombres_variables)
)
# Gráfico
ggplot(matriz_larga, aes(
x = variable2,
y = variable1,
fill = correlacion
)) +
geom_tile(color = "white", linewidth = 0.8) +
geom_text(
aes(label = sprintf("%.2f", correlacion)),
size = 4
) +
scale_fill_gradient2(
low = "#D73027",
mid = "white",
high = "#2166AC",
midpoint = 0,
limits = c(-1, 1),
name = "Correlación"
) +
labs(
title = "Figura 1. Matriz de correlación de variables cualitativas",
subtitle = "Relación entre precio, volumen de ventas, ventas y rentabilidad",
x = NULL,
y = NULL
) +
theme_minimal() +
theme(
plot.title = element_text(face = "bold", size = 14),
plot.subtitle = element_text(size = 11),
axis.text.x = element_text(
angle = 45,
hjust = 1,
size = 10
),
axis.text.y = element_text(size = 10),
legend.title = element_text(face = "bold"),
panel.grid = element_blank()
)
Interpretación Figura 1. Matriz de correlación.
Se evidencia una relación positiva y fuerte entre las ventas totales y las unidades vendidas (0,92), lo que indica que la cantidad de unidades comercializadas es una de las principales variables asociados al nivel de ventas. De igual manera, las ventas totales presentan una alta correlación con la utilidad operativa (0,94), evidenciando que mayores niveles de ventas están asociados con una mayor generación de utilidad.
Por otro lado, el margen operativo presenta correlaciones negativas con las unidades vendidas (-0,31) y las ventas totales (-0,30). Esto sugiere que un mayor volumen de ventas no necesariamente implica una mayor rentabilidad porcentual. Finalmente, la relación entre precio unitario y margen operativo es débil y negativa (-0,14), por lo que el precio no parece ser un factor determinante del margen.
En conclusión, el análisis evidencia que el crecimiento en las ventas totales está fuertemente relacionado con la generación de utilidad, pero no necesariamente con un mayor margen operativo. Esto justifica profundizar posteriormente en el análisis por región, producto y distribuidor, para identificar dónde se presentan las mayores diferencias de rentabilidad.
Histograma
A continuación se presenta un histograma de los precios de todos los pordutos comercializados para analizar en que valores se presenta la mayor concentracion de precios de venta.
ggplot(datos, aes(x = precio_unidad)) +
geom_histogram(
binwidth = 5,
fill = "#2166AC",
color = "white"
) +
labs(
title = "Figura 2. Distribución del precio por unidad",
subtitle = "Frecuencia de los precios registrados",
x = "Precio unidad (USD)",
y = "Frecuencia"
) +
scale_x_continuous(
breaks = seq(0, 110, by = 10),
labels = scales::dollar_format(prefix = "$")
) +
theme_minimal() +
theme(
plot.title = element_text(
face = "bold",
size = 14
),
plot.subtitle = element_text(
size = 11
),
axis.title = element_text(
face = "bold"
),
panel.grid.minor = element_blank()
)
Interpretación Figura 2.
La distribución del precio unitario se concentra principalmente alrededor de USD 45, con un rango de valores entre USD 7 y USD 110. Se observa una mayor frecuencia en los rangos intermedios y una menor concentración en los valores extremos. Este amplio rango de la variable precios podria ser por el tipo de producto vendido, su distribuidor, la region donde se vende e incluso por el metodo de venta, ya que uno de los metodos es el canal outlet, donde normalmente los productos son vendidos con descuentos.
Mapa de calor
## Mapa de calor del desempeño por región
tabla_region <- datos %>%
group_by(region) %>%
summarise(
Ventas_totales = sum(ventas_total, na.rm = TRUE),
Utilidad_operativa = sum(utilidad_operativa, na.rm = TRUE),
Margen_operativo = mean(margen_operativo, na.rm = TRUE)
)
tabla_heatmap <- tabla_region %>%
pivot_longer(
cols = c(Ventas_totales, Utilidad_operativa, Margen_operativo),
names_to = "Indicador",
values_to = "Valor"
) %>%
group_by(Indicador) %>%
mutate(
Valor_normalizado = (Valor - min(Valor)) /
(max(Valor) - min(Valor))
) %>%
ungroup()
ggplot(
tabla_heatmap,
aes(
x = Indicador,
y = region,
fill = Valor_normalizado
)
) +
geom_tile(color = "white") +
geom_text(
aes(
label = case_when(
Indicador == "Margen_operativo" ~
paste0(round(Valor * 100, 1), "%"),
Indicador == "Utilidad_operativa" ~
dollar(Valor, prefix = "$", accuracy = 1),
Indicador == "Ventas_totales" ~
dollar(Valor, prefix = "$", accuracy = 1)
)
),
size = 4
) +
scale_fill_gradient(
low = "#EAF2F8",
high = "#1F4E79"
) +
scale_x_discrete(
labels = c(
"Margen_operativo" = "Margen operativo",
"Utilidad_operativa" = "Utilidad operativa",
"Ventas_totales" = "Ventas totales"
)
) +
labs(
title = "Figura 3. Mapa de calor del desempeño por región",
x = "Indicador",
y = "Región",
fill = "Nivel relativo"
) +
theme_minimal()
Interpretación Figura 3.
La figura 3 permite identificar las diferencias existentes en el desempeño comercial y financiero de ADIDAS EE.UU. entre las regiones analizadas. Se observa que la región “West” presenta el mayor nivel de ventas totales y de utilidad operativa, sin embargo, presenta el margen operativo más bajo de todas las regiones analizadas.
Por otro lado, la región “South” presenta el mayor margen operativo con un 46.7% aunque sus ventas totales y utilidad operativa son inferiores a las de la región “West”. Este comportamiento evidencia que un mayor volumen de ventas no necesariamente se traduce en una mayor rentabilidad.
A partir de estos resultados, el análisis se concentrará en las regiones “West” y “South”, con el propósito de profundizar en los factores que explican las diferencias en su desempeño y determinar qué elementos asociados al producto, canal de venta y distribuidor pueden estar influyendo en sus niveles de rentabilidad
Gráfico de barras
datos %>%
filter(region %in% c("West", "South")) %>%
group_by(region, producto) %>%
summarise(
Ventas_totales = sum(ventas_total, na.rm = TRUE),
Utilidad_operativa = sum(utilidad_operativa, na.rm = TRUE),
.groups = "drop"
) %>%
mutate(
Margen_operativo = Utilidad_operativa / Ventas_totales
) %>%
# Calcular la brecha de margen entre South y West
group_by(producto) %>%
mutate(
margen_south = Margen_operativo[region == "South"],
margen_west = Margen_operativo[region == "West"],
brecha = margen_south - margen_west
) %>%
ungroup() %>%
# Ordenar productos de mayor a menor brecha
mutate(
producto = reorder(producto, brecha)
) %>%
ggplot(
aes(
x = producto,
y = Margen_operativo,
fill = region
)
) +
geom_col(
position = position_dodge(width = 0.9)
) +
# Etiquetas de porcentaje
geom_text(
aes(
label = scales::percent(
Margen_operativo,
accuracy = 0.1
)
),
position = position_dodge(width = 0.9),
vjust = -0.2,
size = 2.5
) +scale_fill_manual(
values = c(
"South" = "#1F4E79",
"West" = "skyblue"
)
)+
scale_y_continuous(
labels = scales::percent_format(accuracy = 1),
limits = c(0, 0.58)
) +
labs(
title = "Figura 4. Comparación del margen operativo por producto",
subtitle = "Brecha de rentabilidad entre South y West",
x = NULL,
y = "Margen operativo",
fill = "Región"
) +
theme_minimal() +
theme(
axis.text.x = element_text(
angle = 45,
hjust = 1,
vjust = 1,
size = 9
)
)
Interpretación Figura 4.
Se evidencia que la menor rentabilidad de West frente a South no se presenta de manera uniforme entre las categorías. La mayor brecha se observa en Women’s Apparel, donde South alcanza un margen operativo de 52,1%, frente al 29,8% registrado en West, representando una diferencia de 22,3 puntos porcentuales. También se identifican diferencias relevantes en Women’s Athletic Footwear (12,0 puntos porcentuales) y Men’s Athletic Footwear (9,4 puntos porcentuales). En contraste, Men’s Apparel presenta un comportamiento favorable para West, con un margen de 41,6% frente al 39,2% de South. Estos resultados sugieren que la diferencia de rentabilidad entre ambas regiones está asociada principalmente a determinadas categorías de productos y no a un comportamiento generalizado.
Gráfico de dispersion
# 1. Consolidar información por distribuidor
datos_west_distribuidor <- datos %>%
filter(region == "West") %>%
group_by(distribuidor) %>%
summarise(
ventas_totales = sum(ventas_total, na.rm = TRUE),
utilidad_operativa = sum(utilidad_operativa, na.rm = TRUE),
margen_operativo = utilidad_operativa / ventas_totales
)
# 2. Gráfico de dispersión
ggplot(datos_west_distribuidor,
aes(x = ventas_totales,
y = margen_operativo)) +
geom_point(
size = 5, color = "#1F4E79"
) +
geom_text(
aes(label = distribuidor),
vjust = -0.8,
nudge_y = 0.005,
size = 3
) +
scale_x_continuous(
labels = dollar_format(prefix = "$", big.mark = ",")
) +
scale_y_continuous(
labels = percent_format(accuracy = 1)
) +
labs(
title = "Figura 5. Ventas y margen operativo por distribuidor en West",
subtitle = "Relación entre volumen de ventas y rentabilidad",
x = "Ventas totales",
y = "Margen operativo"
) +
theme_minimal() +
theme(
plot.title = element_text(
face = "bold",
size = 14
),
plot.subtitle = element_text(
size = 11
),
axis.title = element_text(
face = "bold"
),
panel.grid.minor = element_blank()
)
Interpretación Figura 5.
La figura 5 permite observar que, entre los distribuidores de West, un mayor volumen de ventas no necesariamente se traduce en un mayor margen operativo, lo que coincide con el comportamiento observado en la matriz de correlación.En este caso se observa que el distribuidor Sports Direct es el que genera el mayor margen operativo con un total de ventas relativamente bajo comparado con el distribuir West Gear que presente el mayor numero de ventas totales con un margen operativo cercano al 35%.
Gráfico de puntos conectados
# FIGURA 6. BRECHA DE MARGEN POR MÉTODO DE VENTA
# SOUTH VS. WEST
# Preparar los datos
datos_metodo <- datos %>%
filter(
region %in% c("South", "West"),
producto %in% c(
"Women's Apparel",
"Women's Athletic Footwear"
)
) %>%
group_by(region, producto, metodo_venta) %>%
summarise(
ventas_totales = sum(ventas_total, na.rm = TRUE),
utilidad_operativa = sum(utilidad_operativa, na.rm = TRUE),
.groups = "drop"
) %>%
mutate(
margen_operativo = utilidad_operativa / ventas_totales
)
# Gráfico tipo Dumbbell
ggplot(
datos_metodo,
aes(
x = margen_operativo,
y = metodo_venta,
color = region
)
) +
geom_line(
aes(
group = interaction(producto, metodo_venta)
),
color = "grey70",
linewidth = 1.2
) +
geom_point(
size = 4
) +
geom_text(
aes(
label = percent(margen_operativo, accuracy = 0.1)
),
color = "black",
vjust = -1,
nudge_x = 0.01,
size = 2.7,
show.legend = FALSE
) +
facet_wrap(~ producto) +
scale_x_continuous(
labels = percent_format(accuracy = 1),
expand = expansion(mult = c(0.05, 0.08))
) +scale_color_manual(
values = c(
"South" = "#1F4E79",
"West" = "skyblue"
)
) +
labs(
title = "Figura 6. Margen operativo por método de venta",
subtitle = "Brecha entre South y West para los productos con mayor diferencia",
x = "Margen operativo",
y = "Método de venta",
color = "Región"
) +
theme_minimal() +
theme(
plot.title = element_text(
face = "bold",
size = 14
),
plot.subtitle = element_text(
size = 11
),
axis.title = element_text(
face = "bold"
),
panel.grid.minor = element_blank(),
legend.position = "bottom"
)
Interpretación Figura 6.
El análisis por método de venta evidencia que la mayor brecha de margen operativo entre South y West se presenta en el canal Outlet, con diferencias de 28,8% para Women’s Apparel y 17,1% para Women’s Athletic Footwear. En contraste, las diferencias en los canales Online e In-store son considerablemente menores. Esto sugiere que el comportamiento del canal Outlet podría estar relacionado con la menor rentabilidad observada en West, por lo que se identifica como un factor relevante para profundizar en el análisis
Grafico combinado barras y lineas
# Figura 7. Ventas y margen operativo por distribuidor
# West - Outlet
tabla_figura7 <- datos %>%
filter(
region == "West",
metodo_venta == "Outlet",
producto %in% c(
"Women's Apparel",
"Women's Athletic Footwear"
)
) %>%
group_by(producto, distribuidor) %>%
summarise(
Ventas = sum(ventas_total, na.rm = TRUE),
Utilidad = sum(utilidad_operativa, na.rm = TRUE),
Margen = Utilidad / Ventas,
.groups = "drop"
)
# Escala para representar el margen sobre el eje secundario
factor_escala <- max(tabla_figura7$Ventas) / 0.50
ggplot(
tabla_figura7,
aes(x = reorder(distribuidor, Ventas))
) +
# Barras: ventas totales
geom_col(
aes(y = Ventas),
fill = "#1F4E79",
width = 0.65
) +
# Línea: margen operativo
geom_line(
aes(
y = Margen * factor_escala,
group = 1
),
color = "#5B9BD5",
linewidth = 1.1
) +
# Puntos del margen
geom_point(
aes(
y = Margen * factor_escala
),
color = "#5B9BD5",
size = 3.5
) +
# Etiquetas del margen
geom_text(
aes(
y = Margen * factor_escala,
label = percent(Margen, accuracy = 0.1)
),
vjust = -1.2,
color = "#1F4E79",
size = 3.2,
fontface = "bold"
) +
# Separar los productos
facet_wrap(
~ producto,
scales = "free_x"
) +
# Eje de ventas + eje secundario de margen
scale_y_continuous(
name = "Ventas totales (USD)",
breaks = seq(
0,
1250000,
250000
),
labels = dollar_format(
prefix = "$",
accuracy = 1000
),
expand = expansion(
mult = c(0, 0.12)
),
sec.axis = sec_axis(
~ . / factor_escala,
name = "Margen operativo",
breaks = seq(0, 0.50, 0.10),
labels = percent_format(
accuracy = 1
)
)
) +
labs(
title = "Figura 7. Ventas y margen operativo por distribuidor
en la region West - Outlet",
subtitle = "Comparación para Women's Apparel y Women's Athletic Footwear",
x = "Distribuidor"
) +
theme_minimal() +
theme(
plot.title = element_text(
face = "bold",
size = 16
),
plot.subtitle = element_text(
size = 11
),
strip.text = element_text(
face = "bold",
size = 11
),
axis.text.x = element_text(
angle = 45,
hjust = 1
),
axis.title.y.left = element_text(
color = "#1F4E79"
),
axis.title.y.right = element_text(
color = "#5B9BD5"
),
axis.text.y.right = element_text(
color = "#5B9BD5"
),
panel.grid.minor = element_blank()
)
Interpretacion Figura 7.
La Figura 7 evidencia que un mayor volumen de ventas no garantiza una mayor rentabilidad en West. En Women’s Apparel, West Gear concentra el mayor nivel de ventas, con aproximadamente $1,200,000, pero presenta uno de los menores márgenes operativos (20,9%), mientras que Sports Direct, con ventas cercanas a $125,000, alcanza un margen de 45,1%. Un comportamiento similar se observa en Women’s Athletic Footwear: West Gear registra las mayores ventas ($790,000), pero su margen (33,2%) es inferior al de Kohl’s (36,3%), que presenta un menor volumen de ventas. Estos resultados confirman que el volumen de ventas por sí solo no constituye un indicador suficiente de desempeño, por lo que Adidas debe considerar conjuntamente las ventas y la rentabilidad al evaluar sus distribuidores y definir estrategias comerciales.
La comparación entre ventas y margen demuestra que un mayor volumen comercial no necesariamente se traduce en una mayor rentabilidad.
En el análisis de correlación de las variables se evidencia que las ventas totales están fuertemente asociadas con las unidades vendidas (0,92) y con la utilidad operativa (0,94), pero no con el margen operativo (-0,30). Por tanto, el crecimiento del volumen comercial debe evaluarse conjuntamente con la rentabilidad generada.
La región “West” concentra el mayor volumen de ventas y utilidad operativa; sin embargo en términos de rentabilidad porcentual, no alcanza el mejor desempeño. Esto confirma que un mayor volumen de ventas no necesariamente se traduce en una mayor eficiencia operativa.
Las diferencias de rentabilidad entre las regiones “West” y “South” no son homogéneas entre las categorías de productos. La mayor brecha se presenta en Women’s Apparel, y Women’s Athletic Footwear
Las mayores diferencias de margen entre las regiones “West” y “South” se concentran en el canal “Outlet” y constituye el principal punto de atención dentro de la comparación por método de venta. En contraste, las diferencias observadas en los canales “Online” e “In-store” son considerablemente menores.
En la región “West”, el comportamiento de los distribuidores confirma que un mayor nivel de ventas no necesariamente genera un mayor margen operativo, pues se evidencia que algunos distribuidores alcanzan márgenes significativamente superiores aun manejando los mismos productos y canal.
Implementar mecanismos de seguimiento de la rentabilidad por combinación de región–producto–canal–distribuidor, utilizando indicadores de ventas, utilidad operativa y margen operativo. Esto permitiría identificar oportunamente situaciones en las que el crecimiento de las ventas, no esté acompañado de un aumento de la rentabilidad, facilitando la toma de decisiones y la implementación de acciones correctivas.
Evaluar a fondo la rentabilidad del canal “Outlet” en la región de “West”, analizando el impacto de descuentos, precios de venta, promociones, costos logísticos y demás condiciones comerciales para identificar las causas de las brechas frente a la región de “South”.
Evaluar la estrategia comercial de la venta de los productos “Women’s Apparel” y “Women’s Athletic Footwear”, especialmente en el canal “Outlet”, con el propósito de determinar si la brecha observada responde principalmente a políticas de descuento, estructura de costos, precios o combinación de productos.
Comparar periódicamente las mejores prácticas comerciales entre regiones, especialmente aquellas asociadas con “South”, que presenta un mayor margen operativo, con el objetivo de identificar si existen diferencias en precios, descuentos, mezcla de productos, canales o estructura de costos que puedan ser replicables en “West”.
Identificar qué condiciones comerciales, niveles de descuento o estrategias de venta estan utilizando los distribuidores que alcanzan márgenes significativamente superiores aun manejando los mismos productos y canal de venta y evaluar cuáles pueden ser replicadas en otros socios comerciales.
Evaluar el desempeño comercial, bajo una perspectiva de rentabilidad y no exclusivamente de volumen de ventas.