ANALÍTICA DESCRIPTIVA CASO ADIDAS

El objetivo principal de este informe es describir y evaluar el desempeño en ventas y la rentabilidad de las diferentes líneas de la marca Adidas, haciendo uso de las diferentes técnicas de estadística descriptiva cuyo interés principal es generar información clave que sirva en la toma de decisiones gerenciales.

Los diferentes análisis realizados están enfocados en ofrecer una visión clara de la rentabilidad de los productos, la eficiencia en ventas y el desempeño financiero general.

Es importante precisar que se limpio la data recibida, esto con el objetivo de proyectar resultados mas limpios y sin alteraciones considerables.

Logotipo de Adidas

Logotipo de Adidas

# 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(readxl)
adidas <- read_excel("C:/Users/Jazmin/OneDrive/ESPECIALIZACION EN FINANZAS/I SEMESTRE/ANALITICA DE NEGOCIOS/CASO 1/Adidas.xlsx")

RENTABILIDAD

ggplot(adidas, aes(x = price_per_unit, y = operating_margin)) +
  geom_point(color = "steelblue", alpha = 0.7) +
  geom_smooth(method = "lm", color = "darkred", se = FALSE) + scale_y_continuous(labels = percent_format(accuracy = 1)) +
  labs(
    title = "Relación entre Precio por Unidad y Margen Operativo",
    x = "Precio por Unidad $",
    y = "Margen Operativo (%)"
  ) +
  theme_minimal()

Interpretación de la relacion entre precio por unidad y margen operativo

El anterior diagrama de dispersión muestra el precio por unidad para cada venta vs el margen operativo de las mismas, la línea roja representa el margen operativo promedio esperado según los datos analizados, así las cosas, los puntos por encima de la línea son ventas con un margen superior al promedio para esos precios y los de abajo con margen inferior.

Existe una pendiente ligeramente negativa conforme avanzamos a la derecha, esto nos indica que, en promedio, a precios unitarios mas altos, el margen operativo tiende a disminuir ligeramente, lo cual podría deberse a que los productos de mayor precio tienen costos fijos relativos mayores.

Por otra parte, se oberva que hay mucha variabilidad de márgenes, para un mismo precio se obtuvieron márgenes muy distintos, esto sugiere que además del precio pueden influir otros factores, como el canal de venta la región o el volumen.

# Crear rangos de unidades vendidas usando cuartiles
adidas <- adidas %>%
  mutate(rango_ventas = cut(units_sold,
                            breaks = quantile(units_sold, probs = seq(0, 1, 0.25), na.rm = TRUE),
                            include.lowest = TRUE,
                            labels = c("Bajo", "Medio-Bajo", "Medio-Alto", "Alto")))

# Crear gráfico de caja
ggplot(adidas, aes(x = rango_ventas, y = operating_margin)) +
  geom_boxplot(fill = "#0072B2", color = "black") +
  scale_y_continuous(labels = label_percent(accuracy = 1)) +
  labs (title = "Variación del Margen Operativo según Volumen de Ventas",
       x = "Rango de Unidades Vendidas (entre 0 y 1.275)",
       y = "Margen Operativo (%)") +
  theme_minimal()

Interpretación de la variación del margen operativo segun el volumen de ventas

El anterior diagrama de Box Plots, resume la variación del margen operativo en relación al volumen de ventas, las cuales se segmentaron en cuatro niveles; bajo, medio bajo, medio alto y alto, dicho fraccionamiento abarca desde 0 unidades, hasta 1275 unidades vendidas.

La mediana (linea gruesa en cada caja), nos muestra el margen tipico para cada rango de unidades vendidas.

El recorrido intercuatilico (es decir, la altura de la caja) es la dispersion central que oscila entre el 25% y el 75% de cada rango de unidades.

Las tendencias que muestran las cajas nos indican que, en los rangos bajo y medio bajo de ventas el margen promedio ronda alrededor del 45%, y en los rangos de venta medio alto y alto el margen de venta disminuye alrededor del 35% al 40%.

Los rangos de ventas bajo y medio bajo presentan una caja más alta y bigotes largos, lo cual indica mayor variabilidad de márgenes (aproximadamente entre el 35% y 50%).

