En este informe se analizará la rentabilidad, eficiencia en ventas y el desempeño financiero general de la empresa Adidas, la cual se dedica a fabricar y comercializar equipamiento deportivo y productos de moda. Se utilizará herramientas estadisticas como el analisis exploratorio de datos y representaciones gráficas para generar recomendaciones de optimización financiera.
library(readxl)
library(dplyr)
library(ggplot2)
library(plotly)
library(knitr)
library(kableExtra)
library(tidyr)
library(tidyverse)
datos <- read_excel("C:/Users/kmilo/Desktop/MAESTRIA EN FINANZAS/Analitica de Negocios/CASO 1/Adidas.xlsx",
col_types = c("text", "text", "text",
"text", "text", "numeric", "numeric",
"numeric", "numeric", "numeric",
"text"))
KPI Resumen General
En la siguiente tabla se relacionan los valores más importantes para resumir la base de datos de datos y tener un panorama global de la información que se necesita para realizar los análisis financieros:
Tabla 1. Indicadores clave
kpis <- data.frame(
Indicador = c(
"Total Unidades Vendidas",
"Total Ventas (USD)",
"Margen Operativo Promedio (%)",
"Región con Más Ventas",
"Producto Más Vendido",
"Retailer con Mejor Margen Operativo Promedio",
"Método de Venta con Mayor Total de Ventas"
),
Valor = c(
formatC(sum(datos$units_sold, na.rm = TRUE), format = "f", big.mark = ",", digits = 0), # Total unidades vendidas
formatC(sum(datos$total_sales, na.rm = TRUE), format = "f", big.mark = ",", digits = 0), # Total ventas ($)
paste0(formatC(mean(datos$operating_margin*100, na.rm = TRUE), format = "f", big.mark = ",", digits = 2), "%"), # Margen operativo promedio
datos %>%
group_by(Region) %>%
summarise(Total_Ventas = sum(total_sales, na.rm = TRUE)) %>%
arrange(desc(Total_Ventas)) %>%
slice(1) %>%
pull(Region), # Región con más ventas
as.character(datos %>%
group_by(Product) %>%
summarise(Total_Unidades = sum(units_sold, na.rm = TRUE)) %>%
arrange(desc(Total_Unidades)) %>%
slice(1) %>% # Selecciona el producto más vendido
pull(Product)), # Producto más vendido (convertido a carácter)
datos %>%
group_by(retailer) %>%
summarise(Margen_Prom = mean(operating_margin, na.rm = TRUE)) %>%
arrange(desc(Margen_Prom)) %>%
slice(1) %>%
pull(retailer), # Retailer con mejor margen operativo promedio
datos %>%
group_by(sales_method) %>%
summarise(Total_Ventas = sum(total_sales, na.rm = TRUE)) %>%
arrange(desc(Total_Ventas)) %>%
slice(1) %>%
pull(sales_method) # Método de venta con mayor total de ventas
)
)
kpis
| Indicador | Valor |
|---|---|
| Total Unidades Vendidas | 2,478,861 |
| Total Ventas (USD) | 120,166,650 |
| Margen Operativo Promedio (%) | 42.30% |
| Región con Más Ventas | West |
| Producto Más Vendido | Men’s Street Footwear |
| Retailer con Mejor Margen Operativo Promedio | Sports Direct |
| Método de Venta con Mayor Total de Ventas | Online |
Tabla 2. Resumen de estadísticas descriptivas del margen operativo
library(dplyr)
df <- datos %>%
mutate(operating_margin = operating_margin*100)
tabla_resumen <- df %>%
summarise(
Minimo = min(operating_margin, na.rm = TRUE),
Q1 = quantile(operating_margin, 0.25, na.rm = TRUE),
Mediana = median(operating_margin, na.rm = TRUE),
Media = mean(operating_margin, na.rm = TRUE),
Q3 = quantile(operating_margin, 0.75, na.rm = TRUE),
Maximo = max(operating_margin, na.rm = TRUE),
Desviacion_Estandar = sd(operating_margin, na.rm = TRUE)
) %>%
mutate(across(everything(), ~ sprintf("%.2f%%", .x)))
tabla_resumen
| Minimo | Q1 | Mediana | Media | Q3 | Maximo | Desviacion_Estandar |
|---|---|---|---|---|---|---|
| 10.00% | 35.00% | 41.00% | 42.30% | 49.00% | 80.00% | 9.72% |
Interpretación Tabla 2.
Los indicadores de centralidad nos muestran que no hay mucha diferencia entre la media y la mediana, lo cual indica un comportamiento de los datos de distribución norma. Además, existe una amplia diferencia entre el minimo y el máximo, lo que indica que las diferentes categorías de metodos de ventas, productos o regiones pueden diferenciarse en su margen operativo.
ggplotly(
ggplot(datos, aes(x = operating_margin*100)) +
geom_histogram(bins = 30, fill = "steelblue", color = "black", alpha = 0.7) +
labs(title = "Figura 1. Histograma del margen operativo",
x = "Margen Operativo (%)",
y = "Frecuencia") +
theme_minimal(base_size = 14)
)
Interpretación Figura 1.
La distribución es asimetrica hacia la derecha, es decir, la mayoria de datos se encuentran con margenes operativos muy altos por encima del 60%. Existen valores poco comunes o atipicos que llegan hasta el 80%. El valor que mayor se repite o la moda se encuentra alrededor del 40%, lo que significa un margen operativo muy bueno, donde la mayoria de retailers manejan margenes en el rango del 30% al 50%.
library(tidyverse)
library(plotly)
datos_resumen <- datos %>%
group_by(Product) %>%
summarise(Promedio_Margen = mean(operating_margin*100, na.rm = TRUE))
num_productos <- n_distinct(datos_resumen$Product)
colores <- RColorBrewer::brewer.pal(min(num_productos, 9), "Set2")
ggplotly(
ggplot(datos_resumen, aes(x = Promedio_Margen,
y = reorder(Product, Promedio_Margen),
fill = Product)) +
geom_col(width = 0.6, show.legend = FALSE) +
geom_text(aes(label = round(Promedio_Margen, 2)),
hjust = -0.2,
size = 4,
color = "black",
fontface = "bold") +
scale_x_continuous(expand = expansion(mult = c(0.05, 0.1))) +
scale_fill_manual(values = colores) +
labs(title = "Figura 2. Promedio del Margen operativo por Productoo",
x = "Margen Operativo Promedio",
y = "Producto") +
theme_minimal(base_size = 14) +
theme(panel.grid.major.y = element_blank(),
axis.text.y = element_text(face = "bold"),
plot.title = element_text(size = 16, face = "bold", hjust = 0.5),
legend.position = "none")
)
Interpretación Figura 2.
El gráfico muestra el orden de mayor a menor en el Margen Operativo promedio por producto, lo que inidica que el calzado de calle para hombre obtuvo como resultado una utilidad operativa promedio del 44.61%, seguido de la ropa para dama del 44.13%. Cabe mencionar que no existe mucha diferencia entre los otros productos, presentan un margen muy parecido.
library(ggplot2)
library(dplyr)
# Asegurar que no haya espacios en los nombres de las columnas
colnames(datos) <- trimws(colnames(datos))
ggplotly(
ggplot(datos, aes(x = sales_method, y = operating_margin*100, fill = sales_method)) +
geom_boxplot() +
labs(title = "Figura 3. Margen operativo por método de venta",
x = "Método de Venta",
y = "Margen Operativo") +
theme_minimal() +
theme(legend.position = "none")
)
Interpretación Figura 3.
En primer lugar del gráfico, el método de venta In-store presenta menos valores atipicos, es decir un margen más estable pero menor en su valor. En el segundo lugar, el método Online presenta la mejor rentabilidad operativa con su mayoría de ventas (> 50% de los datos) representando un margen por encima del 40% y una mediana del 47%. Esto puede significar, que al manejar una estructura mas liviana de costos y gastos, al no tener una tienda fisica y poco personal para atender a los clientes, presenta ventajas con respecto a los otros métodos de venta. El método online obtiene una mayor rentabilidad, sin embargo presenta una mayor variabilidad con valores muy eleveados con respecto a la mediana. En último lugar, el metodo de outlet obtiene el segundo puesto en mejor margen operativo promedio, sin embargo, presenta muchos valores atípicos y una diferencia grande entre el mínimo y máximo.
ggplotly(
ggplot(datos, aes(x = total_sales, y = operating_margin*100)) +
geom_point(color = "lightblue", alpha = 0.9, size = 2) + # Puntos con color y transparencia
geom_smooth(method = "loess", color = "grey", se = TRUE) + # Línea de tendencia lineal
labs(
title = paste("Figura 4. Relación entre Ventas Totales y Margen Operativo\nCoef. de correlación: ",
round(cor(datos$total_sales, datos$operating_margin, use = "complete.obs"), 2)),
x = "Ventas Totales",
y = "Margen operacional (%)",
caption = "Fuente: Datos financieros"
) +
theme_minimal() +
theme(
plot.title = element_text(size = 14, face = "bold", hjust = 0.5),
axis.title = element_text(size = 12),
axis.text = element_text(size = 10)
)
)
Interpretación Figura 4.
Según el gráfico de coeficiente de correlación (-0.3) se observa una relación negativa pero moderada entre las dos variables, esto significa que a mayor ventas menor será el margen operacional. La linea suavizada indica que cuando las ventas son bajas y medianas el margen de operacion será mayor, a medida de que va creciendo la cantidad en ventas, empieza a bajar el margen aunque parece estabilizarse en niveles más altos. Los datos se concentran más en el rango desde 0 hasta 20000 USD con los mejores margenes de operació entre 20% al 60%.
ggplotly(
ggplot(datos, aes(x = price_per_unit, y = operating_margin*100)) +
geom_point(color = "lightblue", alpha = 0.9, size = 2) + # Puntos con color y transparencia
geom_smooth(method = "loess", color = "grey", se = TRUE) + # Línea de tendencia lineal
labs(
title = paste("Figura 5. Relación entre Precio por Unidad y Margen Operativo\nCoef. de correlación: ",
round(cor(datos$price_per_unit, datos$operating_margin, use = "complete.obs"), 2)),
x = "Precio Por Unidad ($)",
y = "Margen operacional (%)",
caption = "Fuente: Datos financieros"
) +
theme_minimal() +
theme(
plot.title = element_text(size = 14, face = "bold", hjust = 0.5),
axis.title = element_text(size = 12),
axis.text = element_text(size = 10)
)
)
Interpretación Figura 5.
Según el gráfico de coeficiente de correlacion se puede observar que a menor precio mayor margen operativo y a mayor precio menor margen operativo, ademas se puede constatar a través de su resultado ya que este presenta un numero negativo (-0.14). La línea suavizada muestra una disminución del margen operativo a medida que aumenta el precio por unidad, lo que significa una relación poco fuerte evidenciada en el gráfico con una pendiente muy leve. Por último, los datos presentan un comportamiento bastante disperso con una mayor concentración entre 30 USD y 60 USD por unidad en el eje x, y entre 30% y 50% de margen operativo en el eje y.
ggplotly(
ggplot(datos, aes(x = price_per_unit, y = units_sold)) +
geom_point(color = "lightblue", alpha = 0.9, size = 2) + # Puntos con color y transparencia
geom_smooth(method = "loess", color = "grey", se = TRUE) + # Línea de tendencia lineal
labs(
title = paste("Figura 6. Relación entre Precio por Unidad y Unidades Vendidas\nCoef. de correlación: ",
round(cor(datos$price_per_unit, datos$units_sold, use = "complete.obs"), 2)),
x = "Precio Por Unidad ($)",
y = "Unidades Vendidas",
caption = "Fuente: Datos financieros"
) +
theme_minimal() +
theme(
plot.title = element_text(size = 14, face = "bold", hjust = 0.5),
axis.title = element_text(size = 12),
axis.text = element_text(size = 10)
)
)
Interpretación Figura 6.
Se puede visualizar en este gráfico que entre mayor unidades vendidas, mayor es el precio por unidad, es decir, que presenta una relacion positiva. Sin embargo, la relación no es lineal porque hay cierta dispersion de los datos. Existe una alta concetración de puntos entre 10 y 60 USD, y a partir de ese valor la dispersión aumenta en el rango de precios más altos. Esta dispersión presentada en el gráfico sugiere que algunos productos de bajo precio también tienen altas ventas.
datos <- datos %>%
mutate(Product = reorder(Product, price_per_unit, FUN = median))
ggplotly(
ggplot(datos, aes(x = Product, y = price_per_unit, fill = Product)) +
geom_boxplot(outlier.shape = 21, outlier.fill = "white", outlier.color = "black") +
stat_summary(fun = mean, geom = "point", shape = 4, size = 3, color = "black") + # Media como un 'X'
scale_fill_viridis_d(option = "plasma") + # Paleta de colores mejorada
labs(title = "Figura 7. Distribución de Precios por Categoría de Producto",
x = "Producto",
y = "Precio por Unidad ($)",
fill = "Producto") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1, size = 12), # Rotar etiquetas del eje X
text = element_text(size = 14),
legend.position = "none")
)
Interpretación Figura 7.
En este grafico se evidencia que los productos que mayor precio de venta tienen son las prendas para hombre y mujer, seguido del calzado de calle para hombre. Las prendas para mujer tienen mayor variabilidad de precios respecto a las otras categorías de producto. En cambio, las prendas de los hombres presenta una menor dispersión en su precio. La presencia de datos atipicos muestra que existen productos significativamente más caros en cada categoría. En términos de precio, el calzado tiene distribuciones más similares a comparación con la ropa, por lo se infiere que no hay mucha diferencia de precios en la categoria de calzado.
Conforme a la información de los datos exploratorios analizados en las gráficas anteriores, se infiere que la variedad de productos que ofrece la marca Adidas tanto para el género masculino como el femenino tienen una gran aceptación en la región Oeste del país, obteniendo grandes volumenes de ventas en sus productos, dando como resultado margenes operativos por encima del 40% a través del método de venta online. A continuación, se presentan algunas recomendaciones para la empresa:
Es evidente que el comercio a través de internet proporciona grandes beneficios a las empresas que hacen uso de el, ya que sus costos operativos por ventas serán menor, lo que se traduce en una mayor rentabilidad para la compañia; es importante tener en cuenta que el portafolio de productos que ofrece la marca adidas al público no se puede concentrar solamente en el método online, teniendo en cuenta que es una empresa que su objeto social es la comercializacion de prendas de vestir y calzado lo que obliga a la marca a no dejar de vender a través de sus tiendas físicas.
Para que la compañia obtenga mayor concentracion de ventas en las otras regiones del pais se recomendaría que se llevara acabo un estudio al público para saber que tan aceptado son los productos de la marca en comparacion de las demas compañias que se dedican al mismo comercio, esto le daría a la empresa una visión más amplia en cuanto a precios, calidad, variedad y confort de sus productos con respecto a la competencia.
Para lograr que los márgenes de rentabilidad en la compañía se mantengan se podrian implementar estrategias de negocios donde a los clientes con mayor fidelidad a la marca se le otorgen bonos de descuentos en epocas donde los productos tengan un bajo nivel de ventas.
Se recomienda evaluar la estructura de costos de los productos con alto precio, con el fin de reducir sus gastos sin perder la calidad y así obtener un mejor margen de utilidad operacional.
Teniendo en cuenta la relación positiva entre el Precio y las Unidades vendidas, se recomienda impulsar los productos de mayor precio con estrategias de marketing, con el fin de mejorar la eficiencia en ventas.
Los precios se deben ajustar dependiendo de la demanda de cada producto, y así poder encontrar un equilibrio entre vender más unidades y generar mayor rentabilidad.
En conclusión, la empresa Adidas presenta oportunidades para optimizar su desempeño financiero reduciendo costos en productos de alto valor o premium y realizando estrategias de posicionamiento de estos productos. Para maximizar su rentabilidad operativa se requiere combinar estrategias en asigniación de precios, reducción de costos y marketing.