Introducción

Es una compañía multinacional alemana fundada en 1949, con sede en Herzogenaurach, ciudad ubicada en Baviera. Se dedica a la fabricación de equipamiento deportivo y productos de moda (bolsos, camisas, tenis, gafas, etc.). La empresa también es patrocinadora de eventos y figuras deportivas a nivel mundial. Es el primer mayor fabricante del sector en el mundo.

A través de este análisis, se busca evaluar el desempeño de ventas y la rentabilidad de diferentes líneas de productos en el mercado, para la empresa en mencion.

Análisis exploratorio

El análisis exploratorio de datos (EDA) es un paso clave para comprender la informacion suministrada en la base de datos de Adidas., 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 evaluar el desempeño de ventas y la rentabilidad de diferentes líneas de productos en el mercado.

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

PASO 2: Cargar la base de datos

# Cargar datos desde el archivo Excel
Adidas <- read_excel("Adidas.xlsx")
    
# Ver las primeras filas de los datos
class(Adidas)  
## [1] "tbl_df"     "tbl"        "data.frame"
colnames(Adidas)  
##  [1] "retailer"         "Region"           "State"            "City"            
##  [5] "Product"          "price_per_unit"   "units_sold"       "total_sales"     
##  [9] "operating_profit" "operating_margin" "sales_method"
head(Adidas)
retailer Region State City Product price_per_unit units_sold total_sales operating_profit operating_margin sales_method
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

Indicadores de centralidad y dispersión

# Resumen estadístico de las variables financieras
resumen <- Adidas %>% 
  select(total_sales, operating_profit, retailer, Product, City) %>% 
  summary()

resumen
##   total_sales    operating_profit   retailer           Product         
##  Min.   :    0   Min.   :    0    Length:9648        Length:9648       
##  1st Qu.: 4065   1st Qu.: 1753    Class :character   Class :character  
##  Median : 7804   Median : 3263    Mode  :character   Mode  :character  
##  Mean   :12455   Mean   : 4895                                         
##  3rd Qu.:15864   3rd Qu.: 6192                                         
##  Max.   :82500   Max.   :39000                                         
##      City          
##  Length:9648       
##  Class :character  
##  Mode  :character  
##                    
##                    
## 
library(readxl)
data = read_excel("Adidas.xlsx")
require(ggplot2)
require(ggpubr)
require(CGPfunctions)
require(plotly)

names(data)
##  [1] "retailer"         "Region"           "State"            "City"            
##  [5] "Product"          "price_per_unit"   "units_sold"       "total_sales"     
##  [9] "operating_profit" "operating_margin" "sales_method"
#Tabla de frecuencia absoluta y relativa de la variable Producto
table(data$Region)
## 
##   Midwest Northeast     South Southeast      West 
##      1872      2376      1728      1224      2448
prop.table(table(data$Region))*100
## 
##   Midwest Northeast     South Southeast      West 
##  19.40299  24.62687  17.91045  12.68657  25.37313
#Tabla de frecuencia absoluta y relativa de la variable Metodo de ventas
table(data$sales_method)
## 
## In-store   Online   Outlet 
##     1740     4889     3019
prop.table(table(data$sales_method))*100
## 
## In-store   Online   Outlet 
## 18.03483 50.67371 31.29146
#Tabla de frecuencia absoluta y relativa de la variable Region
table(data$Genero)
## < table of extent 0 >
prop.table(table(data$Genero))*100
## numeric(0)
#Tabla de frecuencia absoluta y relativa de la variable Region
table(data$Product)
## 
##             Men's Apparel   Men's Athletic Footwear     Men's Street Footwear 
##                      1606                      1610                      1610 
##           Women's Apparel Women's Athletic Footwear   Women's Street Footwear 
##                      1608                      1606                      1608
prop.table(table(data$Product))*100
## 
##             Men's Apparel   Men's Athletic Footwear     Men's Street Footwear 
##                  16.64594                  16.68740                  16.68740 
##           Women's Apparel Women's Athletic Footwear   Women's Street Footwear 
##                  16.66667                  16.64594                  16.66667

Grafico 1. Tabla de frecuencia Producto- Genero - Canal de venta - Region

#library(ggpubr)

Adidas$Product=factor(Adidas$Product,levels =c("Men's Apparel","Men's Athletic Footwear","Men's Street Footwear",           "Women's Apparel","Women's Athletic Footwear","Women's Street Footwear"))
g2=ggplot(Adidas,aes(x=Product))+geom_bar(width = 0.9) +  # Aumentar el ancho de las barras
  theme_bw() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))  # Rotar etiquetas si es necesario

Adidas$sales_method=factor(Adidas$sales_method,levels =c("In-store","Online","Outlet"))
g3=ggplot(Adidas,aes(x=sales_method))+geom_bar()+theme_bw()