Los anteriores analisis nos infieren que a mayores volúmenes vendidos, el margen típico tiende a disminuir, posiblemente por descuentos o mayores costos logísticos asociados.

EFICIENCIA EN VENTAS

 #Gráfico de dispersión para visualizar la relación entre precio por unidad y unidades vendidas
ggplot(adidas, aes(x = price_per_unit, y = units_sold)) +
  geom_point(color = "#2C3E50", alpha = 0.6) +
  geom_smooth(method = "lm", se = TRUE, color = "#E74C3C", linetype = "dashed") +
  labs(title = "Relación entre Precio por Unidad y Unidades Vendidas",
       x = "Precio por Unidad",
       y = "Unidades Vendidas") +
  theme_minimal()

Interpretación de la relación entre precio por unidad y unidades vendidas

El anterior diagrama de dispersión muestra, para cada venta, el precio por unidad frente al número de unidades vendidas, la línea roja es la recta de regresión lineal que resume la tendencia general entre precio y volumen vendido.

Se puede observar una especie de nube de puntos que representan cada venta, y una línea de regresión (roja) que muestra una pendiente ligeramente positiva, esto nos indica que en promedio, los precios más altos se asocian con un volumen de ventas marginalmente mayor, sin embargo, la gran variabilidad de los puntos alrededor de la recta implica que el precio por sí solo explica muy poco del comportamiento real de las unidades vendidas.

Lo antrior podria sugierir que factores como el canal de venta, la temporada, las promociones o la categoría de producto tienen un peso mucho más importante a la hora de predecir el volumen efectivo de ventas.

Por otra parte, observando la nube, se identifica una acumulación de volúmenes muy altos en precios intermedios (entre 30 y 70 dolares), y menos puntos en ambos extremos de precio.

#  segmentación por rangos de precios 
adidas %>%
  mutate(price_range = cut(price_per_unit, breaks = 5)) %>%
  group_by(price_range) %>%
  summarise(promedio_unidades = mean(units_sold, na.rm = TRUE),
            cantidad = n()) %>%
  ggplot(aes(x = price_range, y = promedio_unidades)) +
  geom_bar(stat = "identity", fill = "#3498DB") +
  labs(title = "Promedio de Unidades Vendidas por Rango de Precio",
       x = "Rango de Precio por Unidad",
       y = "Promedio de Unidades Vendidas") +
  theme_minimal()

Interpretación del promedio de unidades vendidas por rango de precio

En el anterior grafico de barras se establecieron cinco tipos de rangos de precios para evaluar el volumen de ventas promedio en dichos rangos.

Se aprecia una tendencia creciente y casi de forma lineal, es decir, a medida que suben los rangos de precios, tambien sube el promedio de ventas, con lo cual se observa que, los productos con precios unitarios más elevados se venden en mayores cantidades de forma promedio.

Lo anterior sugiere que las ventas de mayor precio pueden estár asociadas a pedidos al por mayor o a canales específicos, donde los descuentos y los volúmenes de compra pueden influir fuertemente.

DESEMPEÑO FINANCIERO GENERAL

#  Margen Operativo = Utilidad Operativa / Ventas Totales
adidas <- adidas %>%
  mutate(margen_operativo = operating_profit / total_sales)

# Gráfico de dispersión con ejes en formato moneda
ggplot(adidas, aes(x = total_sales, y = operating_profit)) +
  geom_point(color = "#1F618D", alpha = 0.6) +
  geom_smooth(method = "lm", se = TRUE, color = "#E67E22") +
  scale_x_continuous(labels = label_dollar(prefix = "$", big.mark = ".", decimal.mark = ",")) +
  scale_y_continuous(labels = label_dollar(prefix = "$", big.mark = ".", decimal.mark = ",")) +
  labs(title = "Relación entre Ventas Totales y Utilidad Operativa",
       x = "Ventas Totales",
       y = "Utilidad Operativa") +
  theme_minimal()

Interpretación de la relacion entre ventas totales y utilidad operativa

El grafico de dispersion anterior es una clara correlacion positiva, es decir, a mayores ventas totales, la utilidad operativa tiende a aumentar, lo cual sugiere que, en terminos generales, las utilidades crecen proporcionalmente con las ventas.

