Adidas es una de las marcas más reconocidas en la industria global de artículos deportivos. Fundada en 1949 en Alemania, ha consolidado su presencia en los principales mercados internacionales, ofreciendo una amplia gama de productos que incluyen calzado deportivo, ropa y accesorios. Su posicionamiento estratégico, capacidad de innovación y enfoque en el rendimiento la han convertido en un referente del sector a nivel mundial. El análisis del desempeño comercial y financiero de Adidas es fundamental para evaluar su competitividad, identificar patrones de consumo y comprender los factores que impulsan su rentabilidad. En este documento, realizaremos un análisis exploratorio de variables financieras clave, como el precio por unidad, unidades vendidas, ventas totales, utilidad operativa y margen operativo, utilizando R. Aplicaremos técnicas de estadística descriptiva y visualización de datos para detectar tendencias, niveles de variabilidad y relaciones entre variables, facilitando una mejor interpretación del desempeño de la compañía en distintos segmentos como región, producto y método de venta. A través de este análisis, se busca proporcionar una visión integral y estratégica del desempeño comercial de la compañía, lo cual sirve como insumo para directivos, analistas y académicos interesados en comprender la dinámica financiera y operativa de una empresa líder en la industria deportiva.
El análisis exploratorio de datos (EDA) es un paso clave para comprender la información financiera 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 y relaciones entre variables como el precio por unidad, las unidades vendidas, las ventas totales, la utilidad operativa y el margen operativo.
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")
# Cargar los datos desde el archivo Excel
library(readxl)
# Especificar la ruta correcta al archivo
Adidas <- read_excel("Adidas.xlsx",
col_types = c("text", "text", "text",
"text", "text", "numeric",
"numeric", "numeric",
"numeric", "numeric", "text"))
# Cargar las librerías necesarias
library(dplyr)
# Resumen estadístico de las variables disponibles en los datos de Adidas
resumen_adidas <- Adidas %>%
select(precio_unidad, unidades_vendidas, ventas_total, utilidad_operativa, margen_operativo) %>% # Selección de variables
summary() # Resumen estadístico
# Mostrar el resumen
print(resumen_adidas)
## precio_unidad unidades_vendidas ventas_total utilidad_operativa
## Min. : 7.00 Min. : 0.0 Min. : 0 Min. : 0
## 1st Qu.: 35.00 1st Qu.: 106.0 1st Qu.: 4065 1st Qu.: 1753
## Median : 45.00 Median : 176.0 Median : 7804 Median : 3263
## Mean : 45.22 Mean : 256.9 Mean :12455 Mean : 4895
## 3rd Qu.: 55.00 3rd Qu.: 350.0 3rd Qu.:15864 3rd Qu.: 6192
## Max. :110.00 Max. :1275.0 Max. :82500 Max. :39000
## margen_operativo
## Min. :0.100
## 1st Qu.:0.350
## Median :0.410
## Mean :0.423
## 3rd Qu.:0.490
## Max. :0.800
Los valores de ventas total y utilidad operativa muestran una dispersión considerable, con un rango de precios de unidades que varía entre 7 y 110. El margen operativo promedio se encuentra entre 0.10 y 0.80, con una media de 0.42, indicando un margen saludable. Los valores de utilidad operativa son altos, con un máximo de 39,000, sugiriendo una eficiencia operativa en algunos productos, aunque existen diferencias notables entre categorías.
# Cargar las librerías necesarias
library(plotly)
library(dplyr)
# Crear el gráfico de barras interactivo con color atractivo y corregir el error de texto
grafico_barras_adidas <- Adidas %>%
plot_ly(x = ~region, y = ~ventas_total,
color = ~factor(region) ) %>% # Azul brillante para las barras
add_bars(width = 0.5)%>%
layout(
title = "Figura 2: Ventas Totales de Adidas por Region",
titlefont = list(size = 15, family = "Arial, sans-serif", color = "#003366", bold = TRUE), # Título en negrita y tipografía bonita
xaxis = list(
title = "Region",
titlefont = list(size = 16, family = "Arial, sans-serif", color = "#003366", bold = TRUE),
tickfont = list(size = 12, family = "Arial, sans-serif", color = "#003366"),
showgrid = TRUE, # Mostrar la cuadrícula para facilitar la lectura
zeroline = TRUE, # Mostrar línea en el cero
showticklabels = TRUE # Etiquetas visibles en los ticks
),
yaxis = list(
title = "Ventas Totales (Millones de dolares)",
titlefont = list(size = 16, family = "Arial, sans-serif", color = "#003366", bold = TRUE),
tickfont = list(size = 12, family = "Arial, sans-serif", color = "#003366"),
showgrid = TRUE, # Mostrar la cuadrícula para facilitar la lectura
zeroline = TRUE, # Mostrar línea en el cero
showticklabels = TRUE # Etiquetas visibles en los ticks
),
hovermode = "x", # Modo de hover por cada barra
plot_bgcolor = 'rgba(245, 245, 245, 1)', # Fondo del gráfico blanco
paper_bgcolor = 'rgba(245, 245, 245, 1)', # Fondo de la página blanco
showlegend = FALSE, # Eliminar la leyenda ya que no es necesaria
annotations = list( # Agregar las etiquetas sobre las barras con los valores
list(
x = ~region,
y = ~ventas_total,
text = paste0(round(Adidas$ventas_total / 1000000, 1), "M"), # Convertir a millones y agregar 'M'
showarrow = FALSE,
font = list(size = 12, color = 'black')
)
)
)
# Mostrar el gráfico
grafico_barras_adidas
El gráfico muestra que la región Oeste lidera las ventas totales con más de 40 millones de pesos. En contraste, las regiones Sur y Midwest presentan ventas más bajas, por debajo de los 20 millones de pesos. Esto indica que Oeste tiene una demanda significativamente mayor que el Sur y Midwest, lo que sugiere que Adidas debería concentrar esfuerzos estratégicos en mejorar el rendimiento de estas últimas regiones.
# Cargar librerías necesarias
library(dplyr)
# Crear la columna 'Rentabilidad' en Adidas
Adidas_clean <- Adidas %>%
mutate(Rentabilidad = (utilidad_operativa / ventas_total) * 100)
# Verificar la estructura de la nueva base de datos
str(Adidas_clean)
## tibble [9,648 × 12] (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 : chr [1:9648] "New York" "New York" "New York" "New York" ...
## $ producto : chr [1:9648] "Men's Street Footwear" "Men's Athletic Footwear" "Women's Street Footwear" "Women's Athletic Footwear" ...
## $ 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 : chr [1:9648] "In-store" "In-store" "In-store" "In-store" ...
## $ Rentabilidad : num [1:9648] 50 30 35 35 30 25 50 30 35 35 ...
rent_region <- Adidas_clean %>%
group_by(region) %>%
summarise(
utilidad_total = sum(utilidad_operativa, na.rm = TRUE),
margen_promedio = mean(margen_operativo, na.rm = TRUE),
.groups = "drop"
) %>%
arrange(desc(utilidad_total))
kable(rent_region)
| region | utilidad_total | margen_promedio |
|---|---|---|
| West | 13017584 | 0.3966912 |
| Northeast | 9732774 | 0.4104503 |
| South | 9221605 | 0.4668981 |
| Southeast | 8393059 | 0.4191667 |
| Midwest | 6859945 | 0.4352724 |
ggplot(rent_region, aes(x = reorder(region, utilidad_total),
y = utilidad_total,
fill = region)) +
geom_col() +
coord_flip() +
scale_y_continuous(labels = scales::dollar_format()) +
labs(title = "Figura 4: Utilidad Operativa Total por Región",
x = "Región",
y = "Utilidad") +
theme_minimal() +
theme(legend.position = "none")
La región Oeste también lidera en términos de utilidad operativa, lo que refuerza su posición como la región más rentable. Las regiones Sur y Midwest tienen utilidades más bajas, coincidiendo con su desempeño en ventas. Esto resalta la importancia de abordar las brechas de rentabilidad en estas regiones y explorar estrategias para incrementar la eficiencia operativa.
# Cargar las librerías necesarias
library(plotly)
library(dplyr)
# Crear el gráfico de barras interactivo con color atractivo y corregir el error de texto
grafico_barras_adidas <- Adidas_clean %>%
plot_ly(x = ~producto, y = ~ventas_total,
color = ~producto ) %>% # Azul brillante para las barras
add_bars(width = 0.5)%>%
layout(
title = " Figura 5: Ventas Totales de Adidas por producto", # Corregido "Región" por "Region"
titlefont = list(size = 24, family = "Arial, sans-serif", color = "#003366", bold = TRUE), # Título en negrita y tipografía bonita
xaxis = list(
title = "producto", # Reemplazado "Región" por "Region"
titlefont = list(size = 16, family = "Arial, sans-serif", color = "#003366", bold = TRUE),
tickfont = list(size = 12, family = "Arial, sans-serif", color = "#003366"),
showgrid = TRUE, # Mostrar la cuadrícula para facilitar la lectura
zeroline = TRUE, # Mostrar línea en el cero
showticklabels = TRUE # Etiquetas visibles en los ticks
),
yaxis = list(
title = "Ventas Totales (Miles de dolares)",
titlefont = list(size = 16, family = "Arial, sans-serif", color = "#003366", bold = TRUE),
tickfont = list(size = 12, family = "Arial, sans-serif", color = "#003366"),
showgrid = TRUE, # Mostrar la cuadrícula para facilitar la lectura
zeroline = TRUE, # Mostrar línea en el cero
showticklabels = TRUE # Etiquetas visibles en los ticks
),
hovermode = "x", # Modo de hover por cada barra
plot_bgcolor = 'rgba(245, 245, 245, 1)', # Fondo del gráfico blanco
paper_bgcolor = 'rgba(245, 245, 245, 1)', # Fondo de la página blanco
showlegend = FALSE, # Eliminar la leyenda ya que no es necesaria
annotations = list( # Agregar las etiquetas sobre las barras con los valores
list(
x = ~region,
y = ~ventas_total,
text = paste0(round(Adidas_clean$ventas_total / 1000000, 1), "M"), # Convertir a millones y agregar 'M'
showarrow = FALSE,
font = list(size = 12, color = 'black')
)
),
margin = list(t = 80) # Ajustar el margen superior para evitar que el título se corte
)
# Mostrar el gráfico
grafico_barras_adidas
Los productos de ropa masculina y calzado deportivo masculino son los más vendidos, generando más de 20 millones de dólares en ventas. Los productos de calzado femenino y ropa femenina tienen menores ventas, pero aún son significativos. Esto indica que Adidas debe continuar apostando por su línea masculina, mientras explora estrategias para aumentar la competitividad de los productos femeninos.
library(dplyr)
# Agrupar por producto y calcular los totales de ventas, utilidad y rentabilidad promedio
rentabilidad_por_producto <- Adidas_clean %>%
group_by(producto) %>%
summarise(
Ventas_Totales = sum(ventas_total, na.rm = TRUE),
Utilidad_Operativa = sum(utilidad_operativa, na.rm = TRUE),
Rentabilidad_Promedio = mean(Rentabilidad, na.rm = TRUE)
)
# Ver el resultado
print(rentabilidad_por_producto)
## # A tibble: 6 × 4
## producto Ventas_Totales Utilidad_Operativa Rentabilidad_Promedio
## <chr> <dbl> <dbl> <dbl>
## 1 Men's Apparel 16520632 6381405. 41.3
## 2 Men's Athletic Footwe… 20577180 7437457. 40.3
## 3 Men's Street Footwear 27680769 11629046. 44.6
## 4 Women's Apparel 23870985 9685221. 44.1
## 5 Women's Athletic Foot… 14315521 5597822. 42.4
## 6 Women's Street Footwe… 17201563 6494017. 41.0
# Crear gráfico de barras de rentabilidad promedio por producto con etiquetas de datos
ggplot(rentabilidad_por_producto, aes(x = reorder(producto, Rentabilidad_Promedio), y = Rentabilidad_Promedio, fill = producto)) +
geom_bar(stat = "identity") + # Barras de las rentabilidades
coord_flip() + # Girar el gráfico para que las etiquetas sean legibles
scale_fill_brewer(palette = "Set2") + # Colores agradables
labs(title = "Figura 6: Rentabilidad Promedio por Producto",
x = "Producto",
y = "Rentabilidad Promedio (%)") +
theme_minimal() +
theme(
plot.title = element_text(face = "bold", size = 14, hjust = 0.5),
axis.title = element_text(size = 12),
axis.text = element_text(size = 10),
legend.position = "none" # Eliminar la leyenda
) +
# Agregar etiquetas de datos sobre las barras
geom_text(aes(label = round(Rentabilidad_Promedio, 1)), hjust = -0.2, color = "black", size = 4)
La rentabilidad promedio es más alta en los productos masculinos (alrededor del 40%), mientras que los productos femeninos tienen una rentabilidad ligeramente inferior, rondando entre el 30% y 35%. Esto sugiere que Adidas mantiene una estrategia equilibrada en términos de rentabilidad, con una ligera ventaja en las líneas de productos masculinos.
library(readxl)
library(dplyr)
library(ggplot2)
library(plotly)
library(knitr)
library(kableExtra)
library(tidyr)
library(tidyverse)
library(dplyr)
library(plotly)
# Limpiar caracteres especiales en la columna 'metodo_venta'
Adidas_clean$metodo_venta <- gsub("[^[:print:]]", "", Adidas_clean$metodo_venta) # Eliminar caracteres no imprimibles
Adidas_clean$metodo_venta <- gsub("[\n\t\r]", " ", Adidas$metodo_venta) # Eliminar saltos de línea y tabulaciones
# Asegurarse de que la columna 'metodo_venta' esté en UTF-8
Adidas_clean$metodo_venta <- iconv(Adidas_clean$metodo_venta, from = "latin1", to = "UTF-8", sub = " ")
# Crear gráfico de torta para mostrar la distribución de ventas por método de venta
grafico_torta <- Adidas_clean %>%
group_by(metodo_venta) %>%
summarise(Ventas_Totales = sum(ventas_total)) %>%
plot_ly(labels = ~metodo_venta, values = ~Ventas_Totales, type = 'pie',
marker = list(colors = c('#003366', '#00BFFF', '#1E90FF', '#4682B4'))) %>%
layout(title = "Figura 7: Distribución de Ventas por Método de Venta")
# Mostrar el gráfico
grafico_torta
El 37.4% de las ventas provienen de ventas online, lo que refleja el cambio hacia el comercio digital. Las ventas en outlets representan el 32.9%, mientras que las tiendas físicas contribuyen con el 29.7%. Este análisis resalta la importancia de una estrategia multicanal para Adidas, donde los canales digitales deben recibir más inversión, pero sin dejar de optimizar los puntos de venta físicos.
# Crear el dataframe ventas_rent con los datos de Adidas
ventas_rent <- Adidas_clean %>%
group_by(region) %>%
summarise(
ventas_total = sum(ventas_total, na.rm = TRUE),
utilidad_total = sum(utilidad_operativa, na.rm = TRUE),
.groups = "drop"
)
# Crear la gráfica con las modificaciones solicitadas
ggplot(ventas_rent, aes(x = ventas_total,
y = utilidad_total,
color = region)) +
geom_point(size = 6) + # Aumentar el tamaño de las bolitas (puntos)
geom_smooth(method = "lm", se = FALSE, color = "gray", linetype = "dashed") + # Línea gris clara y punteada
scale_x_continuous(labels = scales::dollar_format()) + # Formato de dólares en el eje X
scale_y_continuous(labels = scales::dollar_format()) + # Formato de dólares en el eje Y
labs(title = "Figura 8: Relación entre Ventas y Utilidad") + # Título de la gráfica
theme_minimal() # Estilo minimalista
cor(Adidas_clean$ventas_total,
Adidas_clean$utilidad_operativa,
use = "complete.obs")
## [1] 0.9353717
La relación positiva entre ventas totales y utilidad operativa es evidente, con una correlación alta de 0.94. Esto indica que a medida que las ventas crecen, la utilidad operativa también aumenta proporcionalmente, lo que refuerza la eficiencia operativa de Adidas.
# Cargar librerías necesarias
library(dplyr)
library(ggplot2)
library(scales) # Agregar esta línea para usar la función 'percent()'
# Calcular participación por producto
ventas_producto <- Adidas_clean %>%
group_by(producto) %>%
summarise(ventas_totales = sum(ventas_total, na.rm = TRUE)) %>%
mutate(porcentaje = ventas_totales / sum(ventas_totales))
# Crear gráfico de torta con tamaño de texto ajustado
ggplot(ventas_producto, aes(x = "", y = porcentaje, fill = producto)) +
geom_col(width = 1, color = "white") +
coord_polar(theta = "y") +
geom_text(aes(label = percent(porcentaje)), # Ahora 'percent()' debería funcionar correctamente
position = position_stack(vjust = 0.5),
color = "white",
size = 3.5) + # Reducir el tamaño de la fuente
scale_fill_brewer(palette = "Set2") +
labs(title = "Figura 10: Participación de Ventas por Producto",
fill = "Producto") +
theme_void() +
theme(
plot.title = element_text(size = 14, face = "bold", hjust = 0.5) # Título centrado y en negrita
)
El gráfico de participación de ventas por producto muestra que calzado y ropa masculina tienen la mayor participación en las ventas totales, con un fuerte desempeño en productos como Men’s Street Footwear y Men’s Apparel. Los productos femeninos tienen una menor participación, lo que sugiere un área potencial de crecimiento en la línea de productos femeninos.
# Cargar librería "scales" para formatear los números
library(scales)
# Crear gráfico de barras para Utilidad Operativa por Producto sin notación científica
ggplot(Adidas_clean, aes(x = reorder(producto, utilidad_operativa), y = utilidad_operativa, fill = producto)) +
geom_bar(stat = "identity") +
coord_flip() + # Girar el gráfico para facilitar la lectura de los nombres de los productos
scale_fill_brewer(palette = "Set2") + # Colores más agradables
scale_y_continuous(labels = label_comma()) + # Formatear los números sin notación científica
labs(
title = " Figura 11: Utilidad Operativa por Producto",
x = "Producto",
y = "Utilidad Operativa (Miles de Dólares)"
) +
theme_minimal() +
theme(
plot.title = element_text(face = "bold", size = 14, hjust = 0.5),
axis.title = element_text(size = 12),
axis.text = element_text(size = 10),
legend.position = "none" # Eliminar la leyenda
)
El gráfico de utilidad operativa por producto indica que los productos de calzado masculino, especialmente Men’s Street Footwear, generan mayores márgenes de rentabilidad. Los productos de calzado deportivo femenino y ropa femenina tienen utilidades más bajas, lo que puede indicar la necesidad de ajustes en precios y costos para optimizar la rentabilidad en estas categorías.
# Cargar las librerías necesarias
library(dplyr)
library(ggplot2)
# Calcular el margen operativo promedio por distribuidor
margen_promedio <- Adidas_clean %>%
group_by(distribuidor) %>%
summarise(margen_operativo_promedio = mean(margen_operativo, na.rm = TRUE))
# Crear la gráfica de barras con etiquetas negras dentro de las barras para el margen operativo promedio por distribuidor
ggplot(margen_promedio, aes(x = reorder(distribuidor, margen_operativo_promedio), y = margen_operativo_promedio, fill = distribuidor)) +
geom_bar(stat = "identity", width = 0.6) + # Ancho de las barras ajustado
coord_flip() + # Girar las barras para mejor visibilidad
geom_text(aes(label = round(margen_operativo_promedio, 2)),
color = "black", size = 3, hjust = 0.5, vjust = 0.5) + # Etiquetas negras centradas dentro de las barras
theme_minimal() + # Estilo minimalista
labs(title = "Figura 12: Margen Operativo Promedio por Distribuidor", # Título
x = "Distribuidor", # Título del eje X
y = "Margen Operativo Promedio") # Título del eje Y
theme(
plot.margin = margin(1, 2, 1, 1, "cm"), # Ajuste del margen para evitar corte
axis.text = element_text(size = 8) # Reducir tamaño de los textos del eje
)
## <theme> List of 2
## $ axis.text : <ggplot2::element_text>
## ..@ family : NULL
## ..@ face : NULL
## ..@ italic : chr NA
## ..@ fontweight : num NA
## ..@ fontwidth : num NA
## ..@ colour : NULL
## ..@ size : num 8
## ..@ hjust : NULL
## ..@ vjust : NULL
## ..@ angle : NULL
## ..@ lineheight : NULL
## ..@ margin : NULL
## ..@ debug : NULL
## ..@ inherit.blank: logi FALSE
## $ plot.margin: <ggplot2::margin> num [1:4] 1 2 1 1
## @ complete: logi FALSE
## @ validate: logi TRUE
El gráfico muestra el margen operativo promedio por distribuidor. Foot Locker se destaca como uno de los distribuidores más rentables, lo que resalta la importancia de fortalecer las relaciones comerciales con este y otros distribuidores de alto rendimiento para maximizar las ganancias.
rent_comb <- Adidas_clean %>%
group_by(region, producto) %>%
summarise(
utilidad_total = sum(utilidad_operativa, na.rm = TRUE),
.groups = "drop"
) %>% filter(region %in% c("Midwest","West"))
ggplot(rent_comb, aes(x = producto,
y = utilidad_total,
fill = region)) +
geom_col(position = "dodge") +
scale_y_continuous(labels = scales::dollar_format()) +
labs(title = "Figura 13: Utilidad Operativa por Producto y Región",
x = "Producto",
y = "Utilidad") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
El gráfico presenta la utilidad operativa por producto y región. La región Oeste sigue siendo la de mayor rentabilidad en productos masculinos, mientras que en el Sur y Midwest, los márgenes son más bajos, especialmente en productos femeninos. Esto resalta la necesidad de adaptar estrategias de precios y optimizar la distribución según la región para maximizar la rentabilidad.
El análisis del desempeño comercial y la rentabilidad de Adidas muestra que la región Oeste es la más destacada tanto en ventas como en utilidad operativa, mientras que las regiones Sur y Midwest tienen un rendimiento más bajo. Esto sugiere que Adidas debe enfocarse en mejorar su desempeño en estas regiones menos productivas. En términos de productos, los productos masculinos, especialmente Men’s Street Footwear y Men’s Apparel, lideran las ventas y la rentabilidad, mientras que los productos femeninos presentan un rendimiento más bajo, lo que indica que es necesario optimizar estos segmentos. Además, las ventas online se han consolidado como el canal más lucrativo, destacando la necesidad de continuar invirtiendo en plataformas digitales, aunque las tiendas físicas y outlets siguen jugando un papel importante en la estrategia de ventas multicanal. Finalmente, Adidas demuestra una estrategia eficiente de rentabilidad en productos masculinos, pero aún hay espacio para mejorar los márgenes operativos de los productos femeninos.
Se recomienda fortalecer las regiones Sur y Midwest mediante campañas de marketing dirigidas y la expansión de canales de distribución para mejorar el rendimiento comercial y aumentar la rentabilidad. Además, es crucial optimizar los márgenes operativos de los productos femeninos, especialmente en calzado y ropa femenina, ajustando precios y estrategias de marketing. Dado el auge de las ventas digitales, Adidas debe invertir más en el canal online, mientras mantiene un equilibrio con los puntos de venta físicos y outlets para garantizar una estrategia de ventas multicanal efectiva. Finalmente, continuar enfocándose en los productos masculinos de alto rendimiento, como Men’s Street Footwear, ayudará a consolidar la posición de Adidas en el mercado global.