Adidas$Region=factor(Adidas$Region,levels =c("Midwest", "Northeast", "South", "Southeast", "West"))
g4=ggplot(Adidas,aes(x=Region))+geom_bar(width = 0.8) +  # Aumentar el ancho de las barras
  theme_bw() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))  # Rotar etiquetas si es necesario

ggarrange(g2, g3, g4, labels = c("A", "B","C"),ncol = 3, nrow = 1)

La frecuencia de compra de los productos de Hombre y mujeres es muy similar, representadas en 50.02% hombres y en un 49.97% mujeres; donde la mayor frecuencia de compra segun los canales de venta, es en el canal online representado por un 50.67%, seguido del canal Outlet representada en un 31.29% y finalmente en Tienda fisica con una frecuencia de 18.04; de igual manera se ve una representacion segun la region con la mayor participacion de la frecuencia de compra en la region West con un porcentaje del 25.37% y la menor participacion es para la region southeast con un porcentaje de participacion del 12.68%.

Grafico 2. Margen utilidad por producto

# Visualizar margen de utilidad por categoría de producto
p <-ggplot(Adidas, aes(x = Product, y = operating_margin, fill = Product)) +
  geom_boxplot() +
  labs(title = "Distribucion del Margen de Utilidad por Producto",
       x = "Producto",
       y = "Margen de Utilidad") +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))
# Convertir a gráfico interactivo
 ggplotly(p)

la tendencia de la grafica permite identificar que el margen de utilidad de los productos oscila entre el 40% y el 50%, siendo la de mayor tendencia el producto de hombre Mens street footwear, seguidamente del producto de mujer Womens apparel; los demas productos presentan un margen de utilidad menor.

Grafica 3.Ventas y Utilidad por Método de venta

library(ggplot2)
library(plotly)

# Datos reales agrupados por canal de ventas
data <- data.frame(
  Metodo = c("In-store", "Online", "Outlet"),
  Categoria = rep(c("Ventas", "Utilidad"), each = 3),
  Valor = c(35664375, 44965657, 39536618, 127591300, 96555180, 107988300)
)

# Crear el gráfico de barras apiladas
p <-ggplot(data, aes(x = Metodo, y = Valor / 1e6, fill = Categoria)) +
  geom_bar(stat = "identity", position = "stack") +
  scale_y_continuous(name = "Valores en millones dolares") +
  labs(title = "Ventas y Utilidad por Metodo de Venta", x = "Metodo de Venta") +
  scale_fill_manual(values = c("Ventas" = "blue", "Utilidad" = "green")) +
  theme_minimal()

# Convertir a gráfico interactivo
 ggplotly(p)

Analizando el volumen de venta observamos una mayor participación en ventas en las tiendas Online y con utilidad operativa inferior que en los otros dos métodos (In-Sotre y Outlet).
Se plantea revisar las categorías de producto en este método o canal, incluyendo prodctos con mejor desempeño en margen, de esta manera se contribuirá a mejorar las utilidades.

Grafica 4 Relacion precio por unidad, margen opeartivo y volumen de ventas

# Cargar la librería necesaria
library(dplyr)

# Crear un resumen de unidades vendidas, margen operativo y volumen de ventas por producto, ordenado
summary_df <- Adidas %>%
  group_by(Product) %>%
  summarise(
    total_units_sold = sum(units_sold, na.rm = TRUE),
    avg_operating_margin = mean(operating_margin, na.rm = TRUE),
    total_sales_volume = sum(units_sold * price_per_unit, na.rm = TRUE)  # Volumen de ventas
  ) %>%
  arrange(desc(total_units_sold))  # Orden descendente por unidades vendidas

# Mostrar el data frame resumen
print(summary_df)
## # A tibble: 6 × 4
##   Product               total_units_sold avg_operating_margin total_sales_volume
##   <fct>                            <dbl>                <dbl>              <dbl>
## 1 Men's Street Footwear           593320                0.446           27680769
## 2 Men's Athletic Footw…           435526                0.403           20577180
## 3 Women's Apparel                 433827                0.441           23870985
## 4 Women's Street Footw…           392269                0.410           17201563
## 5 Women's Athletic Foo…           317236                0.423           14315521
## 6 Men's Apparel                   306683                0.413           16520632

Gráfica 5. Variación del margen en función del precio por unidad y volumen de Venta

# Cargar las librerías necesarias
library(dplyr)
library(ggplot2)