Sin embargo, aunque los puntos siguen la linea, hay una dispersion mucho mayor a medida que crecen las ventas, creando como una especie de cono, esto nos indica que en los niveles de ventas bajos, la utilidad es mas predecible, mientras que en ventas altas hay más variabilidad, posiblemente por diferencias en costos, descuentos u otros factores.

# Crear una nueva columna: Margen Operativo = Utilidad Operativa / Ventas Totales
adidas <- adidas %>%
  mutate(margen_operativo = operating_profit / total_sales)

# Histograma del margen operativo en formato porcentaje
ggplot(adidas, aes(x = margen_operativo)) +
  geom_histogram(fill = "#27AE60", bins = 30, color = "white") +
  scale_x_continuous(labels = label_percent(accuracy = 1)) +
  labs(title = "Distribución del Margen Operativo",
       x = "Margen Operativo (%)",
       y = "Frecuencia") +
  theme_minimal()

Interpretación de la distribución del margen operativo

El anterior histograma evidencia que el margen operativo de las ventas de Adidas se distribuye principalmente entre el 35 % y el 45 % (los mayores numeros de frecuencias), lo que se traduce en una rentabilidad relativamente estable y controlada en la mayoría de las operaciones, la presencia de algunos casos con márgenes muy altos refleja oportunidades potenciales de eficiencia o ventas estratégica, aunque son pocos los casos, mientras que los márgenes bajos, aunque escasos tambien, podrían requerir revisión para identificar causas como promociones agresivas o ineficiencias operativas-

En sintesis, la distribución muestra un comportamiento saludable de la rentabilidad general.

# 2) Resumir por producto: Ventas Totales, Utilidad Operativa Total y Margen Promedio
resumen <- adidas %>%
  group_by(Product) %>%
  summarise(
    Ventas_Totales       = sum(total_sales,     na.rm = TRUE),
    Utilidad_Operativa   = sum(operating_profit, na.rm = TRUE),
    Margen_Promedio      = mean(operating_margin, na.rm = TRUE) * 100
  ) %>%
  ungroup()

# Preparar datos en formato largo para las barras (ventas vs utilidad)
barras <- resumen %>%
  select(Product, Ventas_Totales, Utilidad_Operativa) %>%
  pivot_longer(-Product,
               names_to  = "Métrica",
               values_to = "Valor") %>%
  mutate(
    Métrica = factor(Métrica,
                     levels = c("Ventas_Totales", "Utilidad_Operativa"),
                     labels = c("Ventas Totales", "Utilidad Operativa"))
  )

# Calcular factor de escala para el eje secundario
factor_escala <- max(resumen$Ventas_Totales) / max(resumen$Margen_Promedio)

# Dibujar el gráfico
ggplot() +
  # Barras (dos métricas) lado a lado
  geom_col(data = barras,
           aes(x = Product, y = Valor, fill = Métrica),
           position = position_dodge(width = 0.7),
           width = 0.6) +
  
  # Línea + puntos para el margen (escalado)
  geom_line(data = resumen,
            aes(x = Product,
                y = Margen_Promedio * factor_escala,
                color = "Margen Operativo"),
            group = 1,
            size  = 1) +
  geom_point(data = resumen,
             aes(x = Product,
                 y = Margen_Promedio * factor_escala,
                 color = "Margen Operativo"),
             size = 2) +
  
  # Escalas y ejes
  scale_y_continuous(
    name = "Ventas (USD)",
    labels = dollar_format(prefix = "$", big.mark = ","),
    sec.axis = sec_axis(~ . / factor_escala,
                        name = "Margen Operativo (%)",
                        labels = function(x) paste0(round(x,1), "%"))
  ) +
  
  # Colores manuales para barras y línea
  scale_fill_manual(
    name   = NULL,
    values = c("Ventas Totales" = "steelblue", 
               "Utilidad Operativa" = "seagreen3")
  ) +
  scale_color_manual(
    name   = NULL,
    values = c("Margen Operativo" = "firebrick")
  ) +
  
  # Etiquetas y tema
  labs(
    x     = "Productos",
    title = "Margen Operativo Estandar por Producto
"
  ) +
  theme_minimal() +
  theme(
    plot.title   = element_text(face = "bold", hjust = 0.5),
    axis.text.x  = element_text(angle = 45, hjust = 1),
    legend.position = "bottom"
)

Interpretación