# Crear un resumen de margen operativo, precio por unidad y volumen de ventas por producto
summary_df <- Adidas %>%
  group_by(Product) %>%
  summarise(
    avg_operating_margin = mean(operating_margin, na.rm = TRUE),  # Promedio margen operativo
    avg_price_per_unit = mean(price_per_unit, na.rm = TRUE),      # Precio promedio por unidad
    total_sales_volume = sum(units_sold * price_per_unit, na.rm = TRUE)  # Volumen de ventas
  ) %>%
  arrange(desc(total_sales_volume))  # Orden descendente por volumen de ventas

# Mostrar el data frame resumen
print(summary_df)
## # A tibble: 6 × 4
##   Product             avg_operating_margin avg_price_per_unit total_sales_volume
##   <fct>                              <dbl>              <dbl>              <dbl>
## 1 Men's Street Footw…                0.446               44.2           27680769
## 2 Women's Apparel                    0.441               51.6           23870985
## 3 Men's Athletic Foo…                0.403               43.8           20577180
## 4 Women's Street Foo…                0.410               40.3           17201563
## 5 Men's Apparel                      0.413               50.3           16520632
## 6 Women's Athletic F…                0.423               41.1           14315521
# Crear un gráfico de dispersión
p <-ggplot(summary_df, aes(x = avg_price_per_unit, y = avg_operating_margin, size = total_sales_volume)) +
  geom_point(alpha = 0.7, color = "blue") +  # Puntos en azul, tamaño según volumen de ventas
  geom_smooth(method = "lm", color = "red", se = FALSE) +  # Línea de tendencia en rojo
  labs(title = "Relacion entre Precio por Unidad, Margen Operativo y Volumen de Ventas",
       x = "Precio Promedio por Unidad",
       y = "Margen Operativo",
       size = "Volumen de Ventas") +
  theme_minimal()
# Convertir a gráfico interactivo
 ggplotly(p)

De acuerdo a la tendencia positiva de la grafica se observa que a mayor precio por unidad mayor margen operativo y que productos con alto volumen de ventas tienen un mayor margen operativo, a diferencia de productos con volumen bajo de ventas que reflejan un margen operativo bajo.

Grafica 6 Analisis de contribucion de las ventas y utilidad operativa

# Cargar las librerías necesarias
library(dplyr)
library(ggplot2)

# Crear un resumen de la utilidad operativa y total de ventas por producto
summary_df <- Adidas %>%
  group_by(Product) %>%
  summarise(
    total_sales_volume = sum(units_sold * price_per_unit, na.rm = TRUE),  # Total de ventas
    total_operating_profit = sum(units_sold * price_per_unit * operating_margin, na.rm = TRUE),  # Utilidad operativa
    avg_operating_margin = mean(operating_margin, na.rm = TRUE)  # Margen operativo promedio
  ) %>%
  arrange(desc(total_sales_volume))  # Orden descendente por ventas totales

# Mostrar la tabla resumen
print(summary_df)
## # A tibble: 6 × 4
##   Product         total_sales_volume total_operating_profit avg_operating_margin
##   <fct>                        <dbl>                  <dbl>                <dbl>
## 1 Men's Street F…           27680769              11629046.                0.446
## 2 Women's Apparel           23870985               9685221.                0.441
## 3 Men's Athletic…           20577180               7437457.                0.403
## 4 Women's Street…           17201563               6494017.                0.410
## 5 Men's Apparel             16520632               6381405.                0.413
## 6 Women's Athlet…           14315521               5597822.                0.423
# Crear un gráfico de dispersión
ggplot(summary_df, aes(x = total_sales_volume, y = total_operating_profit, size = avg_operating_margin)) +
  geom_point(alpha = 0.7, color = "blue") +  # Puntos en azul, tamaño según margen operativo
  geom_smooth(method = "lm", color = "red", se = FALSE) +  # Línea de tendencia roja
  labs(title = "Analisis de Contribucion: Ventas vs Utilidad Operativa",
       x = "Total de Ventas",
       y = "Utilidad Operativa",
       size = "Margen Operativo Prom.") +
  theme_minimal()

Podemos observar que los productos con mayor total de ventas tienen mayor utilidad operativa en comparacion con los puntos pequeños abajo en la grafica que muestran ventas bajas y utilidad baja.

Conclusiones

Enfocaremos nuestra estrategia en los productos como plan para contribuir con los objetivos de la compañía:

1.Revisar productos con alto volumen de ventas y baja utilidad: para realizar una estrategia de precios que contribuyan a mejorar el margen.

2.Plantear que estos productos se promocionen en el canal Outlet, dado que es el método de ventas que tiene mejor comportamiento en el margen, concluimos que es porque sus costos operativos son menores.

3.Plantear con los productos que tienen bajo volumen de ventas, realizar campañas o estrategias de mercadeo que permita intensificar el volumen de ventas en el método de venta Outlet, ya que este canal presenta un mejor comportamiento en el margen operacional.