El análisis comparativo de la utilidad operativa total, las ventas totales y el margen operativo general por categoría de producto permite concluir que una mayor facturación no garantiza una mayor rentabilidad operativa, para lo anterior se evidencia el hecho de que “Men’s Athletic Footwear” quien presenta ventas totales superiores a los $20,5 millones de dolares, tiene el más bajo Margen Operativo General (36,1%) y se establece como el segundo producto con mayor cantidad de unidades vendidas. Mientras que, “Men’s Street Footwear” se establece como el producto que genera mayor beneficio para la compañía ADIDAS, debido a que genera ventas mayores a $27,5 millones de dolares, 593.320 unidades vendidas y posee el mayor margen operativo general (42,0%).

# Calcular ventas totales por producto
ventas_por_producto <- adidas %>%
  group_by(Product) %>%
  summarise(Ventas_Totales = sum(total_sales, na.rm = TRUE)) %>%
  ungroup() %>%
  mutate(Participacion = Ventas_Totales / sum(Ventas_Totales) * 100)

# Crear el gráfico de torta
ggplot(ventas_por_producto, aes(x = "", y = Ventas_Totales, fill = Product)) +
  geom_col(width = 1, color = "white") +
  coord_polar(theta = "y") +
  labs(title = "PARTICIPACIÓN DE CADA PRODUCTO EN VENTAS TOTAL
") +
  theme_void() +
  geom_text(aes(label = paste0(round(Participacion, 1), "%")),
            position = position_stack(vjust = 0.5),
            color = "black",
            size = 4) +
  scale_fill_brewer(palette = "Set3")

Interpretación

Respecto al análisis de participación relativa de cada línea de producto en las ventas totales, se concluye lo siguiente: 1. Men’s Street Footwear es el producto con mayor participación sobre las ventas totales, con un 23,03%, lo que lo posiciona como el líder en generación de ingresos. 2. Le siguen Women’s Apparel con 19,87% y Men’s Athletic Footwear con 17,13%, ambos con un peso significativo dentro del portafolio. 3. Women’s Street Footwear y Men’s Apparel aportan respectivamente 14,31% y 13,75%, ubicándose en un nivel intermedio. 4. Por su parte, Women’s Athletic Footwear tiene la menor participación con un 11,91%, lo cual no necesariamente indica bajo rendimiento, pero sí sugiere una menor incidencia sobre los ingresos globales. En conjunto, los productos de calzado con denominación “Men’s Street Footwear”, “Women’s Apparel” y “Men’s Athletic Footwear” representan el 60% de las ventas, confirmando que el producto “Men’s Street Footwear es el nucleo comercial del protafolio de ADIDAS.

# Agrupar por método de venta y calcular ventas totales y utilidad operativa
resumen <- adidas %>%
  group_by(sales_method) %>%
  summarise(
    Ventas_Totales     = sum(total_sales, na.rm = TRUE),
    Utilidad_Operativa = sum(operating_profit, na.rm = TRUE)
  ) %>%
  ungroup()

# Convertir a formato largo para gráfico agrupado
df_long <- resumen %>%
  tidyr::pivot_longer(cols = c(Ventas_Totales, Utilidad_Operativa),
                      names_to = "Tipo",
                      values_to = "Valor") %>%
  mutate(Tipo = factor(Tipo,
                       levels = c("Ventas_Totales", "Utilidad_Operativa"),
                       labels = c("VENTAS TOTALES", "UTILIDAD OPERATIVA TOTAL")))

# Gráfico de barras agrupadas
ggplot(df_long, aes(x = sales_method, y = Valor, fill = Tipo)) +
  geom_bar(stat = "identity", position = position_dodge(width = 0.7), width = 0.6) +
  geom_text(aes(label = dollar(round(Valor), big.mark = ".", decimal.mark = ",")),
            position = position_dodge(width = 0.7),
            vjust = -0.4, size = 3.5) +
  scale_y_continuous(
    name = "Ingresos",
    labels = dollar_format(big.mark = ".", decimal.mark = ",", prefix = "$ ")
  ) +
  scale_fill_manual(
    name = NULL,
    values = c("VENTAS TOTALES" = "#4B87C5",   # Azul
               "UTILIDAD OPERATIVA TOTAL" = "#F29C60")  # Naranja
  ) +
  labs(
    title = "VENTAS TOTALES VS UTILIDAD OPERATIVA",
    x = "Método"
  ) +
  theme_minimal(base_size = 12) +
  theme(
    plot.title = element_text(face = "bold", hjust = 0.5, size = 14),
    legend.position = "bottom",
    axis.text.x = element_text(face = "bold")
  )

¨Interpretación 1. El canal Online genera las mayores ventas totales ($44.965.657), seguido por Outlet y In-store. Esto indica una fuerte preferencia del mercado hacia las compras digitales, posiblemente por su conveniencia o cobertura. 2. Sin embargo, el mayor margen operativo lo presenta el canal In-store (43,5%), lo que significa que aunque vende menos, es más rentable por unidad vendida. Esto puede deberse a menores descuentos o mayor control de costos operativos. 3. El canal Online tiene el menor margen operativo (35,8%), lo que podría indicar mayores costos logísticos o descuentos frecuentes para incentivar la compra. 4. El canal Outlet mantiene un equilibrio, con ventas totales intermedias y un margen operativo aceptable (37,7%), representando una buena opción para volumen con rentabilidad moderada.

# Agrupar por Región y calcular ventas totales y utilidad operativa
resumen <- adidas %>%
  group_by(Region) %>%
  summarise(
    Ventas_Totales     = sum(total_sales, na.rm = TRUE),
    Utilidad_Operativa = sum(operating_profit, na.rm = TRUE)
  ) %>%
  ungroup()

# Reorganizar datos a formato largo
df_long <- resumen %>%
  pivot_longer(cols = c(Ventas_Totales, Utilidad_Operativa),
               names_to = "Tipo",
               values_to = "Valor") %>%
  mutate(Tipo = factor(Tipo,
                       levels = c("Ventas_Totales", "Utilidad_Operativa"),
                       labels = c("VENTAS TOTALES", "UTILIDAD OPERATIVA TOTAL")))

# Crear gráfico
ggplot(df_long, aes(x = Region, y = Valor, fill = Tipo)) +
  geom_bar(stat = "identity", position = position_dodge(width = 0.7), width = 0.6) +
  geom_text(aes(label = dollar(round(Valor), big.mark = ".", decimal.mark = ",")),
            position = position_dodge(width = 0.7),
            vjust = -0.4, size = 3.5) +
  scale_y_continuous(
    name = "Ingresos",
    labels = dollar_format(prefix = "$ ", big.mark = ".", decimal.mark = ",")
  ) +
  scale_fill_manual(
    name = NULL,
    values = c("VENTAS TOTALES" = "#4B87C5",   # Azul
               "UTILIDAD OPERATIVA TOTAL" = "#F29C60")  # Naranja
  ) +
  labs(
    title = "VENTAS TOTALES VS UTILIDAD OPERATIVA POR REGIÓN",
    x = "Región"
  ) +
  theme_minimal(base_size = 12) +
  theme(
    plot.title = element_text(face = "bold", hjust = 0.5, size = 14),
    legend.position = "bottom",
    axis.text.x = element_text(face = "bold")
  )

Interpretacion

La región Oeste (West) es la más relevante para Adidas en términos de ventas totales ($36,4 millones), utilidad operativa ($13 millones) y unidades vendidas (686.985), concentrando el 30,3% de participación de productos. Sin embargo, no es la más eficiente, ya que presenta el margen operativo más bajo (35,7%). Por otro lado, la región Sur (South) muestra el mayor margen operativo (44,8%), lo que indica que es la más rentable proporcionalmente, a pesar de no liderar en volumen de ventas ni unidades.

PUNTOS CLAVES A CONSIDERAR: 1. Oeste (West): Lidera en ventas y utilidad absoluta, pero con margen menor → Prioridad para mejorar eficiencia operativa. 2. Sur (South): Menores ventas que el Oeste, pero máxima rentabilidad porcentual → Oportunidad de escalar. 3. Midwest: Menor participación (13,9%) pero buen margen (41,1%) → Potencial de crecimiento rentable. 4. Noreste (Northeast): Alto volumen y utilidad, margen aceptable (38,8%) → Mantener estrategia. 5.Sureste (Southeast): La región menos rentable → Evaluar reducción de costos o cambio de mix de productos.